Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Стоулинг ГЛАВА 2 Обзор ОС.doc
Скачиваний:
30
Добавлен:
11.05.2015
Размер:
510.46 Кб
Скачать

Возможность развития операционной системы

Большинство операционных систем постоянно развиваются. Происходит это в силу следующих причин.

• Обновление и возникновение новых видов аппаратного обеспечения. На­ пример, ранние версии операционных систем UNIX и OS/2 не использовали механизмы страничной организации памяти, потому что они работали на машинах, не обеспеченных соответствующими аппаратными средствами1. Более поздние версии операционных систем были доработаны таким обра­зом, чтобы они могли использовать новые аппаратные возможности. Точно так же на устройство операционных систем повлияло использование графических терминалов и терминалов, работающих в страничном режиме, вместо алфавитно-цифровых терминалов с построчной разверткой. Такой терминал позволяет пользователю работать одновременно с несколькими при­ложениями в различных окнах экрана. Такая возможность требует более сложной поддержки со стороны операционной системы.

Рис. 2.2. Операционная система как диспетчер ресурсов

  • Новые сервисы. Для удовлетворения требований пользователей или нужд системных администраторов операционные системы предоставляют новые возмож­ности. Например, если станет трудно поддерживать высокую производительность при работе с имеющимся на определенный момент инструментарием пользователя, в операционную систему могут быть добавлены новые инстру­менты для контроля и оценки производительности. Другой пример — под­держка новых приложений, использующих окна на экране дисплея. Эта воз­можность потребовала значительного обновления операционной системы.

  • Исправления. В каждой операционной системе есть ошибки. Время от вре­мени они обнаруживаются и исправляются. Конечно, в исправление может вкрасться новая ошибка...

Необходимость регулярных изменений операционных систем накладывает оп­ределенные требования на их устройство. Очевидно, что эти системы должны иметь модульную конструкцию с четко определенным взаимодействием модулей; очень важную роль играет хорошая и полная документированность. Для больших про­грамм, которыми на сегодняшний день являются типичные операционные системы, недостаточно выполнить то, что называется непосредственной модуляризацией[DENN80a] — нужно сделать нечто большее, чем простая разбивка целой программы на отдельные подпрограммы. В данной главе мы вернемся к этому вопросу.

2.2. Эволюция операционных систем

Пытаясь понять основные требования, предъявляемые к операционным систе­мам, а также значение основных возможностей современных операционных систем, полезно проследить за их эволюцией, происходившей на протяжении многих лет.

Последовательная обработка данных

В самых первых компьютерах, в период от конца 40-х до средины 50-х го­дов, программы непосредственно взаимодействовали с аппаратным обеспечением машины; операционных систем в то время еще не было. Эти компьютеры управ­лялись с пульта управления, состоящего из сигнальных ламп, тумблеров, неко­торого устройства для ввода данных и принтера. Программы, машинные коды и данные загружались через устройство ввода данных (например, устройство ввода с перфокарт). Если из-за ошибки происходил останов программы, о возникнове­нии сбойной ситуации свидетельствовали аварийные сигнальные лампы. Чтобы определить причину ошибки, программист должен был проверить состояние ре­гистров процессора и основной памяти. Если программа успешно завершала свою работу, ее выходные данные распечатывались на принтере.

Ранние системы имели две основные проблемы.

Расписание работы. На большинстве машин нужно было предварительно заказать машинное время, записавшись в специальный график. Обычно пользователь мог заказать время, кратное некоторому периоду, например, получасу. Тогда, записавшись на 1 час, он мог закончить работу за 45 минут, что приводило к простою компьютера. С другой стороны, если пользователь не укладывался в отведенное время, он должен был прекращать ра­боту, прежде чем задача завершит выполнение.

Время подготовки к работе. Для запуска каждой программы, называемой заданием (job), нужно было загрузить в память компилятор и саму программу, обычно составленную на языке высокого уровня (исходный текст), сохранить скомпилированную программу (объектный код), а затем загрузить и скомпоновать объектный код с библиотечными функциями. Для каждого из этих этапов могли понадобиться установка и съем магнитных лент или загрузка колоды перфокарт. При возникновении фатальной ошибки беспомощному пользователю не оставалось ничего другого, как начинать весь подготовительный процесс заново. Таким образом, значительное время затрачивалось лишь на то, чтобы подготовить программу к собственно исполнению.

Такой режим работы можно назвать последовательной обработкой данных. Это название отражает тот факт, что пользовательские программы исполнялись на компьютере последовательно. Спустя некоторое время в попытке повысить эффективность последовательной обработки были разработаны различные сис­темные инструменты. К ним относятся библиотеки функций, редакторы связей, загрузчики, отладчики и драйверы ввода-вывода, существующие в виде про­граммного обеспечения, общедоступного для всех пользователей.