Файл: Учебнометодическое пособие Томск 2016 2 удк 004. 451(075. 8) Ббк 32. 973. 2018. 2я73 к 754 Рецензенты.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 301
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1.2 Первое поколение (1945–1955): электронные лампы
После безуспешных усилий Бэббиджа прогресс в конструировании циф- ровых компьютеров практически не наблюдался вплоть до Второй мировой войны, которая стимулировала взрывную активизацию работ над ними. Про- фессор Джон Атанасов (John Atanasoff) и его аспирант Клиффорд Берри
(Clifford Berry) создали в Университете штата Айова конструкцию, которая
10 сейчас считается первым действующим цифровым компьютером. В ней исполь- зовалось 300 электронных ламп. Примерно в то же время Конрад Цузе (Konrad
Zuse) в Берлине построил Z3, компьютер, основанный на использовании меха- нических реле. В 1944 г. группой в Блетшли Парк, Великобритания, был по- строен «Колоссус», в Гарварде Говардом Айкеном (Howard Aiken) был постро- ен «Марк I», а в Университете штата Пенсильвания Вильям Мочли (William
Mauchley) и его аспирант Джон Преспер Эккерт (J. Presper Eckert) построили
ЭНИАК. Некоторые из этих машин были цифровыми, в некоторых использова- лись электронные лампы, а работу некоторых из них можно было программи- ровать, но все они были весьма примитивно устроены и тратили многие секун- ды на производство даже простейших вычислений.
На заре компьютерной эры каждую машину проектировала, создавала, программировала, эксплуатировала и обслуживала одна и та же группа людей
(как правило, инженеров). Все программирование велось исключительно на машинном языке или, и того хуже, за счет сборки электрических схем, а для управления основными функциями машины приходилось подключать к комму- тационным панелям тысячи проводов. О языках программирования (даже об ассемблере) тогда еще ничего не было известно. Об операционных системах вообще никто ничего не слышал. Режим работы программиста заключался в том, чтобы записаться на определенное машинное время на специальном стенде, затем спуститься в машинный зал, вставить свою коммутационную па- нель в компьютер и провести следующие несколько часов в надежде, что в процессе работы не выйдет из строя ни одна из примерно 20 тысяч электрон- ных ламп. В сущности, все решаемые задачи сводились к простым числовым расчетам, таким как уточнение таблиц синусов, косинусов и логарифмов.
Когда в начале 1950-х гг. появились перфокарты, положение несколько улучшилось. Появилась возможность вместо использования коммутационных панелей записывать программы на картах и считывать с них, но во всем осталь- ном процедура работы не претерпела изменений.
1.3 Второе поколение (1955–1965):
транзисторы и системы пакетной обработки
В середине 1950-х гг. изобретение и применение транзисторов радикаль- но изменило всю картину. Компьютеры стали достаточно надежными, появи- лась высокая вероятность того, что машины будут работать довольно долго, выполняя при этом полезные функции. Впервые сложилось четкое разделение
11 между проектировщиками, сборщиками, операторами, программистами и об- служивающим персоналом.
Машины, называемые теперь мэйнфреймами, располагались в специаль- ных комнатах с кондиционированием воздуха, где ими управлял целый штат профессиональных операторов. Только большие корпорации, правительствен- ные учреждения или университеты могли позволить себе технику, цена которой исчислялась миллионами долларов. Чтобы выполнить задание(то есть про- грамму или комплект программ), программист сначала должен был записать его на бумаге (на Фортране или ассемблере), а затем перенести на перфокарты.
После этого он должен был принести колоду перфокарт в комнату ввода дан- ных, передать одному из операторов и идти пить кофе в ожидании, когда будет готов результат. Когда компьютер заканчивал выполнение какого-либо из те- кущих заданий, оператор подходил к принтеру, отрывал лист с полученными данными и относил его в комнату для распечаток, где программист позже мог его забрать. Затем оператор брал одну из колод перфокарт, принесенных из комнаты ввода данных, и запускал ее на считывание. Если в процессе расче- тов был необходим компилятор языка Фортран, то оператору приходилось брать его из картотечного шкафа и загружать в машину отдельно. На одно только хождение операторов по машинному залу терялась впустую масса дра- гоценного компьютерного времени.
Если учесть высокую стоимость оборудования, неудивительно, что люди довольно скоро занялись поиском способа повышения эффективности исполь- зования машинного времени. Общепринятым решением стала система пакет-
ной обработки. Первоначально замысел состоял в том, чтобы собрать полный поднос заданий (колод перфокарт) в комнате входных данных и затем перепи- сать их на магнитную ленту, используя небольшой и (относительно) недорогой компьютер, например IBM 1401, который был очень хорош для считывания карт, копирования лент и печати выходных данных, но не подходил для число- вых вычислений.
Другие, более дорогостоящие машины, такие как IBM 7094, использова- лись для настоящих вычислений. Этот процесс изображен на рисунке 1.1.
12
Рис. 1.1 – Ранняя система пакетной обработки: программист приносит карты для IBM 1401 (а); IBM 1401 записывает пакет заданий на магнитную лен- ту (б); оператор переносит входные данные на ленте к IBM 7094 (в); IBM
7094 выполняет вычисления (г); оператор переносит ленту с выходными данными на IBM 1401 (д); IBM 1401 печатает выходные данные (е)
Примерно после часа сбора пакета карты считывались на магнитную лен- ту, которую относили в машинный зал, где устанавливали на лентопротяжном устройстве. Затем оператор загружал специальную программу (прообраз сего- дняшней операционной системы), которая считывала первое задание с ленты и запускала его. Выходные данные, вместо того чтобы идти на печать, записы- вались на вторую ленту. Завершив очередное задание, операционная система автоматически считывала с ленты следующее и начинала его обработку. После обработки всего пакета оператор снимал ленты с входной и выходной инфор- мацией, ставил новую ленту со следующим заданием, а готовые данные поме- щал на IBM 1401 для печати в автономном режиме (то есть без связи с главным компьютером).
Структура типичного входного задания показана на рисунке 1.2. Оно начиналось с карты $JOB, на которой указывалось максимальное время выпол- нения задания в минутах, загружаемый учетный номер и имя программиста. За- тем поступала карта $FORTRAN, дающая операционной системе указание за- грузить компилятор языка Фортран с системной магнитной ленты. За этой картой следовала программа, которую нужно было компилировать, а после нее шла карта $LOAD, указывающая операционной системе загрузить только что скомпилированную объектную программу. (Скомпилированные программы ча- сто записывались на рабочих лентах, данные с которых могли стираться сразу после использования, и их загрузка должна была выполняться в явном виде.)
13
Следом шла карта $RUN, дающая операционной системе команду на выполне- ние программы с использованием данных, следующих за ней. Наконец, карта завершения $SEND отмечала конец задания. Эти примитивные управляющие перфокарты были предшественниками современных оболочек и интерпретато- ров командной строки.
Рис. 1.2 – Структура типичного задания для операционной системы FMS
Большие компьютеры второго поколения использовались главным обра- зом для научных и технических вычислений, таких как решение дифференци- альных уравнений в частных производных, часто встречающихся в физике и инженерных задачах. В основном программы для них составлялись на языке
Фортран и ассемблере, а типичными операционными системами были FMS
(Fortran Monitor System) и IBSYS (операционная система, созданная корпораци- ей IBM для компьютера IBM 7094).
1.4 Третье поколение (1965–1980):
интегральные схемы и многозадачность
К началу 1960-х гг. были созданы два различных, несовместимых друг с другом семейства компьютеров. С одной стороны, это были огромные научные компьютеры с пословной обработкой данных типа IBM 7094, которые исполь- зовались для числовых расчетов в науке и технике, с другой – коммерческие
14 компьютеры с посимвольной обработкой данных, такие как IBM 1401, широко используемые банками и страховыми компаниями для задач сортировки и рас- печатки данных.
Развитие и поддержка двух совершенно разных семейств была для произ- водителей весьма расточительным делом. Кроме того, многим новым покупате- лям компьютеров сначала нужна была небольшая машина, однако позже ее возможностей становилось недостаточно и требовался более мощный компью- тер, который работал бы с теми же самыми программами, но значительно быст- рее.
Фирма IBM попыталась решить эти проблемы разом, выпустив серию машин IBM System/360. Это была серия программно-совместимых машин, в которой компьютеры варьировались от машин, сопоставимых с IBM 1401, до машин, значительно более мощных, чем IBM 7094. Эти компьютеры разли- чались только ценой и производительностью (максимальным объемом памяти, быстродействием процессора, количеством возможных устройств ввода-вывода и т. д.). Так как все машины имели одинаковую структуру и набор команд, про- граммы, написанные для одного компьютера, могли работать на всех других
(по крайней мере, в теории). Кроме того, 360-я серия была разработана для поддержки как научных (то есть численных), так и коммерческих вычислений.
Одно семейство машин могло удовлетворить нужды всех потребителей. В по- следующие годы, используя более современные технологии, корпорация IBM выпустила компьютеры, совместимые с 360-й серией машин, эти серии извест- ны под номерами 370, 4300, 3080 и 3090. Самыми последними потомками этого семейства стали машины zSeries, хотя они уже значительно отличаются от ори- гинала.
Семейство компьютеров IBM/360 стало первой основной серией, исполь- зующей малые интегральные схемы, дававшие преимущество в цене и качестве по сравнению с машинами второго поколения, собранными на отдельных тран- зисторах. Корпорация IBM добилась моментального успеха, а идею семейства совместимых компьютеров скоро приняли на вооружение и все остальные ос- новные производители. В компьютерных центрах до сих пор можно встретить потомков этих машин. В настоящее время они часто используются для управ- ления огромными базами данных (например, для систем бронирования и про- дажи билетов на авиалиниях) или в качестве серверов узлов Интернета, кото- рые должны обрабатывать тысячи запросов в секунду.
15
Основное преимущество «единого семейства» оказалось одновременно и величайшей его слабостью. По замыслу его создателей, все программное обеспечение, включая операционную систему OS/360, должно было одинаково хорошо работать на всех моделях компьютеров: и в небольших системах, кото- рые часто заменяли машины IBM 1401 и применялись для копирования перфо- карт на магнитные ленты, и на огромных системах, заменявших машины
IBM 7094 и использовавшихся для расчета прогноза погоды и других сложных вычислений. Операционная система должна была хорошо работать как на ма- шинах с небольшим количеством внешних устройств, так и на системах, при- меняющих эти устройства в большом количестве. Она должна была работать как в коммерческих, так и в научных областях. Более того, она должна была ра- ботать эффективно во всех этих различных сферах применения.
Но ни IBM, ни кому-либо еще так и не удалось создать программное обеспечение, удовлетворяющее всем этим противоречивым требованиям. В ре- зультате появилась громоздкая и чрезвычайно сложная операционная система, примерно на два или три порядка превышающая по объему FMS. Она состояла из миллионов строк, написанных на ассемблере тысячами программистов, со- держала тысячи и тысячи ошибок, что повлекло за собой непрерывный поток новых версий, в которых предпринимались попытки исправления этих ошибок.
В каждой новой версии устранялась только часть ошибок, вместо них появля- лись новые, так что общее их количество, скорее всего, оставалось постоянным.
Один из разработчиков OS/360, Фред Брукс (Fred Brooks), впоследствии написал остроумную и язвительную книгу с описанием своего опыта работы с
OS/360. Мы не можем здесь дать полную оценку этой книги, но достаточно бу- дет сказать, что на ее обложке изображено стадо доисторических животных, увязших в яме с битумом.
Несмотря на свой огромный объем и имеющиеся недостатки, OS/360 и подобные ей операционные системы третьего поколения, созданные другими производителями компьютеров, достаточно неплохо отвечали запросам боль- шинства клиентов. Они даже сделали популярными несколько ключевых техни- ческих приемов, отсутствовавших в операционных системах второго поколе- ния. Самым важным достижением явилась многозадачность. На компьютере
IBM 7094, когда текущая работа приостанавливалась в ожидании операций ввода-вывода с магнитной ленты или других устройств, центральный процес- сор просто бездействовал до окончания операции ввода-вывода. При сложных научных вычислениях устройства ввода-вывода задействовались менее интен-
16 сивно, поэтому время, впустую потраченное на ожидание, было не столь суще- ственным. Но при коммерческой обработке данных время ожидания устройства ввода-вывода могло занимать 80 или 90% всего рабочего времени, поэтому для устранения длительных простоев весьма дорогостоящего процессора нужно было что-то предпринимать.
Решение этой проблемы заключалось в разбиении памяти на несколько частей, называемых разделами, в каждом из которых выполнялось отдельное задание, как показано на рисунке 1.3. Пока одно задание ожидало завершения работы устройства ввода-вывода, другое могло использовать центральный про- цессор. Если в оперативной памяти содержалось достаточное количество зада- ний, центральный процессор мог быть загружен почти на все 100% времени.
Множество одновременно хранящихся в памяти заданий требовало наличия специального оборудования для защиты каждого задания от возможного неза- конного присваивания областей памяти и нанесения вреда со стороны других заданий. Компьютеры 360-й серии и другие системы третьего поколения были оборудованы для этих целей специальными аппаратными средствами.
Рис. 1.3 – Многозадачная система с тремя заданиями в памяти
Другим важным плюсом операционных систем третьего поколения стала способность считывать задание с перфокарт на диск по мере того, как их при- носили в машинный зал. При окончании выполнения каждого текущего задания операционная система могла загружать новое задание с диска в освободивший- ся раздел памяти и запускать это задание. Этот технический прием называется
«подкачкой» данных, или спулингом (spooling – это английское слово, которое произошло от аббревиатуры Simultaneous Peripheral Operation On Line, то есть совместная периферийная операция в интерактивном режиме), и его также ис- пользуют для выдачи полученных данных. С появлением подкачки отпала
17 надобность как в 1401-х машинах, так и в многочисленных переносах магнит- ных лент.
Хотя операционные системы третьего поколения неплохо справлялись с большинством научных вычислений и крупных коммерческих задач по обра- ботке данных, но по своей сути они были все еще разновидностью систем па- кетной обработки. Многие программисты тосковали по первому поколению машин, когда они могли распоряжаться всей машиной в течение нескольких ча- сов и имели возможность быстро производить отладку своих программ.
При системах третьего поколения промежуток времени между передачей зада- ния и возвращением результатов часто составлял несколько часов, так что единственная поставленная не в том месте запятая могла стать причиной сбоя при компиляции, и получалось, что программист тратил половину дня впустую.
Желание сократить время ожидания ответа привело к разработке режима
разделения времени– варианту многозадачности, при котором у каждого поль- зователя есть свой диалоговый терминал. Если двадцать пользователей зареги- стрированы в системе, работающей в режиме разделения времени, и семна- дцать из них думают, беседуют или пьют кофе, то центральный процессор по очереди предоставляется трем пользователям, желающим работать на машине.
Так как люди, отлаживая программы, обычно выдают короткие команды
(например, компилировать процедуру на пяти страницах) чаще, чем длинные
(например, упорядочить файл с миллионами записей), то компьютер может обеспечивать быстрое интерактивное обслуживание нескольких пользователей.
При этом он может работать над большими пакетами в фоновом режиме, когда центральный процессор не занят другими заданиями. Первая универсальная си- стема с режимом разделения времени CTSS (Compatible Time Sharing System) была разработана в Массачусетском технологическом институте (M.I.T.) на специально переделанном компьютере IBM 7094. Однако режим разделения времени не стал действительно популярным до тех пор, пока на машинах тре- тьего поколения не получили широкого распространения необходимые техни- ческие средства защиты.
После успеха системы CTSS Массачусетский технологический институт, исследовательские лаборатории Bell Labs и корпорация General Electric (глав- ный на то время изготовитель компьютеров) решили начать разработку универ- сальной общей компьютерной системы – машины, которая должна была под- держивать одновременную работу сотен пользователей в режиме разделения времени. За основу была взята система распределения электроэнергии. Когда
После безуспешных усилий Бэббиджа прогресс в конструировании циф- ровых компьютеров практически не наблюдался вплоть до Второй мировой войны, которая стимулировала взрывную активизацию работ над ними. Про- фессор Джон Атанасов (John Atanasoff) и его аспирант Клиффорд Берри
(Clifford Berry) создали в Университете штата Айова конструкцию, которая
10 сейчас считается первым действующим цифровым компьютером. В ней исполь- зовалось 300 электронных ламп. Примерно в то же время Конрад Цузе (Konrad
Zuse) в Берлине построил Z3, компьютер, основанный на использовании меха- нических реле. В 1944 г. группой в Блетшли Парк, Великобритания, был по- строен «Колоссус», в Гарварде Говардом Айкеном (Howard Aiken) был постро- ен «Марк I», а в Университете штата Пенсильвания Вильям Мочли (William
Mauchley) и его аспирант Джон Преспер Эккерт (J. Presper Eckert) построили
ЭНИАК. Некоторые из этих машин были цифровыми, в некоторых использова- лись электронные лампы, а работу некоторых из них можно было программи- ровать, но все они были весьма примитивно устроены и тратили многие секун- ды на производство даже простейших вычислений.
На заре компьютерной эры каждую машину проектировала, создавала, программировала, эксплуатировала и обслуживала одна и та же группа людей
(как правило, инженеров). Все программирование велось исключительно на машинном языке или, и того хуже, за счет сборки электрических схем, а для управления основными функциями машины приходилось подключать к комму- тационным панелям тысячи проводов. О языках программирования (даже об ассемблере) тогда еще ничего не было известно. Об операционных системах вообще никто ничего не слышал. Режим работы программиста заключался в том, чтобы записаться на определенное машинное время на специальном стенде, затем спуститься в машинный зал, вставить свою коммутационную па- нель в компьютер и провести следующие несколько часов в надежде, что в процессе работы не выйдет из строя ни одна из примерно 20 тысяч электрон- ных ламп. В сущности, все решаемые задачи сводились к простым числовым расчетам, таким как уточнение таблиц синусов, косинусов и логарифмов.
Когда в начале 1950-х гг. появились перфокарты, положение несколько улучшилось. Появилась возможность вместо использования коммутационных панелей записывать программы на картах и считывать с них, но во всем осталь- ном процедура работы не претерпела изменений.
1.3 Второе поколение (1955–1965):
транзисторы и системы пакетной обработки
В середине 1950-х гг. изобретение и применение транзисторов радикаль- но изменило всю картину. Компьютеры стали достаточно надежными, появи- лась высокая вероятность того, что машины будут работать довольно долго, выполняя при этом полезные функции. Впервые сложилось четкое разделение
11 между проектировщиками, сборщиками, операторами, программистами и об- служивающим персоналом.
Машины, называемые теперь мэйнфреймами, располагались в специаль- ных комнатах с кондиционированием воздуха, где ими управлял целый штат профессиональных операторов. Только большие корпорации, правительствен- ные учреждения или университеты могли позволить себе технику, цена которой исчислялась миллионами долларов. Чтобы выполнить задание(то есть про- грамму или комплект программ), программист сначала должен был записать его на бумаге (на Фортране или ассемблере), а затем перенести на перфокарты.
После этого он должен был принести колоду перфокарт в комнату ввода дан- ных, передать одному из операторов и идти пить кофе в ожидании, когда будет готов результат. Когда компьютер заканчивал выполнение какого-либо из те- кущих заданий, оператор подходил к принтеру, отрывал лист с полученными данными и относил его в комнату для распечаток, где программист позже мог его забрать. Затем оператор брал одну из колод перфокарт, принесенных из комнаты ввода данных, и запускал ее на считывание. Если в процессе расче- тов был необходим компилятор языка Фортран, то оператору приходилось брать его из картотечного шкафа и загружать в машину отдельно. На одно только хождение операторов по машинному залу терялась впустую масса дра- гоценного компьютерного времени.
Если учесть высокую стоимость оборудования, неудивительно, что люди довольно скоро занялись поиском способа повышения эффективности исполь- зования машинного времени. Общепринятым решением стала система пакет-
ной обработки. Первоначально замысел состоял в том, чтобы собрать полный поднос заданий (колод перфокарт) в комнате входных данных и затем перепи- сать их на магнитную ленту, используя небольшой и (относительно) недорогой компьютер, например IBM 1401, который был очень хорош для считывания карт, копирования лент и печати выходных данных, но не подходил для число- вых вычислений.
Другие, более дорогостоящие машины, такие как IBM 7094, использова- лись для настоящих вычислений. Этот процесс изображен на рисунке 1.1.
12
Рис. 1.1 – Ранняя система пакетной обработки: программист приносит карты для IBM 1401 (а); IBM 1401 записывает пакет заданий на магнитную лен- ту (б); оператор переносит входные данные на ленте к IBM 7094 (в); IBM
7094 выполняет вычисления (г); оператор переносит ленту с выходными данными на IBM 1401 (д); IBM 1401 печатает выходные данные (е)
Примерно после часа сбора пакета карты считывались на магнитную лен- ту, которую относили в машинный зал, где устанавливали на лентопротяжном устройстве. Затем оператор загружал специальную программу (прообраз сего- дняшней операционной системы), которая считывала первое задание с ленты и запускала его. Выходные данные, вместо того чтобы идти на печать, записы- вались на вторую ленту. Завершив очередное задание, операционная система автоматически считывала с ленты следующее и начинала его обработку. После обработки всего пакета оператор снимал ленты с входной и выходной инфор- мацией, ставил новую ленту со следующим заданием, а готовые данные поме- щал на IBM 1401 для печати в автономном режиме (то есть без связи с главным компьютером).
Структура типичного входного задания показана на рисунке 1.2. Оно начиналось с карты $JOB, на которой указывалось максимальное время выпол- нения задания в минутах, загружаемый учетный номер и имя программиста. За- тем поступала карта $FORTRAN, дающая операционной системе указание за- грузить компилятор языка Фортран с системной магнитной ленты. За этой картой следовала программа, которую нужно было компилировать, а после нее шла карта $LOAD, указывающая операционной системе загрузить только что скомпилированную объектную программу. (Скомпилированные программы ча- сто записывались на рабочих лентах, данные с которых могли стираться сразу после использования, и их загрузка должна была выполняться в явном виде.)
13
Следом шла карта $RUN, дающая операционной системе команду на выполне- ние программы с использованием данных, следующих за ней. Наконец, карта завершения $SEND отмечала конец задания. Эти примитивные управляющие перфокарты были предшественниками современных оболочек и интерпретато- ров командной строки.
Рис. 1.2 – Структура типичного задания для операционной системы FMS
Большие компьютеры второго поколения использовались главным обра- зом для научных и технических вычислений, таких как решение дифференци- альных уравнений в частных производных, часто встречающихся в физике и инженерных задачах. В основном программы для них составлялись на языке
Фортран и ассемблере, а типичными операционными системами были FMS
(Fortran Monitor System) и IBSYS (операционная система, созданная корпораци- ей IBM для компьютера IBM 7094).
1.4 Третье поколение (1965–1980):
интегральные схемы и многозадачность
К началу 1960-х гг. были созданы два различных, несовместимых друг с другом семейства компьютеров. С одной стороны, это были огромные научные компьютеры с пословной обработкой данных типа IBM 7094, которые исполь- зовались для числовых расчетов в науке и технике, с другой – коммерческие
14 компьютеры с посимвольной обработкой данных, такие как IBM 1401, широко используемые банками и страховыми компаниями для задач сортировки и рас- печатки данных.
Развитие и поддержка двух совершенно разных семейств была для произ- водителей весьма расточительным делом. Кроме того, многим новым покупате- лям компьютеров сначала нужна была небольшая машина, однако позже ее возможностей становилось недостаточно и требовался более мощный компью- тер, который работал бы с теми же самыми программами, но значительно быст- рее.
Фирма IBM попыталась решить эти проблемы разом, выпустив серию машин IBM System/360. Это была серия программно-совместимых машин, в которой компьютеры варьировались от машин, сопоставимых с IBM 1401, до машин, значительно более мощных, чем IBM 7094. Эти компьютеры разли- чались только ценой и производительностью (максимальным объемом памяти, быстродействием процессора, количеством возможных устройств ввода-вывода и т. д.). Так как все машины имели одинаковую структуру и набор команд, про- граммы, написанные для одного компьютера, могли работать на всех других
(по крайней мере, в теории). Кроме того, 360-я серия была разработана для поддержки как научных (то есть численных), так и коммерческих вычислений.
Одно семейство машин могло удовлетворить нужды всех потребителей. В по- следующие годы, используя более современные технологии, корпорация IBM выпустила компьютеры, совместимые с 360-й серией машин, эти серии извест- ны под номерами 370, 4300, 3080 и 3090. Самыми последними потомками этого семейства стали машины zSeries, хотя они уже значительно отличаются от ори- гинала.
Семейство компьютеров IBM/360 стало первой основной серией, исполь- зующей малые интегральные схемы, дававшие преимущество в цене и качестве по сравнению с машинами второго поколения, собранными на отдельных тран- зисторах. Корпорация IBM добилась моментального успеха, а идею семейства совместимых компьютеров скоро приняли на вооружение и все остальные ос- новные производители. В компьютерных центрах до сих пор можно встретить потомков этих машин. В настоящее время они часто используются для управ- ления огромными базами данных (например, для систем бронирования и про- дажи билетов на авиалиниях) или в качестве серверов узлов Интернета, кото- рые должны обрабатывать тысячи запросов в секунду.
15
Основное преимущество «единого семейства» оказалось одновременно и величайшей его слабостью. По замыслу его создателей, все программное обеспечение, включая операционную систему OS/360, должно было одинаково хорошо работать на всех моделях компьютеров: и в небольших системах, кото- рые часто заменяли машины IBM 1401 и применялись для копирования перфо- карт на магнитные ленты, и на огромных системах, заменявших машины
IBM 7094 и использовавшихся для расчета прогноза погоды и других сложных вычислений. Операционная система должна была хорошо работать как на ма- шинах с небольшим количеством внешних устройств, так и на системах, при- меняющих эти устройства в большом количестве. Она должна была работать как в коммерческих, так и в научных областях. Более того, она должна была ра- ботать эффективно во всех этих различных сферах применения.
Но ни IBM, ни кому-либо еще так и не удалось создать программное обеспечение, удовлетворяющее всем этим противоречивым требованиям. В ре- зультате появилась громоздкая и чрезвычайно сложная операционная система, примерно на два или три порядка превышающая по объему FMS. Она состояла из миллионов строк, написанных на ассемблере тысячами программистов, со- держала тысячи и тысячи ошибок, что повлекло за собой непрерывный поток новых версий, в которых предпринимались попытки исправления этих ошибок.
В каждой новой версии устранялась только часть ошибок, вместо них появля- лись новые, так что общее их количество, скорее всего, оставалось постоянным.
Один из разработчиков OS/360, Фред Брукс (Fred Brooks), впоследствии написал остроумную и язвительную книгу с описанием своего опыта работы с
OS/360. Мы не можем здесь дать полную оценку этой книги, но достаточно бу- дет сказать, что на ее обложке изображено стадо доисторических животных, увязших в яме с битумом.
Несмотря на свой огромный объем и имеющиеся недостатки, OS/360 и подобные ей операционные системы третьего поколения, созданные другими производителями компьютеров, достаточно неплохо отвечали запросам боль- шинства клиентов. Они даже сделали популярными несколько ключевых техни- ческих приемов, отсутствовавших в операционных системах второго поколе- ния. Самым важным достижением явилась многозадачность. На компьютере
IBM 7094, когда текущая работа приостанавливалась в ожидании операций ввода-вывода с магнитной ленты или других устройств, центральный процес- сор просто бездействовал до окончания операции ввода-вывода. При сложных научных вычислениях устройства ввода-вывода задействовались менее интен-
16 сивно, поэтому время, впустую потраченное на ожидание, было не столь суще- ственным. Но при коммерческой обработке данных время ожидания устройства ввода-вывода могло занимать 80 или 90% всего рабочего времени, поэтому для устранения длительных простоев весьма дорогостоящего процессора нужно было что-то предпринимать.
Решение этой проблемы заключалось в разбиении памяти на несколько частей, называемых разделами, в каждом из которых выполнялось отдельное задание, как показано на рисунке 1.3. Пока одно задание ожидало завершения работы устройства ввода-вывода, другое могло использовать центральный про- цессор. Если в оперативной памяти содержалось достаточное количество зада- ний, центральный процессор мог быть загружен почти на все 100% времени.
Множество одновременно хранящихся в памяти заданий требовало наличия специального оборудования для защиты каждого задания от возможного неза- конного присваивания областей памяти и нанесения вреда со стороны других заданий. Компьютеры 360-й серии и другие системы третьего поколения были оборудованы для этих целей специальными аппаратными средствами.
Рис. 1.3 – Многозадачная система с тремя заданиями в памяти
Другим важным плюсом операционных систем третьего поколения стала способность считывать задание с перфокарт на диск по мере того, как их при- носили в машинный зал. При окончании выполнения каждого текущего задания операционная система могла загружать новое задание с диска в освободивший- ся раздел памяти и запускать это задание. Этот технический прием называется
«подкачкой» данных, или спулингом (spooling – это английское слово, которое произошло от аббревиатуры Simultaneous Peripheral Operation On Line, то есть совместная периферийная операция в интерактивном режиме), и его также ис- пользуют для выдачи полученных данных. С появлением подкачки отпала
17 надобность как в 1401-х машинах, так и в многочисленных переносах магнит- ных лент.
Хотя операционные системы третьего поколения неплохо справлялись с большинством научных вычислений и крупных коммерческих задач по обра- ботке данных, но по своей сути они были все еще разновидностью систем па- кетной обработки. Многие программисты тосковали по первому поколению машин, когда они могли распоряжаться всей машиной в течение нескольких ча- сов и имели возможность быстро производить отладку своих программ.
При системах третьего поколения промежуток времени между передачей зада- ния и возвращением результатов часто составлял несколько часов, так что единственная поставленная не в том месте запятая могла стать причиной сбоя при компиляции, и получалось, что программист тратил половину дня впустую.
Желание сократить время ожидания ответа привело к разработке режима
разделения времени– варианту многозадачности, при котором у каждого поль- зователя есть свой диалоговый терминал. Если двадцать пользователей зареги- стрированы в системе, работающей в режиме разделения времени, и семна- дцать из них думают, беседуют или пьют кофе, то центральный процессор по очереди предоставляется трем пользователям, желающим работать на машине.
Так как люди, отлаживая программы, обычно выдают короткие команды
(например, компилировать процедуру на пяти страницах) чаще, чем длинные
(например, упорядочить файл с миллионами записей), то компьютер может обеспечивать быстрое интерактивное обслуживание нескольких пользователей.
При этом он может работать над большими пакетами в фоновом режиме, когда центральный процессор не занят другими заданиями. Первая универсальная си- стема с режимом разделения времени CTSS (Compatible Time Sharing System) была разработана в Массачусетском технологическом институте (M.I.T.) на специально переделанном компьютере IBM 7094. Однако режим разделения времени не стал действительно популярным до тех пор, пока на машинах тре- тьего поколения не получили широкого распространения необходимые техни- ческие средства защиты.
После успеха системы CTSS Массачусетский технологический институт, исследовательские лаборатории Bell Labs и корпорация General Electric (глав- ный на то время изготовитель компьютеров) решили начать разработку универ- сальной общей компьютерной системы – машины, которая должна была под- держивать одновременную работу сотен пользователей в режиме разделения времени. За основу была взята система распределения электроэнергии. Когда