Архитектура операционной системы UNIX

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:43, 30 марта 2015.
Architecture of UNIX operating system.png

Ядро работает в привилегированном режиме. На пользовательском уровне: пользовательские приложения и сервисы (без участия пользователя).

Функции ядра:

  • Управление процессами
  • Управление памятью
  • Реализация файловой системы
  • Обеспечение межпроцессорного взаимодействия

Архитектура ядра в ОС Unix

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

Core architecture on Unix.png

При таком делении при выполнении системных вызовов происходит переключение режимов, что требует время. ОС имеет хорошую производительность, если соотношение прерываний в режиме пользователя к режиму ядра равно 4:1.

Управление процессами в ОС Unix

Планирование процесса основано на смешанном типе: алгоритме квантования и приоритетах. Процессорное время выделяется квантами, а выбор нового процесса основывается на приоритетах, которые являются динамическими (т.е. изменяются в ходе жизни процесса).

Планировщик - на вытесняющей многозадачности. Таймер - аппаратное событие - прерывание - планировщик получает управление.

Работа планировщика в качестве обработчика прерываний:

  • Накопление статистики.
  • Сигнализация о необходимости переключения, если истек квант времени.


Условия переключения контекста:

  • Истечение кванта времени.
  • Процесс завершился.
  • Процесс ушел в состояние ожидания.
  • Процесс остановлен.

Переключение бывает принудительным (истечение кванта времени) и добровольным (переход приложения в состояние ожидания). Приоритет используется для выбора нового процесса. В качестве примера рассмотрим HP Unix.

Реального времени Разделенного времени
POSIX real time HP_UX real time system user
deactivation
-32 ... -1 0 ... 127 127 ... 175 176 ... 251 252 ... 255

Чем больше номер, тем меньше приоритет. При выполнении приоритет понижается (линейный закон), при нахождении в ожидании растет (по экспоненциальному закону).

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

Деактивация процесса - данный процесс в никогда не получит управления.

Динамические приоритеты:

The dynamic priority.png

Закон убывания приоритета одинаков для всех приложений, а закон роста индивидуален.

Управление памятью в ОС Unix

Используется сегментно-страничная организация памяти. Реализуется механизм виртуальной памяти. Для 32 разрядной системы виртуальное адресное пространство составляет 4 Гб.

Виртуальное адресное пространство поделено на 4 сегмента:

  • Сегмент кода: 1 Гб.
  • Сегмент данных: 1 Гб.
  • Разделяемый сегмент для процессов: 1 Гб.
  • Разделяемый сегмент для библиотек: 1 Гб.

Загрузка процесса в память - создание процесса.

Стандартный способ (реализован в специальном системном вызове fork()) - посредством него создается процесс. 0-й процесс порождается ядром самостоятельно.

Общий вид создания:

  1. Ядро проверяет, достаточно ли ресурсов для создания процесса.
  2. Создается структура, описывающая процесс (поля структуры частично записываются; например: определяется идентификатор, который записывается в дескриптор). Идентификатор возвращается родителю.
  3. В контекст нового процесса копируется контекст родительского процесса. Далее производятся некоторые модификации процесса (установка счетчиков). Если в родительском процессе открыт файл, потомок знает об этом.
  4. Определяется бинарная часть и загружается первая страница.
  5. Процесс становится в очередь процессов, готовых к выполнению.

Состояние процесса в ОС Unix

State of the process on Unix.png

Новый процесс создается посредством fork().

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

Если процесс ожидает обработки аппаратной части, то переход в состояние ожидания в памяти. Если процесс дождался, то готовность в памяти.

Если процесс нужно выгрузить, то он будет переведен в ожидание на диске. Из ожидания на диске - на готовность на диске. Вся выгрузка на диск, когда не хватает памяти.

Стоп - замораживаем (размораживаем) состояние.

Завершение процесса происходит 2 способами:

  • выполнение процессом вызова exit() - добровольный способ
  • kill -9 - принудительный способ, освобождает ресурсы, которые занимал процесс.

Зомби - процесс исключен, но ресурсы на него не освобождены.

Управление выгрузкой страниц в Unix ситсемах (двурукий алгоритм)

ОС хранит битовую таблицу, где хранится флаг, обозначающий было ли обращение к странице или нет (1 или 0). По умолчанию он равен 0.

Двурукий алгоритм – работаем в 2 прохода по таблицам. Первый проход: просмотр таблицы страницы, сбрасываются в 0 биты обращения. Второй проход: просмотр - те страницы, в которых флаг установлен в 0, выгружаются на диск. Алгоритм работает в системе не постоянно.

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

В системе создаются 3 уровня, с которыми связаны 3 возможных исхода:

  • Свободная память увеличивается за счет выгрузки и алгоритм отключается (уровень 1-2).
  • Постоянная выгрузка страниц (< 2 уровня)
  • Деактивация процесса – планировщик ОС выбирает нужные для деактивации процессы. Процессу присваивается приоритет из самой правой шкалы (252 – 255). В нагруженной системе они не будут получать процессорное время. Не будет обращения к этим страницам. (< 3 уровня и ее граница).

Пороговые значения для системы с оперативной памятью 2 Гб:

1 уровень – 64 Мб
2 уровень – 12 Мб
3 уровень – 5 Мб.

См. также