Типы архитектур ядер операционных систем, их преимущества и недостатки. Ядра, используемые различными операционными системами

Автор работы: Пользователь скрыл имя, 01 Июля 2013 в 17:54, курсовая работа

Описание работы

Цель работы состоит в рассмотрении различных типов архитектур ядер операционных систем и выявлении различий.
Поставленная цель позволила сформулировать задачи:
1) ознакомиться с основными видами архитектур ядер операционной системы;
2) рассмотреть понятие, касающиеся операционной системы;
3) выявить преимущества и недостатки ядер.
Объект исследования – ядра операционных систем.

Содержание работы

ВВЕДЕНИЕ 3
1 ОБЩИЕ СВЕДЕНИЯ О ЯДРЕ ОПЕРАЦИОННОЙ СИСТЕМЫ 4
2 ТИПЫ АРХИТЕКТУР ЯДЕР ОПЕРАЦИОННЫХ СИСТЕМ, ИХ ПРЕИМУЩЕСТВА И НЕДОСТАТКИ 7
2.1 Монолитное и модульное ядра 7
2.2 Микро и экзо ядра 10
2.3 Гибридное и Наноядра 14
3 ЯДРА, ИСПОЛЬЗУЕМЫЕ РАЗЛИЧНЫМИ ОПЕРАЦИОННЫМИ СИСТЕМАМИ 17
3.1 Монолитное и модульное ядра 17
3.2 Микро и экзо ядра 17
3.3 Гибридное и Наноядра 19
ЗАКЛЮЧЕНИЕ 21
ЛИТЕРАТУРА 22

Файлы: 1 файл

Курсовая (1 курс).docx

— 49.65 Кб (Скачать файл)

Достоинства микроядерной архитектуры  заключаются в теоретически большей  надёжности по сравнению с монолитным ядром, так как ошибка в одном  из системных компонентов не оказывает  влияния на другие компоненты, поскольку  они выполняются в разных адресных пространствах и защищены друг от друга. Кроме того, подобную систему  проще отлаживать. Недостаток —  значительно большие накладные  расходы на организацию взаимодействия компонентов системы между собой.

В действительности всё обстоит  сложнее. В частности, микроядерная архитектура не является панацеей от всех бед, поскольку определённые сбои всё равно будут носить фатальный  характер, когда нормальное восстановление работоспособности после них  окажется невозможным (например, сбой, приводящий к разрушению информации о выполняющихся в системе  процессах). Кроме того, «идеальная»  микроядерная система окажется очень  медленной, поэтому на практике микроядро, как правило, реализует значительно  больший набор функций, чем простое  обеспечение коммуникации между  разными компонентами системы. В  результате провести абсолютно чёткую и формальную границу между микроядерной системой и ОС с монолитным модульным  ядром не представляется возможным, и деление здесь больше интуитивное: если основные функции ядра сосредоточены  в собственно ядре, то перед нами система с модульным ядром, а  если часть основных функций реализуется  отдельными программами, то это микроядерная система [11].

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

К ним относятся:

  • управление адресным пространством оперативной памяти.
  • управление адресным пространством виртуальной памяти.
  • управление процессами и потоками (нитями).
  • средства межпроцессной коммуникации.

Все остальные сервисы  ОС, в классических монолитных ядрах  предоставляемые непосредственно  ядром, в микроядерных архитектурах реализуются в адресном пространстве пользователя и называются сервисами. Примерами таких сервисов, выносимых  в пространство пользователя в микроядерных архитектурах, являются сетевые сервисы, файловая система, драйверы [12].

Основное достоинство  микроядерной архитектуры — высокая  степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра.

И чтобы добавить в ОС с микроядром драйвер того или  иного устройства, не надо перекомпилировать  всё ядро, а надо лишь отдельно откомпилировать  этот драйвер и запустить его  в пользовательском пространстве.

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

Микроядра типа ядра ОС Minix и GNU Hurd развиваются медленно, гораздо  медленнее, чем Linux и ядро систем семейства BSD. По словам создателя Minix3, Таненбаума, он пытается «построить сверхнадёжную (very highly reliable) систему. Она может использоваться в том числе на серверах, которым  необходимы годы безотказной работы».

Недостаток — плата  за принудительное «переключение» процессов  в ядре (переключение контекста); этот факт собственно и объясняет трудности  в проектировании и написании  ядер подобной конструкции. Эти недостатки способны обойти ОС, использующие архитектуру  экзоядра, являющуюся дальнейшим развитием микроядерной архитектуры.

Достоинства: Устойчивость к сбоям оборудования, ошибкам  в компонентах системы.

Недостатки: Передача данных между процессами требует накладных  расходов.

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

В традиционных операционных системах ядро предоставляет не только минимальный набор сервисов, обеспечивающих выполнение программ, но и большое  количество высокоуровневых абстракций для использования разнородных  ресурсов компьютера: оперативной памяти, жестких дисков, сетевых подключений. В отличие от них, ОС на основе экзоядра предоставляет лишь набор сервисов для взаимодействия между приложениями, а также необходимый минимум  функций, связанных с защитой: выделение  и высвобождение ресурсов, контроль прав доступа, и т. д. Экзоядро не занимается предоставлением абстракций для  физических ресурсов — эти функции  выносятся в библиотеку пользовательского  уровня (так называемую libOS) [13].

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

Архитектуры на основе экзоядер являются дальнейшим развитием и  усовершенствованием микроядерных архитектур и одновременно ужесточают требования к минималистичности  и простоте кода ядра. libOS может обеспечивать произвольный набор абстракций, совместимый с той или иной уже существующей операционной системой, например Linux или Windows.

2.3 Гибридное и Наноядра

Наноядро — архитектура  ядра операционной системы компьютеров, в рамках которой крайне упрощённое и минималистичное ядро выполняет  лишь одну задачу — обработку аппаратных прерываний, генерируемых устройствами компьютера. После обработки прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о результатах  обработки (например, полученные с клавиатуры символы) вышележащему программному обеспечению  при помощи того же механизма прерываний. Также часто реализуют минимальную  поддержку потоков: создание и переключение.

В некотором смысле концепция  наноядра близка к концепции HAL — Hardware Abstraction Layer, предоставляя вышележащему ПО удобные механизмы абстракции от конкретных устройств и способов обработки их прерываний.

Наиболее часто в современных  компьютерах наноядра используются для виртуализации аппаратного  обеспечения реальных компьютеров  или для реализации механизма  гипервизора, с целью позволить  нескольким или многим различным  операционным системам работать одновременно и параллельно на одном и том  же компьютере. Например, VMware ESX Server реализует  собственное наноядро, не зависимое  от ОС и устанавливаемое на «голое железо». Поверх этого наноядра работают пользовательские и административные утилиты VMware и сами операционные системы, виртуализируемые в ESX Server.

Наноядра также могут  использоваться для обеспечения  переносимости (портабельности) операционных систем на разное аппаратное обеспечение  или для обеспечения возможности  запуска «старой» операционной системы  на новом, несовместимом аппаратном обеспечении без её полного переписывания  и портирования.

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

Термин «наноядро» иногда неформально используется для описания очень маленьких, упрощённых и лёгких микроядер, таких, как L4.

Гибридные ядра это модифицированные микроядра, позволяющие для ускорения  работы запускать «несущественные» части в пространстве ядра.

Имеют «гибридные» достоинства  и недостатки.

Все рассмотренные подходы  к построению операционных систем имеют  свои достоинства и недостатки. В  большинстве случаев современные  операционные системы используют различные  комбинации этих подходов. Так, например, ядро «Linux» представляет собой монолитную систему с элементами микроядерной архитектуры. При компиляции ядра можно  разрешить динамическую загрузку и  выгрузку очень многих компонентов  ядра — так называемых модулей. В  момент загрузки модуля его код загружается  на уровне системы и связывается  с остальной частью ядра. Внутри модуля могут использоваться любые  экспортируемые ядром функции.

Существуют варианты ОС GNU, в которых вместо монолитного  ядра применяется ядро Mach (такое  же, как в Hurd), а поверх него крутятся в пользовательском пространстве те же самые процессы, которые при  использовании Linux были бы частью ядра. Другим

Смешанное ядро, в принципе, должно объединять преимущества монолитного  ядра и микроядра: казалось бы, микроядро  и монолитное ядро — крайности, а  смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и  внутрь ядра, и в пользовательское пространство. Но на практике концепция  смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.

 

3 ЯДРА, ИСПОЛЬЗУЕМЫЕ РАЗЛИЧНЫМИ ОПЕРАЦИОННЫМИ СИСТЕМАМИ

3.1 Монолитное и модульное ядра

Примером могут послужить  традиционные ядра UNIX (такие как BSD), ядро KolibriOS.

KolibriOS - операционная система  для PC, полностью написанная на  ассемблере fasm, распространяемая на  условиях GPL. Создана на основе MenuetOS. Является альтернативной операционной  системой, так как она использует  собственные стандарты и не  основана на POSIX. Система рассчитана  на использование ассемблера  для написания приложений, но  есть и программы, написанные  на языках высокого уровня (Си, C++, C--, Free Pascal, Forth) [14].

BSD (англ. Berkeley Software Distribution) —  система распространения программного  обеспечения в исходных кодах,  созданная для обмена опытом  между учебными заведениями.

Ядра Linux в настоящее время  имеют более модульную архитектуру. Общей тенденцией развития современных модульных архитектур является всё большая модуляризация кода (повышение степени модульности ядер), улучшение механизмов динамической подгрузки и выгрузки, уменьшение или устранение необходимости в ручной подгрузке модулей или в переконфигурации ядра при изменениях аппаратуры путём введения тех или иных механизмов автоматического определения оборудования и автоматической подгрузки нужных модулей, универсализация кода ядра и введение в ядро абстрактных механизмов, предназначенных для совместного использования многими модулями (примером может служить VFS — «виртуальная файловая система», совместно используемая многими модулями файловых систем в ядре Linux).

3.2 Микро и экзо ядра

Классическим примером микроядерной системы является Symbian OS. Это пример распространенной и отработанной микроядерной (a начиная c версии Symbian OS v8.1, и наноядерной) операционной системы.

Создателям Symbian OS удалось  совместить эффективность и концептуальную стройность, несмотря на то что современные  версии этой системы предоставляют  обширные возможности, в том числе  средства для работы c потоковыми данными, стеками протоколов, критичными к  латентности ядра, графикой и видео  высокого разрешения). Разработчики Symbian вынесли практически все прикладные (т.e. выходящие за пределы компетенции  ядра) задачи в модули-серверы, функционирующие  в пользовательском адресном пространстве.

В ОС Windows NT версий 3.х микроядерная архитектура с сервисным процессом  использовалась для подсистемы графики  и пользовательского интерфейса. В частности, драйвер графической  аппаратуры загружался в контекст сервисного процесса, а не ядра. Начиная с  версии 4, от этого отказались, сервисный  процесс сохранился только для управления консольными окнами командной строки, а собственно графическая подсистема вместе с драйвером аппаратуры (в  том числе трехмерной графики) переместилась  в специально обособленный регион ядра ОС.

ОС Windows CE (и созданные  на ее основе сборки, такие, как Windows Mobile), будучи практически полностью совместимой (как подмножество) с Windows NT по вызовам  и методам программирования приложений, тем не менее, полностью отличается от Windows NT по внутренней архитектуре  и является микроядерной ОС с выносом  всех драйверов устройств, сетевых  стеков и графической подсистемы в сервисные процессы [15].

Реализацию экзоядерной  архитектуры можно рассмотреть  на примере XOK/ExOS — экспериментальной  связки собственно экзоядра XOK и библиотечной операционной системы ExOS. Данный тандем, а вместе с ним разнообразные  пользовательские программы и инструментальные средства Unix составляют дистрибутив exopc. Дистрибутив до сих пор не самодостаточен, и чтобы получить "почти" работающую систему (с учетом текущей стадии проекта), необходимо всего лишь обзавестись  одним из вариантов Linux или *BSD для  выполнения сборки — причем, так  как в exopc используется бинарный формат, аналогичный OpenBSD, в Linux придется применять  кросс-компилятор.

3.3 Гибридное и Наноядра

Фирма Apple Computer использовала наноядро в версии Mac OS Classic для PowerPC для того, чтобы транслировать  аппаратные прерывания, генерировавшиеся их компьютерами на базе процессоров PowerPC в форму, которая могла «пониматься» и распознаваться Mac OS. Альтернативой  было бы полное переписывание и портирование кода Mac OS на PowerPC при переходе на них. Позднее, в эпоху Mac OS 8.6, наноядро виртуализировало предоставляемые PowerPC мультипроцессорные возможности и обеспечивало поддержку SMP в Mac OS.

Информация о работе Типы архитектур ядер операционных систем, их преимущества и недостатки. Ядра, используемые различными операционными системами