
- •Введение
- •1 Типы архитектур ядер операционных систем
- •1.1 Монолитное ядро
- •1.2 Модульное ядро
- •1.3 Микроядро
- •1.4 Другие типы архитектур
- •2 Обзор рассматриваемых ядер
- •2.1 Linux
- •2.2 FreeBsd
- •2.3 Hurd
- •3 Сравнение ядер
- •3.1 Управление процессами
- •3.1.1 Linux
- •3.1.2 FreeBsd
- •3.1.3 Hurd
- •3.2 Управление памятью
- •3.2.1 Linux
- •3.2.2 FreeBsd
- •3.2.3 Hurd
- •3.3 Поддержка нескольких файловых систем
- •3.3.1 Linux
- •3.3.2 FreeBsd
- •3.4 Итоги сравнения ядер
- •Заключение
- •Список использованных источников
1.4 Другие типы архитектур
Помимо вышеупомянутых типов архитектур ядер существуют еще некоторые типы, которые меньше используются на практике. Рассмотрим их ниже.
Наноядро — архитектура ядра операционной системы компьютеров, в рамках которой крайне упрощённое и минималистичное ядро выполняет лишь одну задачу — обработку аппаратных прерываний, генерируемых устройствами компьютера. После обработки прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о результатах обработки (например, полученные с клавиатуры символы) вышележащему программному обеспечению при помощи того же механизма прерываний.
Экзоядро — ядро операционной системы компьютеров, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов.
В традиционных операционных системах ядро предоставляет не только минимальный набор сервисов, обеспечивающих выполнение программ, но и большое количество высокоуровневых абстракций для использования разнородных ресурсов компьютера: оперативной памяти, жестких дисков, сетевых подключений. В отличие от них, ОС на основе экзоядра предоставляет лишь набор сервисов для взаимодействия между приложениями, а также необходимый минимум функций, связанных с защитой: выделение и высвобождение ресурсов, контроль прав доступа, и т. д. Экзоядро не занимается предоставлением абстракций для физических ресурсов — эти функции выносятся в библиотеку пользовательского уровня (так называемую libOS).
Основная идея операционной системы на основе экзоядра состоит в том, что ядро должно выполнять лишь функции координатора для небольших процессов, связанных только одним ограничением — экзоядро должно иметь возможность гарантировать безопасное выделение и освобождение ресурсов оборудования. В отличие от ОС на основе микроядра, ОС, базирующиеся на экзоядре, обеспечивают гораздо большую эффективность за счет отсутствия необходимости в переключении между процессами при каждом обращении к оборудованию.
2 Обзор рассматриваемых ядер
Основной задачей данной работы является сравнение архитектуры ядер Linux,FreeBSDиHURD. Сравнение архитектуры ядер будет вестись по набору функций, которое выполняет ядро, а также по способам реализации этих функций. Ниже представлен краткий обзор сравниваемых ядер.
2.1 Linux
Linux — UNIX-совместимое ядро операционной системы, разработка которого была начата финским студентом Линусом Торвальдсом в 1991 году.
Ядро Linux поддерживает многозадачность, виртуальную память, динамические библиотеки, отложенную загрузку, производительную систему управления памятью и многие сетевые протоколы.
На сегодняшний день Linux — монолитное ядро с поддержкой загружаемых модулей. В отличие от обычных монолитных ядер, драйверы устройств легко собираются в виде модулей и загружаются или выгружаются во время работы системы.
Ядро Linux можно разделить на три больших уровня. Наверху располагается интерфейс системных вызовов, который реализует базовые функции, например, чтение и запись. Ниже интерфейса системных вызовов располагается код ядра, точнее говоря, архитектурно-независимый код ядра. Этот код является общим для всех процессорных архитектур, поддерживаемых Linux. Еще ниже располагается архитектурно-зависимый код, образующий т.н. BSP (Board Support Package - пакет поддержки аппаратной платформы). Этот код зависит от процессора и платформы для конкретной архитектуры. Основные компоненты ядра Linux можно увидеть на рисунке 1.
Рисунок 1 – Архитектура ядра Linux