Назад
Г. ЛОРИН
Х.М. ДЕЙТЕЛ
«ОПЕРАЦИОННЫЕ
СИСТЕМЫ»
Перевод с английского
Л.Д. РАЙКОВА
ГЛАВЫ 1-3
МОСКВА
«ФИНАНСЫ И СТАТИСТИКА»
1984
ВВЕДЕНИЕ
Глава 1
ВВЕДЕНИЕ
1.1. ПРОЕКЦИИ СИСТЕМЫ
1.2. АППАРАТНЫЙ УРОВЕНЬ
1.2.1 Функции аппаратуры
1.2.1.1. Структура адресации
1.2.1.2. Структура прерываний
1.2.1.3. Система команд
1.2.1.4. Механизмы защиты
1.2.2. Аппаратные структуры
1.2.2.1. Микропрограммирование
1.2.2.2. Иерархия и организация памяти. Кэш-память
1.2.2.3. К08, КОМ, РКОМ и другие типы памяти
1.3. АППАРАТНО-ПРОГРАММНЫЙ ИНТЕРФЕЙС
1.3.1. Влияние микропрограммирования
1.3.2. Влияние структуры оборудования
1.4. ПОНЯТИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ
УПРАЖНЕНИЯ
Глава 2 ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ
2.1. ОСНОВНЫЕ ПОНЯТИЯ
2.2. СРЕДА ДЛЯ СОЗДАНИЯ И ВЫПОЛНЕНИЯ ПРОГРАММ
2.3. ОПРЕДЕЛЕНИЕ СРЕДЫ ДОСТУПА
2.3.1. Происхождение языков управления
2.3.2. Управление в пакетном режиме
2.3.3. Командный язык
2.3.4. Взаимосвязь между языками и общение с системой
2.3.5. Виды доступа
2.4. СОЗДАНИЕ ОПЕРАЦИОННОГО ИНТЕРФЕЙСА
УПРАЖНЕНИЯ
Глава 3 ТИПЫ ОПЕРАЦИОННЫХ СИСТЕМ
3.1. КЛАССИФИКАЦИЯ
3.2. СРЕДА РЕАЛЬНОГО ВРЕМЕНИ
3.3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СИСТЕМ РЕАЛЬНОГО
ВРЕМЕНИ
3.4. ОПЕРАЦИОННЫЕ СИСТЕМЫ ПАКЕТНОГО РЕЖИМА
3.5. БАЗИСНЫЕ ПАКЕТНЫЕ СИСТЕМЫ БЕЗ
МУЛЬТИПРОГРАММИРОВАНИЯ
3.5.1. Система FМS
3.5.2. Система IBSYS/IBJОВ
2
3.5.3. Системы с буферизацией
3.6. СИСТЕМЫ С МУЛЬТИПРОГРАММИРОВАНИЕМ
3.6.1. Базисные системы с мультипрограммированием
3.6.2. Развитые пакетные системы с мультипрограммированием
3.7. СИСТЕМЫ РАЗДЕЛЕНИЯ ВРЕМЕНИ
3.7.1. Разработка новых программ
3.7.2. Системы обработки транзакций
3.8. СИСТЕМЫ ОБЩЕГО НАЗНАЧЕНИЯ
3.9. СЕТЕВАЯ ОРГАНИЗАЦИЯ И РАСПРЕДЕЛЕННАЯ ОБРАБОТКА
3.10. ФАКТОРЫ, ВЛИЯЮЩИЕ НА ОРГАНИЗАЦИЮ
ОПЕРАЦИОННЫХ СИСТЕМ
3.11. ФОРМИРОВАНИЕ ПРЕДСТАВЛЕНИЯ О ВЫЧИСЛИТЕЛЬНОЙ
МАШИНЕ
3.11.1. Списки контрольных вопросов
УПРАЖНЕНИЯ
3
ВВЕДЕНИЕ
Данная книга предлагается студентам, которые изучают операционные
системы и достаточно овладевшим предметом, чтобы убедиться в его
многоаспектности, а так же в существовании большого числа нерешенных
вопросов и проблем. В основном эта книга предназначена для тех студентов,
которые, получив начальные сведения, заинтересовались этой темой и решили,
продолжить свое образование. В книге
широко изложен материал. В ней
рассматриваются взаимосвязи между операционными системами и техническими
средствами, вместе с которыми они используются, отношения между
операционными системами и комплексом программ (системным программным
обеспечением), способы общения с машиной различных категорий пользователей
проблемных и системных программистов, взаимозависимость технологии создания
программного обеспечения и структуры операционной системы. Часть этой
книги
представляет собой вводный материал. Большинство глав рассказывает об
исследованиях, проводимых в области операционных систем и современной
технологии их создания. При всех рассмотрениях используется неформальный
подход, цель которогоописать систему понятий, чтобы хорошо уяснить себе
главные направления развития и разобраться в основных проблемах системного
программирования.
4
Глава 1
ВВЕДЕНИЕ
1.1. ПРОЕКЦИИ СИСТЕМЫ
Вычислительная система в целом может рассматриваться как иерархически
организованная совокупность элементов аппаратуры и программного обеспечения.
На рис. 1.1 изображена четырехуровневая структура. Каждый уровень включает
множество функций и соответствующий интерфейс. Интерфейсэто соглашение о
порядке использования функций данного уровня. Некоторые особым образом
определенные наборы интерфейсов мы будем называть
«проекциями» системы.
Аппаратный уровень дает представление о внешней архитектуре
вычислительной машины. К нему относятся процессор, реализующий систему
команд, программно-адресуемые регистры и схема адресации основной памяти.
Кроме того, на этом уровне фиксируется порядок взаимодействия таких аппаратных
«блоков», как каналы, устройства управления, процессоры и памяти.
Аппаратному уровню соответствует проекция, используемая разработчиками
операционных систем. Основная задача этих высококвалифицированных
специалистовобеспечить некоторую расширенную проекцию вычислительной
системы. По существу, они создают мегамашину, т. е. расширенную архитектуру,
служащую в дальнейшем для эффективной реализации компиляторов и прикладных
программ.. Операционная система предоставляет интерфейсы, облегчающие
программирование. При этом существенно уменьшаются сложность и объем
программ.
Однако наличие интерфейсов операционной
системы в ряде случаев не
исключает необходимости учитывать особенности аппаратуры. Например,
создатели компиляторов, разрабатывающие программы генерации кодов, должны
располагать гораздо более полной информацией о характеристиках вычислительной
машины, чем та, которую они могут получить на уровне операционной системы.
Фактически при компиляции исходные программы переводятся на язык
мегамашины, состоящий из поддерживаемых операционной
системой интерфейсов
и комплекса машинных команд, относящихся к аппаратному уровню. Аналогично
при программировании на языке Ассемблера реализуются возможности,
предоставляемые как операционной системой, так и непосредственно аппаратурой.
Таким образом, использование интерфейсов некоторого уровня не означает
полного отказа от применения средств более низких уровней, что нашло свое
отражение на рис. 1.1 в виде пунктирных
стрелок, исходящих из блоков-проекций.
Любая проекция изображенной структуры определяется в основном каким-то
конкретным ее уровнем и частичноболее низкими уровнями. В настоящее время
серьезное внимание уделяется вопросу о том, насколько полно следует быть
информированным относительно структуры низких уровней вычислительной
системы при программировании с помощью высокоуровневых средств.
5
Рис.1.1 Уровни и проекции системы
Следующей на рассматриваемом рисунке представлена проекция прикладных
программистов, ориентирующихся на работу с языками высокого уровня.
Особенности этой проекции определяются в наибольшей степени создателями
языков программирования и трансляторов. Усилия специалистов по языкам
направлены на разработку удобных способов выражения стоящих перед
пользователями задач на языке, понятном вычислительной системе. Деятельность
этих специалистов связана
со структурой программ, выразительными
возможностями языков, их синтаксической и семантической четкостью. Основными
объектами исследования специалистов по трансляторам служат лексический и
синтаксический анализ, процесс генерации кодов, оптимизация и побочные
эффекты. Они также занимаются проблемами эффективности процесса трансляции
и эффективности программ, получающихся в результате перевода. например, с
языка Кобол на машинный язык.
Уровень операционной системы, как уже отмечалось, может только частично
«экранировать» возможности аппаратуры. Аналогично работа с языками
программирования высокого уровня не исключает в ряде случаев
непосредственного обращения к интерфейсам операционной системы. Подобные
средства могут встраиваться в компиляторы. Например, возможность запроса на
выделение дополнительной области памяти для выполнения программы,
реализуемая операционной системой,
часто предоставляется прикладным
программистам. Некоторые системные программисты оспаривают необходимость
предоставления прикладным программистам средств операционной системы.
6
Другие утверждают, что, наоборот, это вполне допустимо. Такое разногласие
свидетельствует о трудностях определения проекций, соответствующих всем
выделенным уровням, и оптимального распределения функций между уровнями.
Как же убедиться в том, что выбранная проекция позволяет повысить
производительность труда тех, кто общается с системой на данном уровне?
Далее, проекция прикладного программиста никогда целиком не
определяется применяемым языком программирования, будь то ПЛ/1, Кобол или
какой-либо иной язык. Помимо средств операционной системы, предоставляемых
непосредственно компилятором, обычно приходится учитывать также командные
языки, утилиты и редакторы. Эти элементы программного обеспечения должны
включаться в проекцию программиста для того, чтобы он имел весь набор средств,
которые могут потребоваться для
разработки и выполнения программ, реализующих
решения задач проблемной области. Таким образом, каждому уровню может
соответствовать множество проекций, и необходимо обеспечить определенную
согласованность «представлений» о системе для независимых элементов,
использующих один и тот же уровень, Но может быть, еще лучше попытаться
добиться единства представлений, запретив употребление на каждом уровне
неоднородных синтаксиса
и семантики или допустив различные языковые формы с
тем условием, чтобы в каждый данный момент времени применялась только одна из
них, гарантирующая максимальную эффективность работы с соответствующим
набором функций?
Эти рассуждения можно продолжить, рассмотрев вопрос о том, можно ли
пользоваться разными проекциями на различных этапах составления прикладной
программы. Например, не исключается
случай, когда программа пишется на языке
высокого уровня, а в процессе ее отладки приходится спускаться на более низкие
уровни и работать с дампами содержимого памяти. Хорошо ли это? Или. может
быть, следует пользоваться только языком высокого уровня?
Разнообразие проблемных областей и задач, решаемых пользователями,
создает дополнительный круг вопросов, связанных с
различными проекциями
вычислительных систем. Как соотносятся между собой программирование и
управление выполнением? Необходимо ли, как и ранее, разделение функций
программистов и операторов или существуют обстоятельства, когда их обязанности
желательно объединить? Как это влияет на структуру самой системы и языки
программирования?
Иерархия, изображенная на рис. 1.1,— это типичная иерархия любой
вычислительной системы, предназначенной
для решения прикладных задач. Однако
известны и другие структуры, которые тем не менее пересекаются с рассмотренной.
На рис. 1.2 показана структура управления и обслуживания, определяющая
множество проекций различных работников вычислительного центра. Например,
инженеру, ответственному за функционирование аппаратуры приходится иметь
дело с программами диагностики, входящими в состав операционной системы, и
поэтому соответствующая
проекция включает некоторую совокупность средств
операционной системы и аппаратуры.
7
Аналогично оператор, которому вменяется в обязанности следить за
состоянием вычислительной системы в целом, должен располагать сведениями об
аппаратуре и операционной системе. Но, кроме того, оператору для успешного
решения возложенных на него задач может потребоваться проекция, включающая
такие два важных и противоположных по сути понятия, как соблюдение графика
обслуживания и обеспечение эффективной
работы оборудования. При этом
окажется неизбежным обращение (с помощью специального интерфейса) к
планировщикуодному из высокоуровневых компонентов программного
обеспечения.
При рассмотрении рис. 1.2 создается впечатление, что структура
интерфейсов управления и обслуживания значительно сложнее иерархической
структуры, соответствующей решению прикладных задач. В самом деле, существует
широкий диапазон представлений об обязанностях специалистов, занимающихся
генерацией, установкой, настройкой, оценкой, т. е. всех специалистов. имеющих
отношение к структуре, изображенной на рис. 1.2.
Наивысший уровень иерархии, приведенной на
рис. 1.1,—это уровень
прикладных задач, с которым тесно связана проекция пользователя. Само понятие
пользователя является довольно общим. В качестве пользователей могут выступать
кассиры авиалиний, принимающие заказы на билеты, конструкторы автомобилей и
вице-президенты крупных фирм. Они имеют самые разнообразные потребности в
связи с тем, что занимают различное положение в экономической
структуре
8
общества. Это разнообразие и служит основным источником трудностей,
возникающих у разработчиков при определении проекции пользователя.
Пользователи прежде всего заинтересованы в получении от системы
некоторой информации, причем внутренняя структура системы им чаще всего
безразлична. Пользователи, умеющие программировать, оценивают
вычислительную систему, кроме того, и с точки зрения предоставляемых
возможностей программирования. При этом необходимый
для решения задач класс
алгоритмов обработки данных заранее не известен. В такой ситуации цель
системного проектированияразработать пользовательские интерфейсы, по
возможности менее связанные с внутренним устройством применяющихся
вычислительных машин. Ряд пользователей находят процесс программирования
слишком сложным. Однако они (возможно, с чьей-то помощью) могли бы
описывать процессы, результат воздействия которых
на исходные данные
представляет для них интерес. В этом случае при системном проектировании
необходимо определить соответствующие указанным процессам структуры,
позволяющие установить оптимальное соотношение между общностью и
эффективностью предоставляемых пользователям средств.
Заметим, что для разработчиков систем существенную роль играет понятие
уровня проекции, способствующее выбору наиболее удачных проекций,
ориентированных на пользователей различных
классов. Здесь трудно устоять перед
искушением провести аналогию с потреблением электроэнергии. Интерфейс
пользователя, управляющего распределением электроэнергии, в большинстве
развитых стран чрезвычайно прост. Щелчок выключателяи любые желания
исполняются. Однако для поддержки этого замечательного интерфейса требуется
определение очень сложных структур более низких уровней.
Вполне вероятно, что пользовательские интерфейсы окажутся не столь
простыми
, но все же приемлемыми. Это даже представляется экономически
целесообразным в условиях непрерывно меняющейся технологии. Вероятно, от
пользователя потребуются дополнительные сведения о распределении
электроэнергии, что позволит упростить подстанции и центры управления энергией,
а возможно, и изменить размещение заводов по производству генераторов. Не
исключено, что таким путем удастся понизить и стоимость потребления
электроэнергии.
В мире вычислительных систем экономические параметры и представления
пользователей быстро меняются. При создании любой новой системы необходимо
пересматривать вопросы эффективности и распределения функций между уровнями,
а также заново оценивать допустимую сложность на каждом уровне. От каких забот
программиста следует освободить? Как перераспределятся функции между
уровнями и каковы будут связанные с
этим затраты? Сколько вообще должно быть
уровней?
9
1.2. АППАРАТНЫЙ УРОВЕНЬ
К аппаратному уровню вычислительной системы относятся элементы
аппаратуры, имеющие определенные функциональные и структурные атрибуты.
Рассмотрим эти основные атрибуты, которые могут оказаться полезными при
проектировании операционных систем.
1.2.1 Функции аппаратуры
Аппаратная часть вычислительной системы состоит из устройств с четко
определенными функциями, предназначенных для выполнения операций различной
степени замкнутости.
Процессоры, памяти, каналы, накопители на магнитных
дисках, барабанах и лентах, линии телеобработки в совокупности образуют
функциональную систему.
На некотором этапе проектирования операционной системы программисты
считают все эти устройства «черными ящиками», рассматривая только их
взаимодействия.
Степень совмещения работы канала и процессора определяет системную
поддержку операции ввода-вывода и целесообразность использования системных
средств
для обеспечения одновременного функционирования указанных аппаратных
компонентов. Взаимодействия блоков памяти и устройств ввода-вывода влияют на
стратегию распределения памяти.
Проектировщик пытается оптимально разделить функции между отдельными
частями системы. Однако является ли канал достаточно развитым устройством для
того, чтобы выполнять специальные программы ввода-вывода и самостоятельно
управлять соответствующими буферами? С развитием
технологии связана одна
важная особенность: центральный процессор постепенно разгружается и все
большее число функций возлагается на ранее пассивные устройства. Разработчик
операционной системы может рассматривать множество процессов обработки как
распределенное на семействе блоков. Такая точка зрения существовала и прежде,
сейчас же она приобретает первостепенное значение.
Одними из первых с проблемой распределения
функциональных элементов
операционной системы столкнулись программисты, участвовавшие в середине 60-х
годов в создании комплекса СDС 6600. Этот комплекс состоял из мощного
центрального процессора и десяти меньших процессоров, работавших с общей
памятью. С самого начала разработчики операционной системы решили передать
функции управления и организации ввода-вывода малым процессорам. Такой
подход крайне отличался
от традиционных принципов построения вычислительных
систем.
В какой степени операционная система должна зависеть от аппаратуры?
Например, если память представляет собой набор блоков, содержащих ячейки с
номерами от 0 до 256К—1, от 256К до 512К—1 и т. д. и к этим блокам возможны
одновременные обращения, то нужно ли учитывать указанную особенность при
10