Лекция №2 Архитектура и Ядро ОС. Ядро операционной системы Ядро
Скачать 56.24 Kb.
|
Ядро операционной системы Ядро́ (англ. kernel) — центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов. Как основополагающий элемент ОС, ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для их работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов межпроцессного взаимодействия и обращения приложений к системным вызовам ОС. Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации. Ядро и вспомогательные модули ОС Общий подход к структурированию - разделение модулей на две группы: Ядро - модули, выполняющие основные функции Вспомогательные модули Модули ядра выполняют базовые функции управления процессами, памятью, устройствами ввода-вывода и т.д. Ядро занимается переключением контекстов, загрузкой выгрузкой страниц, обработкой прерываний. Приложения могут обращаться к ядру через API. Функции ядра используются наиболее часто, и от скорости их работы зависит общее быстродействие системы. Для обеспечения высокой скорости ОС все модули ядра или большая их часть постоянно находятся в ОЗУ (являются резидентами). Обычно ядро оформляется в виде программного модуля специального формата, отличного от пользовательских приложений. Одно из определяющих свойств ядра работа в привилегированном режиме. Ядро в привилегированном режиме ОС должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера. Обеспечить привилегии невозможно без специальных средств аппаратной поддержки. Аппаратура должна поддерживать минимум два режима: Пользовательский (usermode); Режим ядра (привилегированный) (kernelmode) . Как правило, ядро ОС работает в привилегированном режиме. Иногда это свойство служит основой определения ядра ОС. Приложение ставится в подчиненное положение за счет запрета для них выполнения в пользовательском режиме некоторых критичных команд (инструкций) связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Выполнение некоторых команд запрещается безусловно (переход в привилегированный режим).Другие команды запрещается выполнять при определенных условиях (команды ввода-вывода могут быть запрещены при доступе к контроллеру HDD, который хранит данные ОС и всех приложений, но разрешены при доступе к последовательному порту, выделенному в монопольное владение определенного приложения). Условия разрешения выполнения критичных команд находится под контролем ОС, и этот контроль обеспечивается за счет набора команд, безусловно запрещенных для пользовательского режима. Говорят, что каждое приложение работает в своем адресном пространстве (ОС не дает приложению менять данные других приложений). Поскольку ядро сложный многофункциональный комплекс, то многослойный подход обычно распространяется и на структуру ядра. Ядро может состоять из следующих слоев: Средства аппаратной поддержки ОС (часть функций ОС может быть реализована аппаратно). Машинно-зависимы компоненты - экранирует вышележащий слой от особенностей аппаратуры. Для WinNT этот слой HardwareAbstractionLayer (HAL). Базовые механизмы ядра - примитивные операции ядра (переключение контекстов процессора, диспетчеризацию прерываний, перемещение страниц из памяти на диск и обратно и т.д. На данном уровне не принимаются решения о распределении ресурсов. Этим занимаются верхние слои. А этот слой исполнительный. Менеджеры ресурсов - Слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами выч. системы. На данном уровне работают менеджеры процессов, ввода-вывода, файловой системы и оперативной памяти (диспетчеры). Диспетчеры ведут учет ресурсов, и планирует их распределение между приложениями. Интерфейс системных вызовов. Самый верхний слой ядра, взаимодействует с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС. Аппаратная зависимость и переносимость ОС Типовые средства аппаратной поддержки ОС Типичный набор средств аппаратной поддержки: Средства поддержки привилегированного режима Средства трансляции адресов Средства переключения процессов Система прерываний Система таймер Средства защиты областей памяти Средства поддержки привилегированного режима основаны на системном регистре процессора - этот регистр содержит признаки, определяющие режим работы процессора, в том числе и признак привилегии. В обязанности средств поддержки привилегированного режима входит проверка допустимости выполнения активной программой команд процессора при текущем уровне привилегированности. Средства трансляции адресов выполняют операцию по преобразованию виртуальных адресов, которые содержатся в кодах процессора, в адреса физической памяти. Таблица трансляции адресов имеет большой объем и обычно хранится в ОЗУ, а процессор содержит только указатели на эти области. Средства переключения процессов - для быстрого сохранения контекста привилегированного процесса и восстановления контекста процесса, который становится активным. Для хранения контекста приостановленных процессов используется области ОЗУ, которые поддерживаются указателями процессора. Переключение контекста выполняется по определенным командам процессора, например по команде перехода на новую задачу. Такая команда вызывает автоматическую загрузку данных из сохраненного контекста в регистры процессора, после чего процесс продолжается с прерванного ранее места. Система прерываний позволяет компьютеру реагировать на внешние события, синхронизировать выполнение процессов и работу устройств ввода-вывода, быстро переходить с одной программы на другую. Механизм прерываний нужно для того чтобы оповестить процессор о возникновении в вычислительно системе некоторого непредсказуемого события или события, которое не синхронизировано с циклом работы процессора. Остановка происходит путем вызова процедуры обработки прерываний. Системный таймер - реализуется в виде быстродействующего регистра-счетчика. Он необходим ОС, чтобы выдерживать интервалы времени. Для этого в регистр таймера программно загружается значение требуемого интервала в условных единицах, из которого потом автоматически с определенной частотой начинает вычитаться по единице. Частота тактов таймера связана с частотой тактового генератора процессора. При достижении нулевого значения счетчик таймера инициирует прерывание, которое обрабатывается процедурой операционной системы. Средства защиты областей памяти обеспечивают на аппаратном уровне проверку возможности программного кода осуществлять с данными определенной области памяти такие операции, как чтение, запись или выполнение. Если аппаратура поддерживает механизм трансляции адресов, то средства защиты областей памяти встраиваются в этот механизм. Функции аппаратуры по защите памяти обычно состоят в сравнении уровней привилегий текущего кода процессора и сегмента памяти, к которому производится обращение. Типы архитектур ядер операционных систем Монолитное ядро Монолитное ядро предоставляет богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве. Это такая схема операционной системы, при которой все компоненты её ядра являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур. Монолитное ядро — старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство UNIX-систем. Достоинства: Скорость работы, упрощённая разработка модулей. Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы. Примеры: Традиционные ядра UNIX (такие как BSD), Linux; ядро MS-DOS, ядро KolibriOS. Некоторые старые монолитные ядра, в особенности систем класса UNIX/Linux, требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружать модули, выполняющие часть функций ядра. В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы, называемой монолитным ядром (monolithic kernel), которое представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. |