Автор: Пользователь скрыл имя, 14 Января 2012 в 14:28, курсовая работа
В данной работе рассмотрены аспекты функционирования и взаимодействия ядра операционной системы с другими ее компонентами.
Операционная система (ОС) – это комплекс взаимосвязанных системных программ, организующий взаимодействие пользователя с компьютером и выполнение всех других программ. ОС выполняет роль связующего звена между аппаратными компонентами компьютера, выполняемыми программами и пользователем.
Введение
В данной работе рассмотрены аспекты функционирования и взаимодействия ядра операционной системы с другими ее компонентами.
Операционная система (ОС) – это комплекс взаимосвязанных системных программ, организующий взаимодействие пользователя с компьютером и выполнение всех других программ. ОС выполняет роль связующего звена между аппаратными компонентами компьютера, выполняемыми программами и пользователем. ОС обычно хранится во внешней памяти компьютера – на диске. При включении компьютера она считывается с дисковой памяти и размещается в ОЗУ. Этот процесс называется загрузкой ОС.
В различных моделях компьютеров используют ОС с разной архитектурой и возможностями. Для их работы требуются разные ресурсы. Каждая ОС имеет свой командный язык, который позволяет пользователю выполнять различные действия, такие как обращение к каталогу, запуск программы, выполнение разметки внешних носителей. Анализ и исполнение команд пользователя, включая загрузку готовых программ из файлов в оперативную память и их запуск, осуществляет командный процессор ОС. Для управления внешними устройствами компьютера используются специальные системные программы – драйверы. Драйверы стандартных устройств образуют в совокупности базовую систему ввода-вывода (BIOS), которая обычно заносится в постоянное запоминающее устройство компьютера.
Ядро – центральная часть ОС, обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное обеспечение. Также ядро предоставляет сервисы файловой системы и сетевых протоколов и выполняет следующие функции:
Как
основополагающий элемент ОС, ядро представляет
собой наиболее низкий уровень абстракции
для доступа приложений к ресурсам системы,
необходимым для его работы. Как правило,
ядро предоставляет такой доступ исполняемым
процессам соответствующих приложений
за счёт использования механизмов межпроцессного
взаимодействия и обращения приложений
к системным вызовам ОС.
Ядро ОС содержит программы для реализации следующих функций:
Монолитное ядро — один из первых способов организации ОС. Примером систем с монолитным ядром является большинство Unix-систем. Все части монолитного ядра работают в одном адресном пространстве. Старые монолитные ядра требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружать модули, выполняющие части функции ядра.
Достоинства такого подхода – скорость работы и упрощённая разработка модулей. Недостатки: поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы. В этом случае компоненты ОС являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура ОС называется монолитным ядром (monolithic kernel). Монолитное ядро ОС представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме.
Во многих ОС с монолитным ядром сборка ядра, то есть его компиляция, осуществляется отдельно для каждого компьютера, на который устанавливается операционная система. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Так как ядро ОС является единой программой, перекомпиляция — это единственный способ добавить в него новые компоненты или исключить неиспользуемые. Следует отметить, что присутствие в ядре лишних компонентов крайне нежелательно, так как ядро ОС полностью располагается в оперативной памяти. Кроме того, исключение ненужных компонентов повышает надежность ОС в целом.
Если в ОС с таким ядром вылетит какой-либо процесс, то он может быть автоматически перезапущен, а с цельным ядром в случае вылетания процесса, входящего в состав ядра, надо перезапускать всё ядро. В частности, монолитное ядро ОС более производительно, чем микроядро, поскольку состоит не из множества процессов, «общающихся» между собой, а работает как один большой процесс.
Монолитным
ядром является еще и Linux. Оно оптимизировано
для более высокой
Примеры ОС, использующих ядро данного типа:
Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер ОС компьютеров. В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции ядра при изменении состава аппаратного обеспечения компьютера. Вместо этого модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра, поддерживающих то или иное аппаратное обеспечение (например, драйверов). При этом подгрузка модулей может быть как динамической (выполняемой «на лету», без перезагрузки ОС, в работающей системе), так и статической (выполняемой при перезагрузке ОС после переконфигурирования системы на загрузку тех или иных модулей). Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми функциями, предоставляемыми ядром. Поэтому модульные ядра продолжают оставаться монолитными. Модульные ядра предоставляют особый программный интерфейс (API) для связывания модулей с ядром, для обеспечения динамической подгрузки и выгрузки модулей. В свою очередь, не любая программа может быть сделана модулем ядра: на модули ядра накладываются определённые ограничения в части используемых функций (например, они не могут пользоваться функциями стандартной библиотеки С/С++ и должны использовать специальные аналоги, являющиеся функциями API ядра). Кроме того, модули ядра обязаны экспортировать определённые функции, нужные ядру для правильного подключения и распознавания модуля, его корректной инициализации при загрузке и корректного завершения при выгрузке, регистрации модуля в таблице модулей ядра и обращения из ядра к сервисам, предоставляемым модулем.
Достоинство такого подхода: устойчивость к сбоям оборудования, к ошибкам в компонентах системы. Недостаток – передача данных между процессами требует дополнительных расходов процессорного времени.
Остальные
компоненты системы взаимодействуют
друг с другом путем передачи сообщений
через микроядро.
Микроядро предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Большая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами.
Достоинства и недостатки такие же, как у модульных ядер.
Классические микроядра предоставляют лишь очень небольшой набор низкоуровневых примитивов, или системных вызовов, реализующих базовые сервисы ОС.
Сюда относятся:
Все остальные сервисы ОС, в классических монолитных ядрах предоставляемые непосредственно ядром, в микроядерных архитектурах реализуются в адресном пространстве пользователя (Ring3) и называются сервисами. Примерами таких сервисов, выносимых в пространство пользователя в микроядерных архитектурах, являются сетевые сервисы, файловая система, драйверы. Такая конструкция позволяет улучшить общее быстродействие системы.
Современная тенденция в разработке ОС состоит в перенесении значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) ОС, когда большинство ее составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью. Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.
Основное достоинство микроядерной архитектуры — высокая степень модульности ядра ОС. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей ОС. Компоненты ядра ОС ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра. Чтобы добавить в ОС с микроядром драйвер того или иного устройства, не надо перекомпилировать всё ядро, а надо лишь отдельно откомпилировать этот драйвер и запустить его в пользовательском пространстве.
Примеры ОС, использующих данный тип ядра:
Экзоядро — ядро ОС компьютеров, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов. Предполагается, что API для прикладных программ будут предоставляться внешними по отношению к ядру библиотеками (отсюда и название архитектуры).
Возможность доступа к устройствам на уровне контроллеров позволит эффективней решать некоторые задачи, которые плохо вписываются в рамки универсальной ОС, например, реализация СУБД будет иметь доступ к диску на уровне секторов диска, а не файлов и кластеров, что положительно скажется на быстродействии.
Наноядро
— архитектура ядра ОС компьютеров, в
рамках которой крайне упрощённое и минимизированное
ядро выполняет лишь одну задачу, — обработку
аппаратных прерываний, генерируемых
устройствами компьютера. После обработки
прерываний от аппаратуры наноядро, в
свою очередь, посылает информацию о результатах
обработки (например, полученные с клавиатуры
символы) вышестоящему программному обеспечению
при помощи того же механизма прерываний.
Примером является KeyKOS — самая первая
ОС на наноядре. Первая версия вышла ещё
в 1983 году.