Функциональные компоненты 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). Минимальный набор для функционирования – микроядро и сервер процессов – бездисковая ОС.

Все микроядерные ОС – сетевые по своей сути. Это вытекает из модели функционирования. Это возможно за счет универсального механизма передачи сообщений и для локальных и для сетевых средств. Повышается надежность системы.

Основная задача микроядра – реализация удобного и эффективного вызова одного процесса из другого (выполнение задачи одного процесса, средствами другого).

Система легко масштабируется. Системные приложения можно дописывать на языке высокого уровня.

Эффективность определяется составом базовых механизмов микроядра.

Наши рекомендации