В середине 50-х годов были найдены очень дешёвые способы производства транзисторов, и во второй половине 50-х годов появились компьютеры, основанные на транзисторах. Они были в сотни раз меньше ламповых компьютеров такой же производительности. Единственная часть компьютера, где транзисторы не могли заменить электронные лампы, – это блоки памяти, то там вместо ламп стали использовать изобретённые к тому времени схемы памяти на магнитных сердечниках. [9, с. 23].
Одновременно с процессом замены электронных ламп транзисторами совершенствовались методы хранения информации. Увеличился объём памяти, а магнитную ленту, впервые примененную в ЭВМ UNIVAC, начали использовать как для ввода, так и для вывода информации.
Машины теперь называемые майнфреймами, располагались в специальных комнатах с кондиционированным воздухом, где ими управлял целый штат профессиональных операторов. Впервые сложилось чёткое разделение между проектировщиками, сборщиками, операторами, программистами и обслуживающим персоналом. Чтобы выполнить задание (то есть программу или комплект программ), программист сначала должен был записать его на бумаге (на Фортране или ассемблере), а затем перенести на перфокарты. После этого – принести колоду перфокарт в комнату ввода данных, передать одному из операторов и ждать, когда будет готов результат.
Когда компьютер заканчивал выполнение какого-либо из текущих заданий, оператор подходил к принтеру, открывал лист с полученными данными и относил его в комнату для распечаток, где программист позже мог его забрать. Затем оператор брал одну из колод перфокарт, принесённых из комнаты ввода данных, и считывал их. Если в процессе расчётов был необходим компилятор языка Фортран, то оператору приходилось брать его из картотечного шкафа и загружать в машину отдельно. [10, c.28]
Если учитывать высокую стоимость оборудования, не удивительно, что люди довольно скоро занялись поиском способа повышения эффективности использования машинного времени. Общепринятым решением стала система пакетной обработки. Первоначальный замысел состоял в том, чтобы собрать полный поднос заданий (колод перфокарт) в комнате входных данных и затем переписать их на магнитную ленту, используя небольшой и (относительно) недорогой компьютер, например, IBM 1401, который был очень хорош для считывания карт, копирования лент и печати выходных данных, но не подходил для числовых вычислений. [10, c.29]
Другие, более дорогостоящие машины, такие как IBM 7094, использовались для настоящих вычислений (Рис. 5).
Рис. 5. Ранняя система пакетной обработки: программист приносит карты для IBM 1401 (а);
IBM 1401 записывает пакет заданий на магнитную ленту (б); оператор приносит входные данные на ленте к IBM 7094 (в); IBM 7094 выполняет вычисления (г); оператор переносит ленту с выходными данными на IBM 1401 (д); IBM 1401 печатает выходные данные (е)
Примерно после часа сбора пакета заданий лента перематывалась, и её относили в машинную комнату, где устанавливали на лентопротяжном устройстве. Затем оператор загружал специальную программу (прообраз сегодняшней операционной системы), которая считывала первое задание с ленты и запускала его. Выходные данные записывались на вторую ленту вместо того, чтобы идти на печать. Завершив очередное задание, операционная система автоматически считывала с ленты следующие, и начинала обрабатывать его. После обработки всего пакета оператор снимал ленты с входной и выходной информацией, ставил новую ленту со следующим заданием, а готовые данные помещал на IBM 1401 для печати в автономном режиме (то есть без связи с главным компьютером).
Рис. 6. Структура типичного задания FMS
Структура типичного входного задания показана на рис. 6. Оно начиналось с карты $JOB, на которой указывалось максимальное время выполнения задания в минутах, загружаемый учётный номер и имя программиста. Затем поступала карта $FORTRAN, дающая операционной системе указание загрузить компилятор языка Фортран с системной магнитной ленты. Эта карта следовала за программой, которую нужно было компилировать, а после неё шла карта $LOAD, указывающая операционной системе загрузить только что скомпилированную объектную программу. Скомпилированные программы часто записывались на временных лентах, данные с которых могли стираться сразу после использования, и их загрузка должна была выполняться явно. Следом шла карта $RUN с данными, дающая операционной системе команду выполнить программу. Наконец карта завершения $END отмечала конец задания. Эти примитивные управляющие перфокарты были предшественниками современных языков управления и интерпретаторов команд. [10, c.30]
Большие компьютеры второго поколения использовались главным образом для научных и технических вычислений, таких как решение дифференциальных уравнений в частных производных, часто встречающихся в физике и инженерных задачах. В основном на них программировали на языке Фортран и ассемблере, а типичными операционными системами были FMS (Fortran Monitor System) и IBSYS (операционная система, созданная компанией IBM для компьютера IBM 7094).
1.3. Третье поколение (1965-1980):
интегральные схемы и многозадачность
Подобно тому, как появление транзисторов привело к созданию второго поколения компьютеров, появление интегральных схем ознаменовало собой новый этап в развитии вычислительной технике – рождение машин третьего поколения.
До появления интегральных схем транзисторы изготавливались по отдельности, и при сборке схем их приходилось соединять и спаивать вручную. В 1958 году Джек Килби придумал, как на одной пластине полупроводника без проводов получить несколько транзисторов (в первой интегральной схеме их было всего шесть). В 1959 году Роберт Нойс (будущий основатель фирмы Intel) изобрёл более совершенный метод, позволивший создать на одной пластине и транзисторы, и все необходимые соединения между ними. Полученные электронные схемы стали называться интегральными схемами, или чипами [9, с.24]. Интегральная схема, которую также называли кристаллом, представляла собой миниатюрную электронную схему, вытравленную на поверхности кремниевого кристалла площадью около 10 мм2. В дальнейшем количество транзисторов, которых удавалось разместить на единицу площади интегральной схемы, увеличивалось приблизительно вдвое каждый год. В 1968 году фирма Burroughs выпустила первый компьютер на интегральных схемах, а в 1970 году фирма Intel начала продавать интегральные схемы памяти емкостью 1 Кбит.
В том же году был сделан ещё один важный шаг на пути к персональному компьютеру – Маршиан Эдвард Хофф из той же фирмы Intel сконструировал интегральную схему, аналогичную по своим функциям центральному процессору большой ЭВМ. Так появился первый микропроцессор Intel-4004, который был выпущен в продажу в конце 1970 году. Возможности Intel-4004 были куда скромнее, чем у центрального процессора большой ЭВМ, – он работал гораздо медленнее и мог обрабатывать одновременно только 4 бита информации (процессоры больших ЭВМ обрабатывали 16 или 32 бита одновременно). Но, в 1973 году фирма Intel выпустила 8-битовый микропроцессор Intel-8008, а в 1974 году – его усовершенствованную версию Intel-8080, которая до конца 70-х годов стала стандартом для микрокомпьютерной индустрии [9, с. 24].
К началу 60-х годов большинство изготовителей компьютеров имело две отдельные, полностью несовместимые производственные линии. С одной стороны существовали научные крупномасштабные компьютеры с пословной обработкой текста типа IBM 7094, использовавшихся для числовых вычислений в науке и технике. С другой стороны – коммерческие компьютеры с посимвольной обработкой, такие как IBM 1401, широко используемые банками и страховыми компаниями для сортировки и печати данных.
Развитие и поддержка двух совершенно разных производственных линии для изготовителей было нереентабельно. Кроме того, многим покупателям изначально требовалась небольшая машина, однако позже её возможностей становилось недостаточно и требовался более мощный компьютер, который работал бы с теми же самыми программами, но быстрее.
Фирма IBM попыталась решить эти проблемы разом, выпустив серию машин IBM/308. 360-е были серией программно-совместимых машин, варьирующихся от компьютеров размером с IBM 1401 до машин, значительно более мощных, чем IBM 7094. Эти компьютеры различались только ценой и производительностью. Так как все машины имели одинаковую структуру и набор команд, программы, написанные для оного компьютера, могли работать на всех других (по крайней мере, в теории). Кроме того, 360-е были разработаны для поддержки как научных (то есть численных), так и коммерческих вычислений. Одно семейство машин могло удовлетворить нужды всех покупателей. В последующие годы, используя более современные технологии, корпорация IBM выпустила компьютеры, совместимые с 360, эти серии известны под номерами 370, 4300, 3080 и 3090. [10, c.31]
Корпорация IBM добилась мгновенного успеха, а идею семейства совместимых компьютеров скоро приняли и все остальные основные производители. 360-е стали первой основной линией компьютеров, на которой использовались мелкомасштабные интегральные схемы, дававшие преимущество в цене и качестве по сравнению с машинами второго поколения, созданными из отдельных транзисторов. В настоящее время они часто используются для управления огромными базами данных (например, для систем бронирования и продажи билетов на авиалиниях) или как серверы узлов Интернета, которые должны обрабатывать тысячи запросов в секунду.