Базовая архитектура операционной системы. Понятие ядра системы. Классификация операционных систем в зависимости от особенностей архитектуры ядра.
Intel и Интел-совместимые процессоры обеспечивают несколько режимов исполнения кода, а именно 4. Эти режимы можно представить в виде колец защиты, и по ним строится система разграничения доступа:
0 – любые команды процессора
1- Все команды, кроме некоторых
2- Еще ограничения
3- Лишь ограниченный набор команд (не дает изменить важные параметры системы)
На самом деле сейчас используются только два режима: 0 и 3.
Итак, ЯДРО – это код, исполняемый в режиме 0.
А пользовательские программы исполняются в режиме 3.
Архитектуру ОС, основанную на привилегированном ядре и приложениях, выполняемых в пользовательском режиме, называют базовой или классической.
В классической архитектуре модули ОС делятся на 2 группы:
(Модуль– это программа или ее часть, которая имеет логическое обособление и свою функцию и может быть загружена/выгружена в память в процессе работы. Часто представлена в виде отдельного файла или динамически подгружаемой библиотеки).
- модули, выполняющие основные ф-и ОС – ЯДРО
* управление процессами
* памятью
* файлами
* устройствами ввода-вывода и тд
Эти модули нужны часто и должны работать быстро, т.к. определяют производительность системы в целом. Поэтому они резидентны, т.е постоянно находятся в оперативной памяти.
- модули, выполняющие вспомогательные ф-и – обычно транзитны.
Это:
- утилиты – проги, решающие отдельные задачи управления и сопровождения комп системы (сжатие, дефрагментация, форматирование дисков, подготовка данных - блокнот)
- либы процедур и функций (математических ф-й, либа ввода-вывода)
- проги, предоставляющие юзеру доп услуги (игры, калькулятор)
- системные обрабатывающие проги (текстовые и графические редакторы, компиляторы, компоновщики, отладчики);
Вспомогательные модули обращаются к ядру так же как и обычные проги – через системные вызовы.
Работа системы с привилегированным ядром замедляется за счет необходимости переключения туды-сюды при выполнении системных вызовов.
В некоторых ОС (например, в чисто серверной Novell NetWare) вся работа идет в режиме ядра. Но там нет прикладных процессов, соответственно, не нужна защита, и система работает быстро и хорошо.
По архитектуре ядра системы можно разделить на:
- 1) Монолитная архитектура ядра
Ядро здесь – это цельная программа, она может состоять из множества файлов, которые могут выгружаться и загружаться из памяти (правда, это нежелательно), но программа все же одна. Ядро неструктурированно, и при обращении к системе происходит переключение из пользовательского режима в режим ядра.
Плюсы:
- максимальная производительность
- высокая скорость (все внутри одной программы)
Минусы:
- объемное ядро -> экспоненциальная зависимость – снижается надежность.
Эта архитектура (или ее элементы) используется во всех современных ОС.
-2) Слоистая архитектура ядра
Наиболее распространена. Предложена Дейкстра.
В ней ПО делится на слои, общение между которыми происходит только через межслойный интерфейс. Каждый слой формирует интерфейс для вышележащего слоя.
Плюсы:
- инкапсуляция, сокрытые реализации (слои можно независимо модифицировать, главное – не затрагивать АПИ)
- разработкатакой системы удобна и управляема
- выше ее надежность(объемность снижается)
- выше гибкость
Минусы
- снижается производительность(обращение прикладной программы идет последовательно по слоям)
Слои (снизу вверх)
- Машинно-зависимые компоненты (то, что выполняется непосредственно железом);
- Базовые механизмы ядра (самые примитивные операции: переключение контекстов, диспетчеризация прерываний, подкачка страниц);
- Менеджеры ресурсов (управляют основными ресурсами компа: файловой системой, процессами, вводом-выводом)
- Интерфейс системных вызовов – АПИ, обслуживает системные вызовы.
-3) Микроядерная архитектура:
Принцип – минимизировать ядро. Построена по принципу клиент-серверной организации.
· То, что отвечает за работу аппаратуры + базовые операции = ЯДРО
· Менеджеры ресурсов и все прочее вынесены за его пределы в виде приложений, работающих в пользовательском режиме. Они обслуживают прикладные программы и устроены так, что могут принимать запросы и отвечать на них, посылая сообщения.
Плюсы:
- ядро превратилось в микроядро, это повышает надежность.
- гибкая структура, легко расширяется. Очень удобна для распределенных систем.
- надежная система (все серверы работают в своем адресном пространстве + крах одного сервера не затрагивает работу других)
- поддерживает распределенные вычисления
- хорошая переносимость(весь машинно зависимый код изолирован в микроядре)
Минусы:
- Вместо одного переключения – 2 – снижается производительность.