Реферат: The design of the unix operating system by Maurice J
Maurice J. Bach
Архитектура Операционной СИСТЕМЫ UNIX
THE DESIGN OF THE UNIX OPERATING SYSTEM by Maurice J. Bach
(Перевод с английского к.т.н. Крюкова А.В.)
СОДЕРЖАНИЕ
ПРЕДИСЛОВИЕ ............................................... xi
ГЛАВА 1. ОБЩИЙ ОБЗОР ОСОБЕННОСТЕЙ СИСТЕМЫ ................. 1
1.1 ИСТОРИЯ ........................................... 1
1.2 СТРУКТУРА СИСТЕМЫ ................................. 4
1.3 ОБЗОР С ТОЧКИ ЗРЕНИЯ ПОЛЬЗОВАТЕЛЯ ................. 6
1.4 ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ ...................... 14
1.5 ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА ................... 15
1.6 ВЫВОДЫ ............................................ 18
ГЛАВА 2. ВВЕДЕНИЕ В АРХИТЕКТУРУ ЯДРА ОПЕРАЦИОННОЙ СИСТЕМЫ . 19
2.1 АРХИТЕКТУРА ОПЕРАЦИОННОЙ СИСТЕМЫ UNIX ............. 19
2.2 ВВЕДЕНИЕ В ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ ............... 22
2.3 СТРУКТУРЫ ДАННЫХ ЯДРА ............................. 34
2.4 УПРАВЛЕНИЕ СИСТЕМОЙ ............................... 34
2.5 ВЫВОДЫ И ОБЗОР ПОСЛЕДУЮЩИХ ГЛАВ ................... 36
2.6 УПРАЖНЕНИЯ ........................................ 37
ГЛАВА 3. БУФЕР СВЕРХОПЕРАТИВНОЙ ПАМЯТИ (КЕШ) .............. 38
3.1 ЗАГОЛОВКИ БУФЕРА .................................. 39
3.2 СТРУКТУРА ОБЛАСТИ БУФЕРОВ (БУФЕРНОГО ПУЛА) ........ 40
3.3 МЕХАНИЗМ ПОИСКА БУФЕРА ............................ 42
3.4 ЧТЕНИЕ И ЗАПИСЬ ДИСКОВЫХ БЛОКОВ ................... 53
3.5 ПРЕИМУЩЕСТВА И НЕУДОБСТВА БУФЕРНОГО КЕША .......... 56
3.6 ВЫВОДЫ ............................................ 57
3.7 УПРАЖНЕНИЯ ........................................ 58
ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ .................. 60
4.1 ИНДЕКСЫ ........................................... 61
4.2 СТРУКТУРА ФАЙЛА ОБЫЧНОГО ТИПА ..................... 67
4.3 КАТАЛОГИ .......................................... 73
4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА)
В ИДЕНТИФИКАТОР ИНДЕКСА ........................... 74
4.5 СУПЕРБЛОК ......................................... 76
4.6 НАЗНАЧЕНИЕ ИНДЕКСА НОВОМУ ФАЙЛУ ................... 77
4.7 ВЫДЕЛЕНИЕ ДИСКОВЫХ БЛОКОВ ......................... 84
4.8 ДРУГИЕ ТИПЫ ФАЙЛОВ ................................ 88
4.9 ВЫВОДЫ ............................................ 88
4.10 УПРАЖНЕНИЯ ....................................... 89
ГЛАВА 5. СИСТЕМНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С ФАЙЛОВОЙ СИСТЕМОЙ 91
5.1 OPEN .............................................. 92
5.2 READ .............................................. 96
5.3 WRITE .............................................101
5.4 ЗАХВАТ ФАЙЛА И ЗАПИСИ .............................103
5.5 УКАЗАНИЕ МЕСТА В ФАЙЛЕ, ГДЕ БУДЕТ ВЫПОЛНЯТЬСЯ
ВВОД-ВЫВОД - LSEEK ................................103
5.6 CLOSE .............................................103
5.7 СОЗДАНИЕ ФАЙЛА ....................................105
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ .......................107
5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА ...............109
5.10 СМЕНА ВЛАДЕЛЬЦА И РЕЖИМА ДОСТУПА К ФАЙЛУ .........110
5.11 STAT И FSTAT .....................................110
5.12 КАНАЛЫ ...........................................111
5.13 DUP ..............................................117
5.14 МОНТИРОВАНИЕ И ДЕМОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ ....119
5.15 LINK .............................................128
5.16 UNLINK ...........................................132
5.17 АБСТРАКТНЫЕ ОБРАЩЕНИЯ К ФАЙЛОВЫМ СИСТЕМАМ ........138
5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ ...................139
5.19 ВЫВОДЫ ...........................................140
5.20 УПРАЖНЕНИЯ .......................................140
ГЛАВА 6. СТРУКТУРА ПРОЦЕССОВ ..............................146
6.1 СОСТОЯНИЯ ПРОЦЕССА И ПЕРЕХОДЫ МЕЖДУ НИМИ ..........147
6.2 ФОРМАТ ПАМЯТИ СИСТЕМЫ .............................151
6.3 КОНТЕКСТ ПРОЦЕССА .................................159
6.4 СОХРАНЕНИЕ КОНТЕКСТА ПРОЦЕССА .....................162
6.5 УПРАВЛЕНИЕ АДРЕСНЫМ ПРОСТРАНСТВОМ ПРОЦЕССА ........171
6.6 ПРИОСТАНОВКА ВЫПОЛНЕНИЯ ...........................182
6.7 ВЫВОДЫ ............................................188
6.8 УПРАЖНЕНИЯ ........................................189
ГЛАВА 7. УПРАВЛЕНИЕ ПРОЦЕССОМ .............................191
7.1 СОЗДАНИЕ ПРОЦЕССА .................................192
7.2 СИГНАЛЫ ...........................................200
7.3 ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССА ....................212
7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА ...........213
7.5 ВЫЗОВ ДРУГИХ ПРОГРАММ .............................217
7.6 КОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОЦЕССА ...........227
7.7 ИЗМЕНЕНИЕ РАЗМЕРА ПРОЦЕССА ........................229
7.8 КОМАНДНЫЙ ПРОЦЕССОР SHELL .........................232
7.9 ЗАГРУЗКА СИСТЕМЫ И НАЧАЛЬНЫЙ ПРОЦЕСС ..............235
7.10 ВЫВОДЫ ...........................................238
7.11 УПРАЖНЕНИЯ .......................................239
ГЛАВА 8. ДИСПЕТЧЕРИЗАЦИЯ ПРОЦЕССОВ И ЕЕ ВРЕМЕННЫЕ
ХАРАКТЕРИСТИКИ ...................................247
8.1 ПЛАНИРОВАНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССОВ .................248
8.2 СИСТЕМНЫЕ ОПЕРАЦИИ, СВЯЗАННЫЕ СО ВРЕМЕНЕМ .........258
8.3 ТАЙМЕР ............................................260
8.4 ВЫВОДЫ ............................................268
8.5 УПРАЖНЕНИЯ ........................................268
ГЛАВА 9. АЛГОРИТМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ .....................271
9.1 СВОПИНГ ...........................................272
9.2 ПОДКАЧКА ПО ЗАПРОСУ ...............................285
9.3 СИСТЕМА СМЕШАННОГО ТИПА СО СВОПИНГОМ И ПОДКАЧКОЙ
ПО ЗАПРОСУ ........................................307
9.4 ВЫВОДЫ ............................................307
9.5 УПРАЖНЕНИЯ ........................................308
ГЛАВА 10. ПОДСИСТЕМА УПРАВЛЕНИЯ ВВОДОМ-ВЫВОДОМ ............312
10.1 ВЗАИМОДЕЙСТВИЕ ДРАЙВЕРОВ С ПРОГРАММНОЙ И
АППАРАТНОЙ СРЕДОЙ ................................313
10.2 ДИСКОВЫЕ ДРАЙВЕРЫ ................................325
10.3 ТЕРМИНАЛЬНЫЕ ДРАЙВЕРЫ ............................329
10.4 ПОТОКИ ...........................................344
10.5 ВЫВОДЫ ...........................................351
10.6 УПРАЖНЕНИЯ .......................................352
ГЛАВА 11. ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ ........................355
11.1 ТРАССИРОВКА ПРОЦЕССОВ ............................356
11.2 ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ В ВЕРСИИ V СИСТЕМЫ ......359
11.3 ВЗАИМОДЕЙСТВИЕ В СЕТИ ............................382
11.4 ГНЕЗДА ...........................................383
11.5 ВЫВОДЫ ...........................................388
11.6 УПРАЖНЕНИЯ .......................................389
ГЛАВА 12. МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ .......................391
12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ
СИСТЕМАМИ ........................................392
12.2 ГЛАВНЫЙ И ПОДЧИНЕННЫЙ ПРОЦЕССОРЫ .................393
12.3 СЕМАФОРЫ .........................................395
12.4 СИСТЕМА TUNIS ....................................410
12.5 УЗКИЕ МЕСТА В ФУНКЦИОНИРОВАНИИ МНОГОПРОЦЕССОРНЫХ
СИСТЕМ ...........................................410
12.6 УПРАЖНЕНИЯ .......................................410
ГЛАВА 13. РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ ..........................412
13.1 ПЕРИФЕРИЙНЫЕ ПРОЦЕССОРЫ ..........................414
13.2 СВЯЗЬ ТИПА NEWCASTLE .............................422
13.3 "ПРОЗРАЧНЫЕ" РАСПРЕДЕЛЕННЫЕ ФАЙЛОВЫЕ СИСТЕМЫ .....426
13.4 РАСПРЕДЕЛЕННАЯ МОДЕЛЬ БЕЗ ПЕРЕДАТОЧНЫХ ПРОЦЕССОВ .429
13.5 ВЫВОДЫ ...........................................430
13.6 УПРАЖНЕНИЯ .......................................431
ПРИЛОЖЕНИЕ - СИСТЕМНЫЕ ОПЕРАЦИИ ...........................434
БИБЛИОГРАФИЯ ..............................................454
АЛФАВИТНЫЙ УКАЗАТЕЛЬ ......................................458
ПРЕДИСЛОВИЕ
Впервые система UNIX была описана в 1974 году в статье Кена
Томпсона и Дэнниса Ричи в журнале "Communications of the ACM"
[Thompson 74]. С этого времени она получила широкое распростране-
ние и завоевала широкую популярность среди производителей ЭВМ,
которые все чаще стали оснащать ею свои машины. Особой популяр-
ностью она пользуется в университетах, где довольно часто участ-
вует в исследовательском и учебном процессе.
Множество книг и статей посвящено описанию отдельных частей
системы; среди них два специальных выпуска "Bell System Technical
Journal" за 1978 год [BSTJ 78] и за 1984 год [BSTJ 84]. Во многих
книгах описывается пользовательский интерфейс, в частности ис-
пользование электронной почты, подготовка документации, работа с
командным процессором Shell; в некоторых книгах, таких как "The
UNIX Programming Environment" [Kernighan 84] и "Advanced UNIX
Programming" [Rochkind 85], описывается программный интерфейс.
Настоящая книга посвящена описанию внутренних алгоритмов и струк-
тур, составляющих основу операционной системы (т.н. "ядро"), и
объяснению их взаимосвязи с программным интерфейсом. Таким обра-
зом, она будет полезна для работающих в различных операционных
средах. Во-первых, она может использоваться в качестве учебного
пособия по курсу "Операционные системы" как для студентов послед-
него курса, так и для аспирантов первого года обучения. При рабо-
те с книгой было бы гораздо полезнее обращаться непосредственно к
исходному тексту системных программ, но книгу можно читать и не-
зависимо от него. Во-вторых, эта книга может служить в качестве
справочного руководства для системных программистов, из которого
последние могли бы лучше уяснить себе механизм работы ядра опера-
ционной системы и сравнить между собой алгоритмы, используемые в
UNIX, и алгоритмы, используемые в других операционных системах.
Наконец, программисты, работающие в среде UNIX, могут углубить
свое понимание механизма взаимодействия программ с операционной
системой и посредством этого прийти к написанию более эффективных
и совершенных программ.
Содержание и порядок построения материала в книге соответс-
твуют курсу лекций, подготовленному и прочитанному мной для сот-
рудников фирмы Bell Laboratories, входящей в состав корпорации AT
&T, между 1983 и 1984 гг. Несмотря на то, что главное внимание в
курсе лекций обращалось на исходный текст системных программ, я
обнаружил, что понимание исходного текста облегчается, если поль-
зователь имеет представление о системных алгоритмах. В книге я
пытался изложить описание алгоритмов как можно проще, чтобы и в
малом отразить простоту и изящество рассматриваемой операционной
системы. Таким образом, книга представляет собой не только под-
робное истолкование особенностей системы на английском языке; это
изображение общего механизма работы различных алгоритмов, и что
гораздо важнее, это отражение процесса их взаимодействия между
собой. Алгоритмы представлены на псевдокоде, похожем на язык Си,
поскольку читателю легче воспринимать описание на естественном
языке; наименования алгоритмов соответствуют именам процедур,
составляющих ядро операционной системы. Рисунки описывают взаимо-
действие различных информационных структур под управлением опера-
ционной системы. В последних главах многие системные понятия ил-
люстрируются с помощью небольших программ на языке Си. В целях
экономии места и обеспечения ясности изложения из этих примеров
исключен контроль возникновения ошибок, который обычно предусмат-
ривается при написании программ. Эти примеры прогонялись мною под
управлением версии V; за исключением программ, иллюстрирующих
особенности, присущие версии V, их можно выполнять под управлени-
ем других версий операционной системы.
Большое число упражнений, подготовленных первоначально для
курса лекций, приведено в конце каждой главы, они составляют клю-
чевую часть книги. Отдельные упражнения, иллюстрирующие основные
понятия, размещены непосредственно в тексте книги. Другая часть
упражнений отличается большей сложностью, поскольку их предназна-
чение состоит в том, чтобы помочь читателю углубить свое понима-
ние особенностей системы. И, наконец, часть упражнений является
по природе исследовательской, предназначенной для изучения от-
дельных проблем. Упражнения повышенной сложности помечены звез-
дочками.
Системное описание базируется на особенностях операционной
системы UNIX версия V редакция 2, распространением которой зани-
мается корпорация AT&T, с учетом отдельных особенностей редакции
3. Это та система, с которой я наиболее знаком, однако я поста-
рался отразить и интересные детали других разновидностей операци-
онных систем, в частности систем, распространяемых через
"Berkeley Software Distribution" (BSD). Я не касался вопросов,
связанных с характеристиками отдельных аппаратных средств, стара-
ясь только в общих чертах охватить процесс взаимодействия ядра
операционной системы с аппаратными средствами и игнорируя харак-
терные особенности физической конфигурации. Тем не менее, там,
где вопросы, связанные с машинными особенностями, представились
мне важными с точки зрения понимания механизма функционирования
ядра, оказалось уместным и углубление в детали. По крайней мере,
беглый просмотр затронутых в книге вопросов ясно указывает те
составные части операционной системы, которые являются наиболее
машинно-зависимыми.
Общение с книгой предполагает наличие у читателя опыта прог-
раммирования на одном из языков высокого уровня и желательно на
языке ассемблера. Читателю рекомендуется приобрести опыт работы с
операционной системой UNIX и познакомиться с языком программиро-
вания Си [Kernighan 78]. Тем не менее, я старался изложить мате-
риал в книге таким образом, чтобы читатель смог овладеть им даже
при отсутствии требуемых навыков. В приложении к книге приведено
краткое описание обращений к операционной системе, которого будет
достаточно для того, чтобы получить представление о содержании
книги, но которое не может служить в качестве полного справочного
руководства.
Материал в книге построен следующим образом. Глава 1 служит
введением, содержащим краткое, общее описание системных особен-
ностей с точки зрения пользователя и объясняющим структуру систе-
мы. В главе 2 дается общее представление об архитектуре ядра и
поясняются некоторые основные понятия. В остальной части книги
освещаются вопросы, связанные с общей архитектурой системы и опи-
санием ее различных компонент как блоков единой конструкции. В
ней можно выделить три раздела: файловая система, управление про-
цессами и вопросы, связанные с развитием. Файловая система предс-
тавлена первой, поскольку ее понимание легче по сравнению с уп-
равлением процессами. Так, глава 3 посвящена описанию механизма
функционирования системного буфера сверхоперативной памяти (ке-
ша), составляющего основу файловой системы. Глава 4 описывает ин-
формационные структуры и алгоритмы, используемые файловой систе-
мой. В этих алгоритмах используются методы, объясняемые в главе
3, для ведения внутренней "бухгалтерии", необходимой для управле-
ния пользовательскими файлами. Глава 5 посвящена описанию обраще-
ний к операционной системе, обслуживающих интерфейс пользователя
с файловой системой; для обеспечения доступа к пользовательским
файлам используются алгоритмы главы 4.
Основное внимание в главе 6 уделяется управлению процессами.
В ней определяется понятие контекста процесса и исследуются внут-
ренние составляющие ядра операционной системы, управляющие кон-
текстом процесса. В частности, рассматривается обращение к опера-
ционной системе, обработка прерываний и переключение контекста. В
главе 7 анализируются те системные операции, которые управляют
контекстом процесса. Глава 8 касается планирования процессов,
глава 9 - распределения памяти, включая системы подкачки и заме-
щения страниц.
В главе 10 дается обзор общих особенностей взаимодействия,
которое обеспечивают драйверы устройств, особое внимание уделяет-
ся дисковым и терминальным драйверам. Несмотря на то, что уст-
ройства логически входят в состав файловой системы, их рассмотре-
ние до этого момента откладывалось в связи с возникновением
вопросов, связанных с управлением процессами, при обсуждении тер-
минальных драйверов. Эта глава также служит мостиком к вопросам,
связанным с развитием системы, которые рассматриваются в конце
книги. Глава 11 касается взаимодействия процессов и организации
сетей, в том числе сообщений, используемых в версии V, разделения
памяти, семафоров и пакетов BSD. Глава 12 содержит компактное из-
ложение особенностей двухпроцессорной системы UNIX, в главе 13
исследуются двухмашинные распределенные вычислительные системы.
Материал, представленный в первых девяти главах, может быть
прочитан в процессе изучения курса "Операционные системы" в тече-
ние одного семестра, материал остальных глав следует изучать на
опережающих семинарах с параллельным выполнением практических за-
даний.
Теперь мне бы хотелось предупредить читателя о следующем. Я
не пытался оценить производительность системы в абсолютном выра-
жении, не касался и параметров конфигурации, необходимых для инс-
талляции системы. Эти данные меняются в зависимости от типа маши-
ны, конфигурации комплекса технических средств, версии и
реализации системы, состава задач. Кроме того, я сознательно из-
бегал любых предсказаний по поводу дальнейшего развития операци-
онной системы UNIX. Изложение вопросов, связанных с развитием, не
подкреплено обязательством корпорации AT&T обеспечить соответс-
твующие характеристики, даже не гарантируется то, что соответс-
твующие области являются объектом исследования.
Мне приятно выразить благодарность многим друзьям и коллегам
за помощь при написании этой книги и за конструктивные критичес-
кие замечания, высказанные при ознакомлении с рукописью. Я должен
выразить глубочайшую признательность Яну Джонстону, который посо-
ветовал мне написать эту книгу, оказал мне поддержку на начальном
этапе и просмотрел набросок первых глав. Ян открыл мне многие
секреты ремесла и я всегда буду в долгу перед ним. Дорис Райан
также поддерживала меня с самого начала, и я всегда буду ценить
ее доброту и внимательность. Дэннис Ричи добровольно ответил на
многочисленные вопросы, касающиеся исторического и технического
аспектов системы. Множество людей пожертвовали своим временем и
силами на ознакомление с вариантами рукописи, появление этой кни-
ги во многом обязано высказанным ими подробным замечаниям. Среди
них Дебби Бэч, Дуг Байер, Лэнни Брэндвейн, Стив Барофф, Том Бат-
лер, Рон Гомес, Месат Гандак, Лаура Изрейел, Дин Джегелс, Кейт
Келлеман, Брайан Керниган, Боб Мартин, Боб Митц, Дейв Новиц,
Майкл Попперс, Мэрилин Сэфран, Курт Шиммель, Зуи Спитц, Том Вэ-
ден, Билл Вебер, Лэрри Вэр и Боб Зэрроу. Мэри Фрустак помогала
подготовить рукопись к набору. Я хотел бы также поблагодарить мое
руководство за постоянную поддержку, которую я ощущал на всем
протяжении работы, и коллег за атмосферу, способствовавшую мне
в работе, и за замечательные условия, предоставленные фирмой AT&T
Bell Laboratories. Джон Вейт и персонал издательства
Prentice-Hall оказали самую разнообразную помощь в придании книге
ее окончательного вида. Последней по списку, но не по величине
явилась помощь моей жены, Дебби, оказавшей мне эмоциональную под-
держку, без которой я бы не достиг успеха.
^ ОБЩИЙ ОБЗОР ОСОБЕННОСТЕЙ
СИСТЕМЫ
За время, прошедшее с момента ее появления в 1969 году, сис-
тема UNIX стала довольно популярной и получила распространение на
машинах с различной мощностью обработки, от микропроцессоров до
больших ЭВМ, обеспечивая на них общие условия выполнения прог-
рамм. Система делится на две части. Одну часть составляют прог-
раммы и сервисные функции, то, что делает операционную среду UNIX
такой популярной; эта часть легко доступна пользователям, она
включает такие программы, как командный процессор, обмен сообще-
ниями, пакеты обработки текстов и системы обработки исходных
текстов программ. Другая часть включает в себя собственно опера-
ционную систему, поддерживающую эти программы и функции. В этой
книге дается детальное описание собственно операционной системы.
Основное внимание концентрируется на описании системы UNIX версии
V, распространением которой занимается корпорация AT&T, при этом
рассматриваются интересные особенности и других версий. Приводят-
ся основные информационные структуры и алгоритмы, используемые в
операционной системе и в конечном итоге создающие условия для
функционирования стандартного пользовательского интерфейса.
Данная глава служит введением в систему UNIX. В ней делается
обзор истории ее создания и намечаются контуры общей структуры
системы. В следующей главе содержится более детальная вводная ин-
формация по операционной системе.
1.1 ИСТОРИЯ
В 1965 году фирма Bell Telephone Laboratories, объединив свои
усилия с компанией General Electric и проектом MAC Массачусетско-
го технологического института, приступили к разработке новой опе-
рационной системы, получившей название Multics [Organick 72]. Пе-
ред системой Multics были поставлены задачи - обеспечить
одновременный доступ к ресурсам ЭВМ большого количества пользова-
телей, обеспечить достаточную скорость вычислений и хранение дан-
ных и дать возможность пользователям в случае необходимости сов-
местно использовать данные. Многие разработчики, впоследствии
принявшие участие в создании ранних редакций системы UNIX, учас-
твовали в работе над системой Multics в фирме Bell Laboratories.
Хотя первая версия системы Multics и была запущена в 1969 году на
ЭВМ GE 645, она не обеспечивала выполнение главных вычислительных
задач, для решения которых она предназначалась, и не было даже
ясно, когда цели разработки будут достигнуты. Поэтому фирма Bell
Laboratories прекратила свое участие в проекте.
По окончании работы над проектом Multics сотрудники Исследо-
вательского центра по информатике фирмы Bell Laboratories оста-
лись без "достаточно интерактивного вычислительного средства"
[Ritchie 84a]. Пытаясь усовершенствовать среду программирования,
Кен Томпсон, Дэннис Ричи и другие набросали на бумаге проект фай-
ловой системы, получивший позднее дальнейшее развитие в ранней
версии файловой системы UNIX. Томпсоном были написаны программы,
имитирующие поведение предложенной файловой системы в режиме под-
качки данных по запросу, им было даже создано простейшее ядро
операционной системы для ЭВМ GE 645. В то же время он написал на
Фортране игровую программу "Space Travel" ("Космическое путешест-
вие") для системы GECOS (Honeywell 635), но программа не смогла
удовлетворить пользователей, поскольку управлять "космическим
кораблем" оказалось сложно, кроме того, при загрузке программа
занимала много места. Позже Томпсон обнаружил малоиспользуемый
компьютер PDP-7, оснащенный хорошим графическим дисплеем и имею-
щий дешевое машинное время. Создавая программу "Космическое путе-
шествие" для PDP-7, Томпсон получил возможность изучить машину,
однако условия разработки программ потребовали использования
кросс-ассемблера для трансляции программы на машине с системой
GECOS и использования перфоленты для ввода в PDP-7. Для того,
чтобы улучшить условия разработки, Томпсон и Ричи выполнили на
PDP-7 свой проект системы, включивший первую версию файловой сис-
темы UNIX, подсистему управления процессами и небольшой набор
утилит. В конце концов, новая система больше не нуждалась в под-
держке со стороны системы GECOS в качестве операционной среды
разработки и могла поддерживать себя сама. Новая система получила
название UNIX, по сходству с Multics его придумал еще один сот-
рудник Исследовательского центра по информатике Брайан Керниган.
Несмотря на то, что эта ранняя версия системы UNIX уже была
многообещающей, она не могла реализовать свой потенциал до тех
пор, пока не получила применение в реальном проекте. Так, для то-
го, чтобы обеспечить функционирование системы обработки текстов
для патентного отдела фирмы Bell Laboratories, в 1971 году систе-
ма UNIX была перенесена на ЭВМ PDP-11. Система отличалась неболь-
шим объемом: 16 Кбайт для системы, 8 Кбайт для программ пользова-
телей, обслуживала диск объемом 512 Кбайт и отводила под каждый
файл не более 64 Кбайт. После своего первого успеха Томпсон соб-
рался было написать для новой системы транслятор с Фортрана, но
вместо этого занялся языком Би (B), предшественником которого
явился язык BCPL [Richards 69]. Би был интерпретируемым языком со
всеми недостатками, присущими подобным языкам, поэтому Ричи пере-
делал его в новую разновидность, получившую название Си (C) и
разрешающую генерировать машинный код, объявлять типы данных и
определять структуру данных. В 1973 году система была написана
заново на Си, это был шаг, неслыханный для того времени, но имев-
ший огромный резонанс среди сторонних пользователей. Количество
машин фирмы Bell Laboratories, на которых была инсталлирована
система, возросло до 25, в результате чего была создана группа по
системному сопровождению UNIX внутри фирмы.
В то время корпорация AT&T не могла заниматься продажей
компьютерных продуктов в связи с соответствующим соглашением,
подписанным ею с федеральным правительством в 1956 году, и расп-
ространяла систему UNIX среди университетов, которым она была
нужна в учебных целях. Следуя букве соглашения, корпорация AT&T
не рекламировала, не продавала и не сопровождала систему. Несмот-
ря на это, популярность системы устойчиво росла. В 1974 году
Томпсон и Ричи опубликовали статью, описывающую систему UNIX, в
журнале Communications of the ACM [Thompson 74], что дало еще
один импульс к распространению системы. К 1977 году количество
машин, на которых функционировала система UNIX, увеличилось до
500, при чем 125 из них работали в университетах. Система UNIX
завоевала популярность среди телефонных компаний, поскольку обес-
печивала хорошие условия для разработки программ, обслуживала ра-
боту в сети в режиме диалога и работу в реальном масштабе времени
(с помощью системы MERT [Lycklama 78a]). Помимо университетов,
лицензии на систему UNIX были переданы коммерческим организациям.
В 1977 году корпорация Interactive Systems стала первой организа-
цией, получившей права на перепродажу системы UNIX с надбавкой к
цене за дополнительные услуги (*),
(*) Организации, получившие права на перепродажу с надбавкой к
цене за дополнительные услуги, оснащают вычислительную сис-
тему прикладными программами, касающимися конкретных облас-
тей применения, стремясь удовлетворить требования рынка. Та-
кие организации чаще продают прикладные программы, нежели
операционные системы, под управлением которых эти программы
работают.
которые заключались в адаптации системы к функционированию в
автоматизированных системах управления учрежденческой
деятельностью. 1977 год также был отмечен "переносом" системы
UNIX на машину, отличную от PDP (благодаря чему стал возможен
запуск системы на другой машине без изменений или с небольшими
изменениями), а именно на Interdata 8/32.
С ростом популярности микропроцессоров другие компании стали
переносить систему UNIX на новые машины, однако ее простота и яс-
ность побудили многих разработчиков к самостоятельному развитию
системы, в результате чего было создано несколько вариантов ба-
зисной системы. За период между 1977 и 1982 годом фирма Bell
Laboratories объединила несколько вариантов, разработанных в кор-
порации AT&T, в один, получивший коммерческое название UNIX вер-
сия III. В дальнейшем фирма Bell Laboratories добавила в версию
III несколько новых особенностей, назвав новый продукт UNIX вер-
сия V (**),
(**) А что же версия IV ? Модификация внутреннего варианта систе-
мы получила название "версия V".
и эта версия стала официально распространяться корпорацией
AT&T с января 1983 года. В то же время сотрудники
Калифорнийского университета в Бэркли разработали вариант
системы UNIX, получивший название BSD 4.3 для машин серии VAX и
отличающийся некоторыми новыми, интересными особенностями.
Основное внимание в этой книге концентрируется на описании
системы UNIX версии V, однако время от времени мы будем касаться
и особенностей системы BSD.
К началу 1984 года система UNIX была уже инсталлирована приб-
лизительно на 100000 машин по всему миру, при чем на машинах с
широким диапазоном вычислительных возможностей - от микропроцес-
соров до больших ЭВМ - и разных изготовителей. Ни о какой другой
операционной системе нельзя было бы сказать того же. Популярность
и успех системы UNIX объяснялись несколькими причинами:
* Система написана на языке высокого уровня, благодаря чему ее
легко читать, понимать, изменять и переносить на другие машины.
По оценкам, сделанным Ричи, первый вариант системы на Си имел
на 20-40 % больший объем и работал медленнее по сравнению с ва-
риантом на ассемблере, однако преимущества использования языка
высокого уровня намного перевешивают недостатки (см. [Ritchie
78b], стр. 1965).
* Наличие довольно простого пользовательского интерфейса, в кото-
ром имеется возможность предоставлять все необходимые пользова-
телю услуги.
* Наличие элементарных средств, позволяющих создавать сложные
программы из более простых.
* Наличие иерархической файловой системы, легкой в сопровождении
и эффективной в работе.
* Обеспечение согласования форматов в файлах, работа с последова-
тельным потоком байтов, благодаря чему облегчается чтение
прикладных программ.
* Наличие простого, последовательного интерфейса с периферийными
устройствами.
* Система является многопользовательской, многозадачной; каждый
пользователь может одновременно выполнять несколько процессов.
* Архитектура машины скрыта от пользователя, благодаря этому об-
легчен процесс написания программ, работающих на различных кон-
фигурациях аппаратных средств.
Простота и последовательность вообще отличают систему UNIX и
объясняют большинство из вышеприведенных доводов в ее пользу.
Хотя операционная система и большинство команд написаны на
Си, система UNIX поддерживает ряд других языков, таких как Форт-
ран, Бейсик, Паскаль, Ада, Кобол, Лисп и Пролог. Система UNIX мо-
жет поддерживать любой язык программирования, для которого имеет-
ся компилятор или интерпретатор, и обеспечивать системный
интерфейс, устанавливающий соответствие между пользовательскими
запросами к операционной системе и набором запросов, принятых в
UNIX.
^ 1.2 СТРУКТУРА СИСТЕМЫ
На Рисунке 1.1 изображена архитектура верхнего уровня системы
UNIX. Технические средства, показанные в центре диаграммы, выпол-
няют функции, обеспечивающие функционирование операционной систе-
мы и перечисленные в разделе 1.5. Операционная система взаимо-
действует с аппаратурой непосредственно (***),
(***) В некоторых реализациях системы UNIX операционная система
взаимодействует с собственной операционной системой, кото-
рая, в свою очередь, взаимодействует с аппаратурой и выпол-
няет необходимые функции по обслуживанию системы. В таких
реализациях допускается инсталляция других операционных
систем с загрузкой под их управлением прикладных программ
параллельно с системой UNIX. Классическим примером подобной
реализации явилась система MERT [Lycklama 78a]. Более новым
примером могут служить реализации для компьютеров серии IBM
370 [Felton 84] и UNIVAC 1100 [Bodenstab 84].
обеспечивая обслуживание программ и их независимость от
деталей аппаратной конфигурации. Если представить систему
состоящей из пластов, в ней можно выделить системное ядро,
изолированное от пользовательских
----------T----------------------------------┐
│ │ Другие прикладные программы │
│ -----+-------T--------T-------T----┐ │
│ │ cpp│ nroff │ sh │ who │ │ │
│ │ +-------+--------+-------+ a. │ │
│ +----+ Ядро │out │ │
│ │ │ ---------------┐ │ │ │
│ │comp│ │ │ +----+ │
│ │ │ │ Технические │ │ │ │
│ cc +----+ │ │ │date│ │
│ │ │ │ средства │ │ │ │
│ │ as │ │ │ +----+ │
│ │ │ L--------------- │ │ │
│ +----+ │ │ │
│ │ +-------T--------T-------+ wc │ │
│ │ ld │ vi │ ed │ grep │ │ │
│ L----+-------+--------+-------+----- │
│ │ Другие прикладные программы │
L---------+-----------------------------------
Рисунок 1.1. Архитектура системы UNIX
программ. Поскольку программы не зависят от аппаратуры, их легко
переносить из одной системы UNIX в другую, функционирующую на
другом комплексе технических средств, если только в этих програм-
мах не подразумевается работа с конкретным оборудованием. Напри-
мер, программы, расчитанные на определенный размер машинного сло-
ва, гораздо труднее переводить на другие машины по сравнению с
программами, не требующими подобных установлений.
Программы, подобные командному процессору shell и редакторам
(ed и vi) и показанные на внешнем по отношению к ядру слое, взаи-
модействуют с ядром при помощи хорошо определенного набора обра-
щений к операционной системе. Обращения к операционной системе
понуждают ядро к выполнению различных операций, которых требует
вызывающая программа, и обеспечивают обмен данными между ядром и
программой. Некоторые из программ, приведенных на рисунке, в
стандартных конфигурациях системы известны как команды, однако на
одном уровне с ними могут располагаться и доступные пользователю
программы, такие как программа a.out, стандартное имя для испол-
няемого файла, созданного компилятором с языка Си. Другие прик-
ладные программы располагаются выше указанных программ, на верх-
нем уровне, как это показано на рисунке. Например, стандартный
компилятор с языка Си, cc, располагается на самом внешнем слое:
он вызывает препроцессор для Си, ассемблер и загрузчик (компонов-
щик), т.е. отдельные программы предыдущего уровня. Хотя на рисун-
ке приведена двухуровневая иерархия прикладных программ, пользо-
ватель может расширить иерархическую структуру на столько
уровней, сколько необходимо. В самом деле, стиль программирова-
ния, принятый в системе UNIX, допускает разработку комбинации
программ, выполняющих одну и ту же, общую задачу.
Многие прикладные подсистемы и программы, составляющие верх-
ний уровень системы, такие как командный процессор shell, редак-
торы, SCCS (система обработки исходных текстов программ) и пакеты
программ подготовки документации, постепенно становятся синонимом
понятия "система UNIX". Однако все они пользуются услугами прог-
рамм нижних уровней и в конечном счете ядра с помощью набора об-
ращений к операционной системе. В версии V принято 64 типа обра-
щений к операционной системе, из которых немногим меньше половины
используются часто. Они имеют несложные параметры, что облегчает
их использование, предоставляя при этом большие возможности поль-
зователю. Набор обращений к операционной системе вместе с реали-
зующими их внутренними алгоритмами составляют "тело" ядра, в свя-
зи с чем рассмотрение операционной системы UNIX в этой книге сво-
дится к подробному изучению и анализу обращений к системе и их
взаимодействия между собой. Короче говоря, ядро реализует функ-
ции, на которых основывается выполнение всех прикладных программ
в системе UNIX, и им же определяются эти функции. В книге часто
употребляются термины "система UNIX", "ядро" или "система", одна-
ко при этом имеется ввиду ядро операционной системы UNIX, что и
должно вытекать из контекста.
^ 1.3 ОБЗОР С ТОЧКИ ЗРЕНИЯ ПОЛЬЗОВАТЕЛЯ
В этом разделе кратко рассматриваются главные детали системы
UNIX, в частности файловая система, среда выполнения процессов и
элементы структурных блоков (например, каналы). Подробное иссле-
до
еще рефераты
Еще работы по разное
Реферат по разное
Г. Ульяновск, 2011
17 Сентября 2013
Реферат по разное
Реферат по курсу: Синергетические Системы По теме: ЭВМ > Интерфейс
17 Сентября 2013
Реферат по разное
Новосельцева Г. Д. Анатомия и физиология человека
17 Сентября 2013
Реферат по разное
Финансовая политика государства и механизм ее реализации Содержание
17 Сентября 2013