Многоуровневая архитектура
Многоуровневая архитектура появилась как ответ на ограничения монолитной архитектуры в плане расширяемости, переносимости и совместимости. Основная идея многоуровневой архитектуры состоит в следующем:
1. Полная функциональность операционной системы разделяется на уровни, например уровень управления аппаратурой, уровень управления памятью, уровень файловой системы, уровень управления процессами и т.п.
2. Для каждого уровня определяются интерфейс взаимодействия, т.е. некоторый набор правил, согласно которым следует обращаться за услугами данного уровня.
3. Взаимодействие уровней строится таким образом, что каждый уровень может обращаться за услугами только к соседнему нижележащему уровню через его интерфейс.
4. Внутренние структуры данных каждого уровня не доступны другим уровням, а реализации процедур уровня скрыты и не зависят от реализаций процедур внутри других уровней.
Обязательным условием для разбиения функциональности на уровни является взаимодействие только между соседними уровнями. В многоуровневых системах запрещаются прямые обращения к любым уровням, минуя соседний уровень
Многоуровневая архитектура предполагает взаимодействие между уровнями исключительно через их интерфейсы, при этом внутренняя реализация уровней скрыта от других уровней. Это позволяет в случае необходимости изменять внутренние реализации процедур уровня на более эффективные. Можно даже полностью заменить весь уровень, требуется только обеспечить стандартный интерфейс взаимодействия с другими уровнями.
Одной из первых операционных систем, разработанных на основе многоуровневой архитектуры, стала операционная система THE, разработанная профессором Дейк-строй и его студентами в 1968 году. Операционная система THE имела 6 уровней, пронумерованных от 0 до 5:
Уровень 0. Этот уровень выполнял распределение ресурсов процессора и переключал процессы по истечению кванта времени или при возникновении прерывания.
Уровень 1. Этот уровень осуществлял управление виртуальной памятью.
Уровень 2. Этот уровень обеспечивал каждый запущенный процесс собственной консолью, т.е. организовывал виртуальные терминалы.
Уровень 3. Этот уровень осуществлял управление средствами ввода-вывода и предоставлял вышележащим уровням аппаратно независимые средства ввода-вывода. Кроме того, третий уровень осуществлял буферизацию ввода-вывода, т.е. обеспечивал кэширование.
Уровень 4. На этом уровне выполнялись пользовательские процессы, которые обеспечивались аппаратно независимыми услугами со стороны нижележащих уровней операционной системы.
Уровень 5. На этом уровне выполнялся процесс системного администратора.
В последующем многоуровневая архитектура получила очень широкое распространение. На ее базе были реализованы весьма сложные операционные системы, которые смогли удержаться на рынке в течение длительного времени. Например, на базе многоуровневой архитектуры построена широко распространенная операционная система UNIX.
Главное преимущество многоуровневой архитектуры перед монолитной архитектурой проявляются не столько на этапе начальной разработки, сколько на этапе сопровождения операционной системы. При использовании многоуровневой архитектуры, для внесения новой функциональности в операционную систему достаточно внести изменения только в код отдельного уровня, при этом все остальные уровни могут быть оставлены без изменений. При переносе операционной системы на другую аппаратную платформу, аппаратно зависимый уровень может быть просто заменен.Однако, не смотря на видимые отличия, многоуровневая архитектура является прямым развитием монолитной архитектуры, в которую просто введена более четкая структуризация.
Классическая многоуровневая архитектура в наиболее современных операционных системах вытесняется архитектурой типа клиент-сервер.