Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
4
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать

1.3 Архитектура unix

Двухуровневая модель системы представлена на Рисунок 1.1 - Модель системы UNIX.

Рисунок 1.1 - Модель системы UNIX

В центре находится ядро (kernel). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенности ее архитектуры. Ядро предоставляет набор услуг прикладным программам. К услугам ядра относятся операции ввода/вывода (открытия, чтения, записи и управления файлами), создания и управления процессами, их синхронизации и межпроцессорного взаимодействия. Все приложения запрашивают услуги ядра посредством системных вызовов.

Второй уровень составляют приложения или задачи, как системные, определяющие функциональность системы, так и прикладные, обеспечивающие пользовательский интерфейс UNIX. Несмотря на внешнюю разнородность приложений, схемы их взаимодействия с ядром одинаковы.

Далее рассмотрим отдельные компоненты ядра системы.

Ядро

Ядро системы обеспечивает базовую функциональность операционной системы:

  • создает процессы и управляет ими;

  • распределяет память;

  • обеспечивает доступ к файлам и периферийным устройствам.

Взаимодействие прикладных задач с ядром происходит посредством стандартного интерфейса системных вызовов. Интерфейс системных вызовов представляет собой набор услуг ядра и определяет формат запросов на услуги. Процесс запрашивает услугу посредством системного вызова определенной процедуры ядра, похожего на обычный вызов библиотечной функции. Ядро от имени процесса выполняет запрос и возвращает процессу необходимые данные. Структура ядра представлена на Рисунок 1.2 - Внутренняя структура ядра UNIX.

Рисунок 1.2 - Внутренняя структура ядра UNIX

Ядро состоит из трех основных подсистем:

  • Файловая подсистема;

  • Подсистема управления процессами и памятью;

  • Подсистема ввода/вывода.

Файловая подсистема

Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным, расположенных на дисковых накопителях, и к периферийным устройствам. Одни и те же функции open(2), read(2), write(2) могут использоваться как при чтении или записи данных на диск, так и при выводе текста на принтер или терминал.

Файловая подсистема контролирует права доступа к файлу, выполняет операции размещения и удаления файла, а также выполняет запись/чтение данных файла. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы (в том числе и доступ к периферийным устройствам), права доступа к файлам определяют привилегии пользователя в системе.

Файловая подсистема обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.

Подсистема управления процессами

Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:

  • Создание и удаление процессов;

  • Распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами;

  • Синхронизацию процессов;

  • Межпроцессорное взаимодействие.

Число активных процессов может превышать число процессоров компьютера, но в каждый конкретный момент времени на каждом процессоре может выполняться только один процесс. Операционная система управляет доступом процессов к вычислительным ресурсам, создавая иллюзию одновременного выполнения нескольких задач.

Специальный модуль ядра, называемый планировщиком процессов (scheduler), разрешает конфликты между процессами в конкуренции за системные ресурсы (процессор, память, устройства ввода/вывода). Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые системные ресурсы. Процесс освобождает процессор, ожидая длительной операции ввода/вывода, или спустя выделенный квант времени. В этом случае планировщик выбирает следующий процесс, имеющий наивысший приоритет, и запускает его на выполнение.

Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. Оперативная память является дорогим ресурсом, и ее не бывает “слишком много”. При недостаточном количестве памяти для всех процессов, ядро перемещает части процессов во вторичную память (в специальную область жесткого диска), освобождая память для выполняющегося процесса. При этом реализуется виртуальная память: процесс выполняется в логическом адресном пространстве, превышающем доступную физическую память. Управление виртуальной памятью является задачей модуля управления памятью.

Модуль межпроцессорного взаимодействия отвечает за уведомление процессов о событиях и обеспечивает обмен данными между процессами.

Подсистема ввода/вывода

Подсистема ввода/вывода выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам (дискам, магнитным лентам, терминалам и т.д.). Она обеспечивает буферизацию данных и взаимодействие с драйверами устройств - специальными модулями ядра, обслуживающими внешние устройства.

Организация ядра

Существует три способа организации ядра

  • Полностью монолитное ядро

  • Модульное монолитное ядро

  • Микроядро

Большинство ядер UNIX монолитны.

Монолитное ядро – большая и сложная программа, включающая все функции. Каждый слой ядра включен в программу и работает в режиме ядра.

Рисунок 1.2 - Структура монолитного ядра операционной системы

В отличие от этого, микроядерные ОС реализуют лишь очень небольшого набора функций в ядре (примитивы синхронизации, примитивный планировщик, механизмы межпроцессного взаимодействия). Несколько системных процессов, работающих поверх ядра, реализуют другие функции: выделение памяти, основной планировщик, драйверы устройств, обработчики системных вызовов.

В микроядерных архитектурах вертикальное распределение функций операционной системы заменяется на горизонтальное.

Рисунок 1.3 - Структура операционной системы с микроядром

Версии микроядер

Mach. (планировщик процессов размещен вне микроядра)

Chorus

Версии микроядерных Ос

Apple Mac OS.

GNU Hurd

OSF-1 компании Open Software Foundation на микроядре Mach

В микроядро помещаются драйверы устройств

MiX компании Chorus Systems

Преимущества

  • Облегчение переносимости

  • упрощает расширение.

  • Освобождение ОП от ненужных системных процессов

  • Компактный интерфейс Микроядра увеличивает шансы получения качественных программ (наличие множества интерфейсов прикладного программирования, не все из которых хорошо документированы, приводит к тому, что невозможно гарантировать правильность программ). Микроядро OSF обеспечивает около 200 системных вызовов, а крохотное микроядро QNS - всего лишь 14.

Однако, микроядра обычно медленнее монолитных из-за явного обмена сообщениями между различными слоями.

Чтобы добиться теоретических преимуществ микроядер без понижения производительности, используют модульную организацию ядра. Модуль – объектный файл, код которого может быть скомпонован с ядром (или отсоединен) на этапе выполнения. В отличие от внешних слоев микроядерных систем, модуль не является отдельным процессом, а работает в режиме ядра от имени текущего процесса, как любая другая статически скомпанованная функция.