Описание

 

Рис. 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 новых возможностей приходи­лось в больших количествах писать новый код. В результате ядро оказыва­лось громоздким и немодульным.