Режим ядра - kernel mode или привилегированный режим для работы операционной системы.



Пользовательский режим (user mode) для работы пользовательских приложений.

Архитектура ОС, основанная на привилегированном ядре и пользовательском режиме считается классической.

В классической архитектуре все функции ядра ОС выполняются в

привилегированном режиме, а некоторые вспомогательные функции

ОС выполняются в виде приложений (системных утилит или

обрабатывающих программ) в пользовательском режиме.

Ее использует Windows NT, Uniх / Linux, Mac OS X.

Аналогичный подход используется в популярной ОС маршрутизато-

ров – Cisco IOS ( internetwork operating system).

В ОС MS DOS модули ядра msdos.sys и io.sys, командный

интерпретатор command.com, системные утилиты и

приложения работают в одном режиме, что не соответст-

вует условиям надежной работы системы.

Режим ядра

 Модули ОС работают в режиме ядра в привилегированном режиме и резидентны в ОЗУ.

 В режиме ядра доступны  все команды процессора, вся имеющаяся память и любые регистры.

Код ядра имеет доступ к областям памяти всех приложений, но сам от них полностью защищен.

Для поддержки режима ядра процессор должен иметь команды

переключения задач, управления ввода - вывода, управления

механизмами распределения и защиты памяти (управления адресны-

ми пространствами), прерываний.

Код ОС выполняется в этом режиме.

При выполнении кода операционной системы процессор переключается в режим ядра.

Пользовательский режим

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

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

В пользовательском режиме доступ к регистрам и памяти ограничен.

Приложение не сможет работать с памятью за пределами набора адресов, установленного для него операционной системой, или обращаться напрямую к регистрам устройств.

В нем нет и непосредственного доступа к аппаратуре, доступа к виртуальной памяти другой программы, нет разрешения на аппаратные операции ввода – вывода, IN, OUT и др.

Они выполняются только вызовами ОС.

Операции функций ядра приложениямпользователей непосредственно недоступны.

Приложение  может к ним обратиться только через системные вызовы (типа Create, Open,…) по технологии клиент – сервер.

 

При создании объектов ядра(Create)вызовы возвращают программе дескрипторы  объекта – это адрес (или индекс) в таблице описателей.

Пустая таблица дескрипторов создается при инициализации процессов.

Используется объектами ядра.

Но как только поток вызывает функцию создания объекта ядра, происходит заполнение таблицы.

Функция ищет в таблице дескрипторов процесса и считывает адрес нужного объекта ядра.

При вызове функции с аргументом дескриптора объекта ей передается значение, возвращенное вызовом Create.

Совместно используемый объект ядра удаляется после отказа от  него всех процессов (при счетчике числа процессов равном 0).

Системный вызов переводит процессор в привилегированный режим и при возврате – обратный процесс.

Таким образом, для переключения  из пользовательского режима в режим ядра существует единственный способ – с помощью системных вызовов, реализуемых операционной системой.

Первоначально в привилегированном режиме ядра выполнялся весь код ОС.

 

Такой  монолитный подход имел недостатки с точки зрения открытости, разработки программ, надежности или легкости обслуживания.

Более удобен вариант построения операционной системы, называемый микроядерным.

Это альтернатива классической архитектуре построенияОС.

Микроядерная архитектура операционной системы делит ее на две части:

1. Одна часть операционной системы содержит небольшое микроядро (micro-kernel), код которого выполняется в привилегированном режиме ядра.

Оно защищено от остальных частей ОС и приложений и выполняет базовые (основные) функции ОС.

Базовые функции ядра современных многозадачных ОС обычно включают:

- управление процессами (процессорным временем);

- управлению виртуальной памятью;

- управление прерываниями.

- управление задачами и переключением контекстов задач;

- управлению УВВ (аппаратным вводом - выводом );

- загрузка/выгрузка страниц и др.

- пересылке сообщений;

- создание объектов ядра.

Обслуживание аппаратного ввода – вывода в защищенном режиме выполняется в привилегированном режиме ядра.

Для получения возможностей выполнения операций ввода-вывода текущий процесс должен иметь уровень привилегийRPLне ниже уровня привилегий, указанного в поле IOPL(input output privilege level) регистра флагов FLAGS.

Если это условие не соблюдено, то возможности доступа к порту устройства ввода – вывода определяются соответствующим битом битовой карты разрешения ввода / вывода, хранимой в сегменте состояния задачи TSS.

Карта ввода-вывода TSS состоит из 64 кбит (8 кбайт ) для описания доступа к 65536 портам.

Значение бита, равное нулю, разрешает операцию ввода-вывода с соответствующим портом.

Для них используется область памяти, называемая отображением ввода - вывода на память. Для этой области запрещено кэширование.

В режиме ядра работают и диспетчер ввода – вывода и драйверы, к которым может обращаться диспетчер ввода – вывода.

Практически микроядро должно содержатьтолько код:


Дата добавления: 2018-08-06; просмотров: 1324; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!