Добавлен: 29.10.2018
Просмотров: 48065
Скачиваний: 190
1.2. История операционных систем
31
компилятор языка Фортран с системной магнитной ленты. За этой картой следовала
программа, которую нужно было компилировать, а после нее — карта $LOAD, указы-
вающая операционной системе загрузить только что скомпилированную объектную
программу. (Скомпилированные программы часто записывались на рабочих лентах,
данные с которых могли стираться сразу после использования, и их загрузка должна
была выполняться в явном виде.) Следом шла карта $RUN, дающая операционной
системе команду на выполнение программы с использованием данных, следующих
за ней. Наконец, карта завершения $END отмечала конец задания. Эти примитивные
управляющие перфокарты были предшественниками современных оболочек и интер-
претаторов командной строки.
Большие компьютеры второго поколения использовались главным образом для на-
учных и технических вычислений, таких как решение дифференциальных уравнений
в частных производных, часто встречающихся в физике и инженерных задачах. В ос-
новном программы для них составлялись на языке Фортран и ассемблере, а типичными
операционными системами были FMS (Fortran Monitor System) и IBSYS (операцион-
ная система, созданная корпорацией IBM для компьютера IBM 7094).
1.2.3. Третье поколение (1965–1980):
интегральные схемы и многозадачность
К началу 1960-х годов большинство производителей компьютеров имели два раз-
личных, не совместимых друг с другом семейства. С одной стороны, это были огром-
ные научные компьютеры с пословной обработкой данных типа IBM 7094, которые
использовались для промышленного уровня числовых расчетов в науке и технике,
с другой — коммерческие компьютеры с посимвольной обработкой данных, такие
как IBM 1401, широко используемые банками и страховыми компаниями для задач
сортировки и распечатки данных.
Развитие и поддержка двух совершенно разных семейств была для производителей
весьма обременительным делом. Кроме того, многим новым покупателям компьютеров
сначала нужна была небольшая машина, однако позже ее возможностей становилось
недостаточно и требовался более мощный компьютер, который работал бы с теми же
самыми программами, но значительно быстрее.
Фирма IBM попыталась решить эти проблемы разом, выпустив серию машин
IBM System/360. Это была серия программно-совместимых машин, в которой компью-
теры варьировались от машин, сопоставимых по размерам с IBM 1401, до значительно
более крупных и мощных машин, чем IBM 7094. Эти компьютеры различались только
ценой и производительностью (максимальным объемом памяти, быстродействием про-
цессора, количеством возможных устройств ввода-вывода и т. д.). Так как все машины
имели одинаковые структуру и набор команд, программы, написанные для одного
компьютера, могли работать на всех других, по крайней мере, в теории. (Но, как любил
повторять Йоги Берра (Yogi Berra): «В теории нет разницы между теорией и практикой,
но на практике она есть».) Поскольку 360-я серия была разработана для поддержки как
научных (то есть численных), так и коммерческих вычислений, одно семейство машин
могло удовлетворить нужды всех потребителей. В последующие годы корпорация
IBM, используя более современные технологии, выпустила преемников 360-й серии,
имеющих с ней обратную совместимость, эти серии известны под номерами 370, 4300,
32
Глава 1. Введение
3080 и 3090. Самыми последними потомками этого семейства стали машины zSeries,
хотя они уже значительно отличаются от оригинала.
Семейство компьютеров IBM/360 стало первой основной серией, использующей малые
интегральные схемы
, дававшие преимущество в цене и качестве по сравнению с маши-
нами второго поколения, собранными на отдельных транзисторах. Корпорация IBM
добилась моментального успеха, а идею семейства совместимых компьютеров скоро
приняли на вооружение и все остальные основные производители. В компьютерных
центрах до сих пор можно встретить потомков этих машин. В настоящее время они
часто используются для управления огромными базами данных (например, для систем
бронирования и продажи билетов на авиалиниях) или в качестве серверов узлов Ин-
тернета, которые должны обрабатывать тысячи запросов в секунду.
Основное преимущество «единого семейства» оказалось одновременно и величайшей
его слабостью. По замыслу его создателей, все программное обеспечение, включая
операционную систему OS/360, должно было одинаково хорошо работать на всех
моделях компьютеров: и в небольших системах, которые часто заменяли машины
IBM 1401 и применялись для копирования перфокарт на магнитные ленты, и на
огромных системах, заменявших машины IBM 7094 и использовавшихся для расчета
прогноза погоды и других сложных вычислений. Операционная система должна была
хорошо работать как на машинах с небольшим количеством внешних устройств, так
и на системах, применяющих эти устройства в большом количестве. Она должна была
работать как в коммерческих, так и в научных областях. Более того, она должна была
работать эффективно во всех этих различных сферах применения.
Но ни IBM, ни кому-либо еще так и не удалось создать программное обеспечение,
удовлетворяющее всем этим противоречивым требованиям. В результате появилась
громоздкая и чрезвычайно сложная операционная система, примерно на два или три
порядка превышающая по объему FMS. Она состояла из миллионов строк, написан-
ных на ассемблере тысячами программистов, содержала тысячи и тысячи ошибок, что
повлекло за собой непрерывный поток новых версий, в которых предпринимались
попытки исправления этих ошибок. В каждой новой версии устранялась только часть
ошибок, вместо них появлялись новые, так что общее их количество, скорее всего,
оставалось постоянным.
Один из разработчиков OS/360, Фред Брукс (Fred Brooks), впоследствии написал
остроумную и язвительную книгу (Brooks, 1995) с описанием своего опыта работы
с OS/360. Мы не можем здесь дать полную оценку этой книги, но достаточно будет
сказать, что на ее обложке изображено стадо доисторических животных, увязших в яме
с битумом.
Несмотря на свой огромный объем и имеющиеся недостатки, OS/360 и подобные ей
операционные системы третьего поколения, созданные другими производителями
компьютеров, неплохо отвечали запросам большинства клиентов. Они даже сделали
популярными несколько ключевых технических приемов, отсутствовавших в опера-
ционных системах второго поколения. Самым важным достижением явилась многоза-
дачность
. На компьютере IBM 7094, когда текущая работа приостанавливалась в ожи-
дании операций ввода-вывода с магнитной ленты или других устройств, центральный
процессор просто бездействовал до окончания операции ввода-вывода. При сложных
научных вычислениях устройства ввода-вывода задействовались менее интенсивно,
поэтому время, впустую потраченное на ожидание, было не столь существенным. Но
при коммерческой обработке данных время ожидания устройства ввода-вывода могло
1.2. История операционных систем
33
занимать 80 или 90 % всего рабочего времени, поэтому для устранения длительных
простоев весьма дорогостоящего процессора нужно было что-то предпринимать.
Решение этой проблемы заключалось в разбиении памяти на несколько частей, на-
зываемых разделами, в каждом из которых выполнялось отдельное задание (рис. 1.5).
Пока одно задание ожидало завершения работы устройства ввода-вывода, другое
могло использовать центральный процессор. Если в оперативной памяти содержа-
лось достаточное количество заданий, центральный процессор мог быть загружен
почти на все 100 % времени. Множество одновременно хранящихся в памяти за-
даний требовало наличия специального оборудования для защиты каждого задания
от возможного незаконного присваивания областей памяти и нанесения вреда со
стороны других заданий. Для этой цели компьютеры 360-й серии и другие системы
третьего поколения были оборудованы специальными аппаратными средствами.
Рис. 1.5. Многозадачная система с тремя заданиями в памяти
Другим важным плюсом операционных систем третьего поколения стала способность
считывать задание с перфокарт на диск по мере того, как их приносили в машинный
зал. При окончании выполнения каждого текущего задания операционная система
могла загружать новое задание с диска в освободившийся раздел памяти и запускать
это задание. Этот технический прием называется подкачкой данных, или спулин-
гом (spooling — английское слово, которое произошло от Simultaneous Peripheral
Operation On Line, то есть совместная периферийная операция в интерактивном
режиме), и его также используют для выдачи полученных данных. С появлением
подкачки отпала надобность как в 1401-х машинах, так и в многочисленных пере-
носах магнитных лент.
Хотя операционные системы третьего поколения неплохо справлялись с большинством
научных вычислений и крупных коммерческих задач по обработке данных, но по сво-
ей сути они были все еще разновидностью систем пакетной обработки. Многие про-
граммисты тосковали по первому поколению машин, когда они могли распоряжаться
всей машиной в течение нескольких часов и имели возможность быстро производить
отладку своих программ. В системах третьего поколения промежуток времени между
передачей задания и возвращением результатов часто составлял несколько часов, так
что единственная поставленная не в том месте запятая могла стать причиной сбоя при
компиляции, и получалось, что программист полдня тратил впустую. Программистам
это очень не нравилось.
Желание сократить время ожидания ответа привело к разработке режима разделения
времени
— варианту многозадачности, при котором у каждого пользователя есть свой
диалоговый терминал. Если двадцать пользователей зарегистрированы в системе, ра-
ботающей в режиме разделения времени, и семнадцать из них думают, беседуют или
34
Глава 1. Введение
пьют кофе, то центральный процессор по очереди предоставляется трем пользователям,
желающим работать на машине. Так как люди, отлаживая программы, обычно выдают
короткие команды (например, компилировать процедуру на пяти страницах
1
) чаще, чем
длинные (например, упорядочить файл с миллионами записей), то компьютер может обе-
спечивать быстрое интерактивное обслуживание нескольких пользователей. При этом он
может работать над большими пакетами в фоновом режиме, когда центральный процес-
сор не занят другими заданиями. Первая универсальная система с режимом разделения
времени CTSS (Compatible Time Sharing System) была разработана в Массачусетском
технологическом институте (M.I.T.) на специально переделанном компьютере IBM
7094 (Corbato et al., 1962). Однако режим разделения времени не стал действительно
популярным до тех пор, пока на машинах третьего поколения не получили широкого
распространения необходимые технические средства защиты.
После создания успешной системы CTSS Массачусетский технологический институт,
исследовательские лаборатории Bell Labs и корпорация General Electric (главный на
то время изготовитель компьютеров) решили начать разработку универсальной общей
компьютерной системы — машины, которая должна была поддерживать одновремен-
ную работу сотен пользователей в режиме разделения времени. За основу была взята
система распределения электроэнергии. Когда вам нужна электроэнергия, вы просто
вставляете штепсель в розетку и получаете столько энергии, сколько вам нужно. Про-
ектировщики этой системы, известной как MULTICS (MULTiplexed Information and
Computing Service — мультиплексная информационная и вычислительная служба),
представляли себе одну огромную вычислительную машину, воспользоваться услугами
которой мог любой проживающий в окрестностях Бостона человек. Мысль о том, что
машины в десять тысяч раз мощнее, чем их мэйнфрейм GEE645, будут продаваться
миллионами по 1000 долларов за штуку всего лишь через каких-нибудь 40 лет, по-
казалась бы им чистейшей научной фантастикой. Это было бы сродни мысли о сверх-
звуковых трансатлантических подводных поездах для современного человека.
Успех системы MULTICS был весьма неоднозначен. Она разрабатывалась с целью
обеспечения сотен пользователей машиной, немногим более мощной, чем персональ-
ный компьютер с процессором Intel 386, но имеющей более широкие возможности
ввода-вывода данных. По тем временам это была не такая уж безумная идея, поскольку
тогда люди умели создавать небольшие эффективные программы, то есть обладали
мастерством, которое впоследствии было утрачено. Существовало много причин, по
которым система MULTICS не получила глобального распространения. Не последнюю
роль здесь сыграл тот факт, что эта система была написана на языке PL/I, а компиля-
тор языка PL/I появился лишь через несколько лет, к тому же первую версию этого
компилятора можно было назвать работоспособной лишь с большой натяжкой. Кроме
того, система MULTICS была слишком претенциозна для своего времени, что делало
ее во многом похожей на аналитическую машину Чарльза Бэббиджа в XIX столетии.
Итак, MULTICS внесла множество оригинальных идей в компьютерную литературу,
но превратить ее в серьезный продукт и добиться весомого коммерческого успеха
оказалось намного труднее, чем ожидалось. Исследовательские лаборатории Bell Labs
вышли из проекта, а компания General Electric вообще ушла с рынка компьютерных
технологий. Однако Массачусетский технологический институт проявил упорство
1
В этой книге мы будем использовать термины «процедура», «подпрограмма» и «функция»
в одном значении. — Примеч. авт.
1.2. История операционных систем
35
и со временем довел систему до работоспособного состояния. В конце концов она была
продана компании Honeywell, выкупившей компьютерный бизнес General Electric,
и установлена примерно в 80 больших компаниях и университетах по всему миру. Не-
смотря на свою малочисленность, пользователи MULTICS продемонстрировали при-
верженность этой системе. Компании General Motors, Ford и Агентство национальной
безопасности США отказались от системы MULTICS только в конце 1990-х годов,
спустя 30 лет после ее выпуска и после многолетних попыток заставить компанию
Honeywell обновить оборудование.
К концу XX века идея создания такого общего компьютера уже выдохлась, но она
может возродиться в виде облачных вычислений, когда относительно небольшие
компьютеры (включая смартфоны, планшеты и им подобные устройства) подклю-
чены к серверам, принадлежащим огромным удаленным центрам обработки данных,
где и производятся все вычисления, а локальный компьютер используется просто для
обслуживания пользовательского интерфейса. Скорее всего, существование такой си-
стемы будет мотивировано тем, что большинство пользователей не захотят заниматься
администрированием все более и более сложных и привередливых компьютерных
систем и предпочтут доверить эту работу команде профессионалов, работающих на
компанию, обслуживающую сервер. Электронная коммерция уже развивается в этом
направлении, компании, занимающиеся ею, используют мультипроцессорные серве-
ры, с которыми соединяются простые машины клиентов. Все это очень напоминает
замысел системы MULTICS.
Несмотря на коммерческую неудачу, система MULTICS оказала существенное вли-
яние на последующие операционные системы (особенно на UNIX и ее производные,
на FreeBSD, Linux, IOS и Android). Этот факт описан во многих статьях и книгах
(Corbato et al., 1972; Corbato and Vyssotsky, 1965; Daley end Dennis, 1968; Organick, 1972;
Saltzer, 1974). Системе MULTICS также посвящен до сих пор активный веб-сайт
www.
multicians.org
, содержащий большой объем информации о системе, ее проектировщиках
и пользователях.
Еще одной важной разработкой времен третьего поколения были мини-компьютеры,
невероятный взлет популярности которых начался с выпуска корпорацией DEC ма-
шины PDP-1. Компьютеры PDP-1 обладали оперативной памятью, состоящей всего
лишь из 4 К 18-битовых слов, но стоили всего 120 тыс. долларов за одну машину (это
меньше 5 % от цены IBM 7094) и поэтому расхватывались как горячие пирожки. Неко-
торые виды нечисловой работы они выполняли так же быстро, как и машины IBM 7094,
в результате чего родилась новая отрасль производства. За этой машиной вскоре по-
следовала целая серия компьютеров PDP других моделей (в отличие от семейства IBM,
полностью несовместимых), и как кульминация появилась модель PDP-11.
Кен Томпсон (Ken Thompson), один из ведущих специалистов Bell Labs, работавший
над проектом MULTICS, чуть позже нашел мини-компьютер PDP-7, которым никто не
пользовался, и решил написать упрощенную однопользовательскую версию системы
MULTICS. Эта работа позже переросла в операционную систему UNIX
®
, ставшую
популярной в академических кругах, правительственных учреждениях и во многих
компаниях. История развития UNIX уже многократно описывалась в самых различных
книгах (например, Salus, 1994). Часть этой истории будет рассказана в главе 10. А пока
достаточно сказать, что из-за широкой доступности исходного кода различные орга-
низации создали свои собственные (несовместимые) версии, что привело к полному
хаосу. Были разработаны две основные версии: System V корпорации AT&T и BSD