Историческая справка
Историю возникновения операционной системы UNIX часто можно встретить во многих книгах, поэтому здесь она приводится лишь схематично — основные этапы развития изображены на рис. 2.14, взятом из [SALU94].9
Изначально операционная система UNIX была разработана компанией Bell Labs и запущена в эксплуатацию в 1970 году на системе PDP-7. Некоторые сотрудники Bell Labs принимали участие также в работе над системой разделения времени, выполняемой в рамках проекта MAC в Массачусетском технологическом институте. В результате выполнения этого проекта возникла операционная система CTSS, а затем Multics. Хотя часто говорят, что система UNIX — это уменьшенная версия Multics, сами разработчики UNIX утверждали, что на них в большей степени повлияла работа над CTSS [RITC78b]. Тем не менее в системе UNIX воплощено много идей, позаимствованных от Multics.
В результате разработки системы UNIX в компании Bell Labs, а впоследствии — и в других местах, появились различные версии этой операционной системы. Первой значительной вехой стал перенос системы UNIX с PDP-7 на PDP-
11. Это послужило первым указанием на тот факт, что система UNIX может
быть использована в качестве операционной системы на всех компьютерах. Вторым важным этапом развития этой системы стало то, что она была переписана
на языке программирования С. Для того времени это было неслыханно. Считалось, что такая сложная программа, какой является операционная система, для которой важным параметром является время ее работы, должна быть написана только на языке ассемблера. Реализация на языке С продемонстрировала преимущество языка программирования высокого уровня если не для всех, то для подавляющего большинства фрагментов системного кода. В настоящее время почти все реализации операционной системы UNIX написаны на С.
Ранние версии UNIX были очень популярны в пределах компании Bell Labs. В 1974 году система UNIX была впервые описана в техническом журнале [RITC74], что вызвало к ней большой интерес. Лицензии на UNIX были предоставлены коммерческим организациям и университетам. Версия 6 этой системы, появившаяся в 1976 году, стала первой широко используемой за пределами Bell Labs версией.
Рис. 2.14. История развития системы UNIX
Следующая версия, версия 7, выпущенная в 1978 году, стала прототипом большинства современных систем UNIX. Наиболее важные системы, не являющиеся продуктами фирмы AT&T, были разработаны в Калифорнийском университете в Беркли и получили название UNIX BSD; они эксплуатировались на машинах PDP и VAX. Фирма AT&T доработала и улучшила эти системы. В 1982 году компания Bell Labs скомбинировала несколько вариантов системы UNIX фирмы AT&T в единую систему, которая появилась в продаже под названием UNIX System III. Впоследствии к этой операционной системе было добавлено несколько новых возможностей, в результате чего появилась система UNIX System V.
Описание
Рис. 2.15 дает общее представление об архитектуре системы UNIX. Лежащее в основе аппаратное обеспечение окружено программным обеспечением операционной системы. Операционную систему часто называют системным ядром или просто ядром, чтобы подчеркнуть ее изолированность от пользователя и приложений. Именно эта часть системы UNIX будет представлять для нас интерес в данной книге. Однако UNIX снабжается различными пользовательскими сервисами и интерфейсами, которые рассматриваются как часть этой системы. Их можно сгруппировать в оболочку, интерфейс и компоненты компилятора С (компилятор, ассемблер, загрузчик). Внешний по отношению к этой части системы уровень состоит из приложений пользователя и интерфейса компилятора С.
Рис. 2.15. Общая архитектура системы UNIX
Рис. 2.16 дает более полное представление о системе. Программы пользователя могут вызывать сервисы операционной системы непосредственно либо с помощью библиотечных программ. Интерфейс системных вызовов позволяет программам высших уровней получить доступ к определенным функциям ядра. Нижние уровни операционной системы содержат простые программы, которые непосредственно взаимодействуют с аппаратным обеспечением.
Рис. 2.16. Ядро традиционной системы UNIX [BACH86]
Между этими уровнями находятся компоненты системы; их можно разделить на две основные части, одна из которых относится к управлению процессами, а другая — к вводу-выводу. Подсистема управления процессами отвечает за управление памятью, распределение ресурсов между процессами, диспетчеризацию, синхронизацию и за взаимодействие разных процессов. Файловая система производит обмен данными между памятью и внешними устройствами либо в виде потоков символов, либо в виде блоков с использованием различных драйверов устройств. Поблочная передача данных осуществляется с участием дискового кэша — системного буфера основной памяти, являющегося промежуточным звеном между адресным пространством пользователя и внешним устройством
В этом разделе рассказывается о тех системах UNIX, которые можно назвать традиционными; в [VAHA96] этот термин используется, когда речь идет о System V Release 3 (SVR3), 4.3BSD и более ранних версиях. Ниже приведены общие положения, касающиеся традиционных систем UNIX. Они предназначены для работы на однопроцессорных системах и не обладают достаточной возможностью по защите своих структур данных от одновременного доступа при работе на нескольких процессорах. Их ядра не слишком разносторонни; они поддерживают один тип файловой системы, стратегии распределения ресурсов между процессами и формата исполняемых файлов. Ядро традиционной системы UNIX не является наращиваемым, в нем мало возможностей повторного использования кода. Все это приводило к тому, что при добавлении в очередных версиях UNIX новых возможностей приходилось в больших количествах писать новый код. В результате ядро оказывалось громоздким и немодульным.
Дата добавления: 2016-06-05; просмотров: 1520;