Автор: Пользователь скрыл имя, 14 Января 2012 в 14:28, курсовая работа
В данной работе рассмотрены аспекты функционирования и взаимодействия ядра операционной системы с другими ее компонентами.
Операционная система (ОС) – это комплекс взаимосвязанных системных программ, организующий взаимодействие пользователя с компьютером и выполнение всех других программ. ОС выполняет роль связующего звена между аппаратными компонентами компьютера, выполняемыми программами и пользователем.
Интерфейс системных вызовов. Этот слой является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС. Функции АРI, обслуживающие системные вызовы, предоставляют доступ к ресурсам системы в удобной и компактной форме, без указания деталей их физического расположения.
Рис. 2.6 Многослойная структура ядра ОС
Приведенное
разбиение ядра ОС на слои является
достаточно условным. В реальной системе
количество слоев и распределение
функций между ними может быть
и иным. В системах, предназначенных
для аппаратных платформ одного типа,
например ОС NetWare, слой машинно-зависимых
модулей обычно не выделяется, сливаясь
со слоем базовых механизмов и, частично,
со слоем менеджеров ресурсов. Не всегда
оформляются в отдельный слой базовые
механизмы — в этом случае менеджеры ресурсов
не только планируют использование ресурсов,
но и самостоятельно реализуют свои планы.
Возможна и противоположная картина, когда
ядро состоит из большего количества слоев.
Например, менеджеры ресурсов, составляя
определенный слой ядра, в свою очередь,
могут обладать многослойной структурой.
Прежде всего это относится к менеджеру
ввода-вывода, нижний слой которого составляют
драйверы устройств, например драйвер
жесткого диска или драйвер сетевого адаптера,
а верхние слои — драйверы файловых систем
или протоколов сетевых служб, имеющие
дело с логической организацией информации.
Выбор количества слоев ядра является
ответственным и сложным делом:
увеличение числа слоев ведет к некоторому
замедлению работы ядра за счет дополнительных
накладных расходов на межслойное взаимодействие,
а уменьшение числа слоев ухудшает расширяемость
и логичность системы. Обычно операционные
системы, прошедшие долгий путь эволюционного
развития, например многие версии 1.НIХ,
имеют неупорядоченное ядро с небольшим
числом четко выделенных слоев, а у сравнительно
«молодых» ОС, таких как Windows NT, ядро разделено
на большее число слоев и их взаимодействие
формализовано в гораздо большей степени.
Суть микроядерной архитектуры состоит в следующем. В привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром (рис. 2.7). Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят машинно-зависимые модули, а также модули, выполняющие базовые (но не все!) функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода-вывода, связанные с загрузкой или чтением регистров устройств. Набор функций микроядра обычно соответствует функциям слоя базовых механизмов обычного ядра. Такие функции ОС трудно, если не невозможно, выполнить в пространстве пользователя.
рис. 2.7 Перенос основного объема функций ядра в пользовательское пространство
Все
остальные более
Работающие в пользовательском
режиме менеджеры ресурсов
Совсем другая ситуация
Схематично механизм обращения к функциям ОС, оформленным в виде серверов, выглядит следующим образом (рис. 2.8). Клиент, которым может быть либо прикладная программа, либо другой компонент ОС, запрашивает выполнение некоторой функции у соответствующего сервера, посылая ему сообщение. Непосредственная передача сообщений между приложениями невозможна, так как их адресные пространства изолированы друг от друга. Микроядро, выполняющееся в привилегированном режиме, имеет доступ к адресным пространствам каждого из этих приложений и поэтому может работать в качестве посредника. Микроядро сначала передает сообщение, содержащее имя и параметры вызываемой процедуры нужному серверу, затем сервер выполняет запрошенную операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения. Таким образом, работа микроядерной ОС соответствует известной модели клиент-сервер, в которой роль транспортных средств выполняет микроядро.
рис 2.8 Реализация
системного вызова в микроядерной архитектуры
Операционные системы, основанные на концепции микроядра, удовлетворяют большинству требований, предъявляемых к ней: но обладая переносимостью, расширяемостью, надежностью и предпосылки для поддержки распределенных приложений приходится платить снижением производительности, и это недостаток микроядерной архитектуры.
Высокая
степень переносимости
Расширяемость присуща микроядерной ОС в очень высокой степени. В традиционных системах даже при наличии многослойной структуры нелегко удалить один слой и поменять его на другой по причине множественности и размытости интерфейсов между слоями, добавление новых функций и изменение существующих требует хорошего знания ОС и больших затрат времени. В то же время ограниченный набор четко определенных интерфейсов микроядра открывает путь к упорядоченному росту и эволюции ОС. Добавление новой подсистемы требует разработки нового приложения, что никак не затрагивает целостность микроядра. Микроядерная структура позволяет не только добавлять, но и сокращать число компонентов ОС, что также бывает очень полезно. Например, не всем пользователям нужны средства безопасности или поддержки распределенных вычислений, а удаление их из традиционного ядра чаще всего невозможно. Обычно традиционные операционные системы позволяют динамически добавлять в ядро или удалять из ядра только драйверы внешних устройств — ввиду частых изменений в конфигурации подключенных к компьютеру внешних устройств подсистема ввода- вывода ядра допускает загрузку и выгрузку драйверов «на ходу», но для этого она разрабатывается особым образом. При микроядерном подходе конфигурируемость ОС не вызывает никаких проблем и не требует особых мер — достаточно изменить файл с настройками начальной конфигурации системы или же остановить не нужные больше серверы в ходе работы обычными для остановки приложений средствами.
Использование микроядерной модели повышает надежность ОС. Каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти, и таким образом, защищен от других серверов ОС, что не наблюдается в традиционной ОС, где все модули ядра могут влиять друг на друга. И если отдельный сервер терпит крах, то он может быть перезапущен без останова или повреждения остальных серверов ОС. Более того, поскольку серверы выполняются в пользовательском режиме, они не имеют непосредственного доступа к аппаратуре и не могут модифицировать память, в которой хранится и работает микроядро. другим потенциальным источником повышения надежности ОС является уменьшенный объем кода микроядра по сравнению с традиционным ядром — это снижает вероятность появления ошибок программирования.
Модель с микроядром хорошо подходит для поддержки распределенных вычислений, т.к. как использует механизмы, аналогичные сетевым: взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядерной ОС могут работать как на одном, так и на разных компьютерах. В этом случае при получении сообщения от приложения микроядро может обработать его самостоятельно и передать локальному серверу или же переслать по сети микроядру, работающему на другом компьютере. Переход к распределенной обработке требует минимальных изменений в работе ОС — просто локальный транспорт заменяется на сетевой.
Производительность. При классической организации ОС (рис 2.9) выполнение системного вызова сопровождается двумя переключениями режимов, а при микроядерной организации (рис. 2.8) — четырьмя. Таким образом, операционная система на основе микроядра при прочих равных условиях всегда будет менее производительной, чем ОС с классическим ядром. Именно по этой причине микроядерный подход не получил такого широкого распространения, которое ему предрекали.
Рис. 2.9 Смена режимов при выполнении системного вызова
Этот пример иллюстрирует главную проблему, с которой сталкиваются разработчики ОС, решившие применить микроядерный подход, — что включать в микроядро, а что выносить в пользовательское пространство. В идеальном случае микроядро может состоять только из средств передачи сообщений, средств взаимодействия с аппаратурой, в том числе средств доступа к механизмам привилегированной защиты.
Однако многие разработчики не всегда жестко придерживаются принципа минимизации функций ядра, часто жертвуя этим ради повышения производительности.
В
результате реализации ОС образуют некоторый
спектр, на одном краю которого находятся
системы с минимально возможным
микроядром, а на другом — системы,
подобные Windows NT, в которых микроядро выполняет
достаточно большой объем функций.
Наиболее
общим подходом к
Функции ядра, которые могу вызываться приложениями, образуют интерфейс прикладного программирования API. Ядро работает в привилегированном режиме, и боль его модулей постоянно находится в памяти (резидентные). Разделение ОС на ядро и вспомогательные модули облегчает ее расширяемость. К вспомогательным модулям ОС относятся:
Заключение:
Простейшая
структуризация ОС состоит в разделении
всех компонентов ОС на модули, выполняющие
основные функции ОС (ядро), и модули,
выполняющие вспомогательные
При наличии аппаратной поддержки режимов с разными уровнями полномочий устойчивость ОС может быть повышена путем выполнения функций ядра в привилегированном режиме, а вспомогательных модулей ОС и приложений — в пользовательском. Это дает возможность защитить коды и данные ОС и приложений от несанкционированного доступа. ОС может выступать в роли арбитра в спорах приложений за ресурсы.
Ядро, являясь структурным элементом ОС, в свою очередь, может быть логически разложено на следующие слои (начиная с самого нижнего):