Реферат по предмету "Разное"


The design of the unix operating system by Maurice J

Maurice J. Bach Архитектура Операционной СИСТЕМЫ UNIXTHE 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 ПРИОСТАНОВКА ВЫПОЛНЕНИЯ ...........................1826.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 РАСПРЕДЕЛЕННАЯ МОДЕЛЬ БЕЗ ПЕРЕДАТОЧНЫХ ПРОЦЕССОВ .42913.5 ВЫВОДЫ ...........................................430 13.6 УПРАЖНЕНИЯ .......................................431ПРИЛОЖЕНИЕ - СИСТЕМНЫЕ ОПЕРАЦИИ ...........................434 БИБЛИОГРАФИЯ ..............................................454 АЛФАВИТНЫЙ УКАЗАТЕЛЬ ......................................458ПРЕДИСЛОВИЕВпервые система UNIX была описана в 1974 году в статье КенаТомпсона и Дэнниса Ричи в журнале "Communications of the ACM"[Thompson 74]. С этого времени она получила широкое распростране-ние и завоевала широкую популярность среди производителей ЭВМ,которые все чаще стали оснащать ею свои машины. Особой популяр-ностью она пользуется в университетах, где довольно часто участ-вует в исследовательском и учебном процессе. Множество книг и статей посвящено описанию отдельных частейсистемы; среди них два специальных выпуска "Bell System TechnicalJournal" за 1978 год [BSTJ 78] и за 1984 год [BSTJ 84]. Во многихкнигах описывается пользовательский интерфейс, в частности ис-пользование электронной почты, подготовка документации, работа скомандным процессором Shell; в некоторых книгах, таких как "TheUNIX Programming Environment" [Kernighan 84] и "Advanced UNIXProgramming" [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&TBell 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, она не обеспечивала выполнение главных вычислительныхзадач, для решения которых она предназначалась, и не было дажеясно, когда цели разработки будут достигнуты. Поэтому фирма BellLaboratories прекратила свое участие в проекте. По окончании работы над проектом 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 годом фирма BellLaboratories объединила несколько вариантов, разработанных в кор-порации 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, в частности файловая система, среда выполнения процессов иэлементы структурных блоков (например, каналы). Подробное иссле-до


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.