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

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

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

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

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