Анализ архитектур ядер операционных систем

Автор работы: Пользователь скрыл имя, 29 Марта 2015 в 15:56, реферат

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

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

Файлы: 1 файл

Реферат ОООС.docx

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

 

 

 

Реферат по дисциплине «Операционные системы» на тему «Анализ архитектур ядер операционных систем»

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил студент

Группы АС 13-5

Платов А. А.

 

Оглавление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вступление

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

Я выбрал данную тему по причине ее некой актуальности. Хоть и разработка новых операционных систем как таковая не ведется (За исключением недавно прошумевшей операционной системы Российского производства «РУСЬ»), но вопрос выбора оптимальной архитектуры ядра операционной системы для определенных процессов не может быть закрыт по причине постоянного развития информационных технологий.

Сперва хотелось бы конечно определить понятие самого слова ядро и его место в операционной системе.

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

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

Далее как пример можно рассмотреть место ядра в таких операционных системах, как WINDOWS и UNIX

Рис.1 Место ядра в операционной системе WINDOWS

 

Рис.2 Место ядра в операционной системе UNIX

Итак, какие же виды архитектур ядер бывают, мы рассмотрим далее:

Теперь рассмотрим каждую архитектуру подробнее.

Монолитное ядро

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

Классическое Монолитное ядро состоит из единственного загрузочного модуля, в котором реализованы все функции, возлагаемые на систему, и в частности, все сервисы, которые ядро предоставляет прикладным программам.

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

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

Плюсы монолитных ядер:

  • взаимодействие компонентов ОС, так как они находятся в одном контексте может быть реализовано весьма просто (сравнимо с вызовом функций в обычном приложении);

  • все или большинство случаев взаимодействия прикладных программ не требует переключения между процессами, и как следствие «тяжеловесность» процессов некритична, и может быть весьма большой, что обеспечивает хорошую защищённость;

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

Минусы:

  • неправильное функционирование одного из компонентов может нанести ущерб всей системе, что — опять-таки теоретически — делает систему с монолитным ядром менее надёжной, чем микроядерная система и требует большей тщательности в разработке компонентов ОС;

  • большой объём кода, исполняемого в невытесняемом режиме негативно влияет время отклика приложений на внешние события, что нежелательно или недопустимо в системах работающих в реальном времени;

  • значительно затруднено расширение функций ОС, так как часто требует вмешательства в ядро (частично решается переходом на модульное ядро).

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

 

В своём классическом виде монолитное ядро сейчас встречается в основном в составе ОС для встраиваемых систем и подобных, специализированных под выполнение конкретных задач.

Ниже приведена концептуальная схема монолитного ядра:

Рис. 3 Модель монолитного ядра

Модульное ядро

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

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

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

Такие распространённые современные операционные системы, как Linux и NetBSD, являются бесспорно ОС с монолитным модульным ядром.

Также термин модульное ядро иногда адресуют и к различным «гибридным ядрам» от DragonFly BSD, MacOS X до Windows NT, что не является верным, т.к. большинство системных служб и драйверов данных систем реализуется в виде процессов пользовательского режима, то есть активно используется архитектура микроядра, и следовательно относятся, как минимум, к гибридным ядрам. Это связано с тем, что данные гибридные ядра поддерживают архитектуру загузочных модулей ядра, но здесь также есть важное отличие - подгружаемые модули ядра и прочие компоненты ядер Windows NT и MacOS X располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как положено в микроядерных операционных системах.

Преимущества.

Без загружаемых модулей ядра, операционные системы должны были бы включать всю возможную функциональность в базовом ядре. Значительная часть кода не используется и лишь занимает память. Каждый раз, когда пользователю необходима новая функциональность, ещё не включенная в базовом ядре, требуется полная перекомпиляция базового ядра и перезагрузка. Использование подгружаемых модулей значительно упрощает изменение функциональности ядра и не требует ни полной перекомпиляции (модуль часто может быть собран отдельно от ядра или поставлен в предкомпилированном виде) ни перезагрузок.

 

Рис. 4 Модель модульного ядра

Микроядро

Микроядро — это минимальная реализация функций ядра операционной системы.

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

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

  • управление адресным пространством оперативной памяти.

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

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

  • средства межпроцессной коммуникации.

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

Преимущества:

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

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

Недостатки:

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

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

 

Рис. 5 Модель Микроядра

Экзоядро

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

Концепция экзоядра была предложена около 15 лет назад. Её создатели исходили из того, что современные операционные системы слишком сильно «виртуализируют» аппаратуру, лишая прикладные программы гибкости, а заодно сильно теряя в производительности и надёжности из-за чрезмерного усложнения самих ОС. Чтобы избежать этого, предлагается предоставлять прикладным программам лишь минимально необходимый слой абстракций, дозволяя им чуть ли не прямой доступ к управлению аппаратурой. Для упрощения же процесса создания прикладных программ, которые теперь вынуждены выполнять для себя те функции, которые обычно реализовывались где-то в недрах традиционных ОС, предназначены системные библиотеки (libOS) пользовательского режима.

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

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

Рис.6 Модель Экзоядра

Наноядро

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

Информация о работе Анализ архитектур ядер операционных систем