Автор: Пользователь скрыл имя, 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. Ядро работает в привилегированном режиме, и боль его модулей постоянно находится в памяти (резидентные). Разделение ОС на ядро и вспомогательные модули облегчает ее расширяемость. К вспомогательным модулям ОС относятся:
Заключение: 
     Простейшая 
структуризация ОС состоит в разделении 
всех компонентов ОС на модули, выполняющие 
основные функции ОС (ядро), и модули, 
выполняющие вспомогательные 
При наличии аппаратной поддержки режимов с разными уровнями полномочий устойчивость ОС может быть повышена путем выполнения функций ядра в привилегированном режиме, а вспомогательных модулей ОС и приложений — в пользовательском. Это дает возможность защитить коды и данные ОС и приложений от несанкционированного доступа. ОС может выступать в роли арбитра в спорах приложений за ресурсы.
Ядро, являясь структурным элементом ОС, в свою очередь, может быть логически разложено на следующие слои (начиная с самого нижнего):