Функциональные компоненты Linux
Структура ядра
Аппаратный слой ядра
12. Функции слоёв ядра
· Аппаратный слой + программно-аппаратные средства: машинно-зависимые компоненты ОС.
Задача - ликвидация зависимости верхних слоев от программно-аппаратных средств.
Состав программно-аппаратных средств.
o переход в привилегированный режим
o аппаратное управление привилегиями
o переключение с задачи на задачу, смена контекста
o защита областей памяти, смена страниц памяти, кэширование
o аппаратные схемы организации прерываний (внутренние – генерируемые процессом, внешние / аппаратные – генерируемые периферией и даже шиной) (с контроллером и без него)
· Базовый механизм ядра: слой программных модулей, которые выполнят основные примитивы, необходимые для реализации более сложных функций (программное переключение контекстов, перемещение страниц памяти (диск<->ОЗУ), управление виртуальной памятью, межпроцессных взаимодействий, диспетчеризация прерываний, регистровое управление ПУ).
· Менеджеры, диспетчеры (многослойные): уровень решения стратегических задач управления основными ресурсами системы (и процессами). Задачи планирования ресурсов:
o учет свободных/занятых ресурсов
o задача предоставления ресурсов
Межпроцессные взаимодействия (IPC) – обмен данными, синхронизация.
Каждый процесс работает в строго изолированном адресном пространстве, за рамками работать не может. Посредниками и механизмами передачи являются IPC.
ФС Windows входит в систему ВВ (реализована как драйвер). В Unix – отдельно.
· Интерфейс системных вызовов: взаимодействие с утилитами и приложениями. Это верхний слой ядра. Открытый стандарт – интерфейс прикладного программирования API. Функции API предоставляют доступ к системным ресурсам из приложений в компактной форме, как правило, без учета детальной реализации и размещения этих ресурсов.
Для реализации системных вызовов используются программные прерывания. Эти инструкции позволяют вызвать модуль первичной обработки.
Увеличение количества уровней приведет к увеличению затрат, уменьшение количества уровней – примитивные программы.
· Внутрисистемные задачи – переключение контекстов, загрузка/выгрузка/переключение страниц памяти, обработка прерываний, работа с памятью и др. функции, которые недоступны из приложений.
· Создание прикладной программной среды и поддержка приложений (запросы, системные вызовы).
Функции ядра, которые могут вызываться приложениями, образуют интерфейс системных вызовов. Эти функции должны быть оптимизированы по доступу и по ресурсам. Решение: модули ОС – резидентны (всегда большая их часть в ОЗУ).
Вспомогательные модули
Вспомогательные модули – утилиты, программы, работающие для решения задач управления или сопровождения компонентов системы (например – сжатие данных). Эти программы часто обращаются к ресурсам ОС.
Утилиты – системные программы, предназначенные для выполнения одной или нескольких однотипных функций (входят в ОС).
Система (среда) программирования – часть слоёв ОС (компилятор, компоновщики, отладчики). Middleware – слой ПО, размещённый над ОС (Java-Machine, Virtual Machine, IDE (NetBeans, Eclipse)). Его сервисы ориентированы на эту ОС. Является средство абстрагирования от данной ОС, как ОС является средством абстрагирования от аппаратуры.
Пользовательские интерфейсы
Все эти составляющие обращаются к ядру посредством API. Такие модули загружаются в память только на время их выполнения и называются транзитные.
Могут быть вспомогательные модули, которые осуществляют роль посредника |
Планировщик процессов |
Микроядерные системы
Микроядерные системы:
Клиент-серверная модель в отличие от системных вызовов в многослойных ОС. В ядре минимальная часть функций, реализующих основные системные вызовы.
Состав микроядра:
· Машинно-зависимые модули
· Модули, выполняющие часть базовых функций
· Обработка прерываний
· Управление виртуальной памятью
· Пересылка сообщений
· Управление устройствами ввода/вывода на уровне регистров
Все микроядерные системы работают на основе передачи сообщений.
Минимальное количество переходов при любом запросе – 4. При более далёких запросах больше.
Концепция: микроядро имеет минимальный код, выполняет основные функции. Все остальное – строится как приложения и работает в пользовательском режиме (т.е. менеджеры/диспетчеры ресурсов и т.д.). Эти приложения – системные. Серверы для таких приложений – менеджеры, обеспечивающие вызовы локальных приложений.
Функции микроядра:
· Обработка прерываний
· Некоторые функции управления процессами
· Передача сообщений
· Некоторые функции ввода/вывода
Структура микроядерной ОС:
В привилегированном режиме система находится минимальное время. Все процессы взаимодействуют через ядро, напрямую процессы общаться не могут. Это применяется в системах реального времени (МП находится в привилегированном режиме (в том режиме, в котором нельзя влиять на процессор минимальное время), большая часть времени – user mode).
Модель функционирования – клиент-серверная. Каждый сервер выступает в двух ролях (такой набор серверов характерен для QNX). Минимальный набор для функционирования – микроядро и сервер процессов – бездисковая ОС.
Все микроядерные ОС – сетевые по своей сути. Это вытекает из модели функционирования. Это возможно за счет универсального механизма передачи сообщений и для локальных и для сетевых средств. Повышается надежность системы.
Основная задача микроядра – реализация удобного и эффективного вызова одного процесса из другого (выполнение задачи одного процесса, средствами другого).
Система легко масштабируется. Системные приложения можно дописывать на языке высокого уровня.
Эффективность определяется составом базовых механизмов микроядра.