10462

Ядро операционной системы

Реферат

Информатика, кибернетика и программирование

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

Русский

2013-03-26

35.56 KB

73 чел.

Тема: Ядро операционной системы.

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

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

Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации.

1.1 Типы архитектур ядер операционных систем

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

Монолитное ядро предоставляет богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве. Это такая схема операционной системы, при которой все компоненты её ядра являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур. Монолитное ядро — старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство UNIX-систем.

  1.  Достоинства: Скорость работы, упрощённая разработка модулей.
  2.  Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.

Примеры: Традиционные ядра UNIX (такие как BSD), Linux; ядро MS-DOS, ядро KolibriOS.

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

Некоторые старые монолитные ядра, в особенности систем класса UNIX/Linux, требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружать модули, выполняющие часть функций ядра. В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы, называемой монолитным ядром (monolithic kernel), которое представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме.

Альтернативой монолитным ядрам считаются архитектуры, основанные на микроядрах.

Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер операционных систем.

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

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

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

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

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

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

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

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

  1. Сервисные процессы (в принятой в семействе UNIX терминологии — «демоны») активно используются в самых различных ОС для задач типа запуска программ по расписанию (UNIX и Windows NT), ведения журналов событий (UNIX и Windows NT), централизованной проверки паролей и хранения пароля текущего интерактивного пользователя в специально ограниченной области памяти (Windows NT). Тем не менее, не следует считать ОС микроядерными только из-за использований такой архитектуры.

Примеры: Symbian OS; Windows CE; OpenVMS; Mach, используемый в GNU/Hurd и Mac OS X; QNX; AIX; Minix; ChorusOS; AmigaOS; MorphOS.

 

Примечание. Де́мон (англ. daemon) — в системах класса UNIX — программа, работающая в фоновом режиме без прямого общения с пользователем.

Демоны обычно запускаются во время загрузки системы. Типичные задачи демонов: серверы сетевых протоколов (HTTP, FTP, электронная почта и др.), управление оборудованием, поддержка очередей печати, управление выполнением заданий по расписанию и т. д. В техническом смысле демоном считается процесс, который не имеет управляющего терминала. Чаще всего (но не обязательно) предком демона является init — корневой процесс UNIX.

В системах Solaris 10 и OpenSolaris для управления демонами используется Service Management Facility.

В системах Windows аналогичный класс программ называется «Службы» (англ. Services), которые, впрочем, тоже иногда называют демонами.

Термин был придуман программистами проекта MAC Массачусетского технологического института, он отсылает к персонажу мысленного эксперимента, демону Максвелла, занимающегося сортировкой молекул в фоновом режиме. Системы UNIX унаследовали данную терминологию.

Термин «даймон» (daemon, dæmon, греч. δαίμων) также относится к персонажам греческой мифологии, выполняющим задачи, за которые не хотят браться боги. Как утверждается в «Справочнике системного администратора UNIX», в Древней Греции понятие «персональный даймон» было, отчасти, сопоставимо с современным понятием «ангел-хранитель».

Иногда слово daemon интерпретируют как акроним англ. Disk and execution monitor. Операционные системы семейства BSD используют изображение демона в качестве логотипа.

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

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

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

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

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

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

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

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

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

B отличие от Windows NT создателям Symbian OS удалось совместить эффективность и концептуальную стройность, несмотря на то что современные версии этой системы предоставляют обширные возможности, в том числе средства для работы c потоковыми данными, стеками протоколов, критичными к латентности ядра, графикой и видео высокого разрешения).

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

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

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

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

Экзоядро.

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

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

Примечание. Интерфейс прикладного программирования (иногда интерфейс программирования приложений) (англ. Application Programming Interface, API  — набор готовых классов, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

Наноядро.

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

Гибридное ядро.

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

1.2 Комбинация разных подходов

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

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

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

Примеры: Windows NT, DragonFlyBSD.


 

А также другие работы, которые могут Вас заинтересовать

1499. Чрезвычайные ситуации социального характера и защита от ЧС социального характера 118.5 KB
  Опасности связанные с психическим воздействием на человека. Этапы развития социальной катастрофы. Методы борьбы с паникой. Меры предосторожности от карманных краж. Разбой. Самооборона, правовой аспект.
1500. Кто такой хакер. Компьютерная специализация 119.53 KB
  Хакер (от англ. hack) - особый тип компьютерных специалистов. Самые известные хакеры. Вся информация должна быть бесплатной. Не бывает неразрешимых проблем, бывает много работы.
1501. Анализ различий ролевых ожиданий у юношей и девушек готовящихся к вступлению в брак 109.97 KB
  Научное содержание понятия готовности молодых людей к вступлению в брак. Наличие у молодых людей, готовящихся к вступлению в брак, эмпатийного комплекса и альтруистических качеств личности. Эмпирическое исследование ролевых ожиданий молодых девушек вступающих в брак. Сравнительный анализ ролевых ожиданий между различными структурами семейной жизни у молодых людей, готовящихся к вступлению в брак.
1502. Что такое вера. Критерии истинности веры 116.61 KB
  Критерии истинности. Необходимость веры для спасения. Критерий хорошести. Ищущим Истинного Бога Бог готовит воздаяние. Вера должна быть связана с доступностью Бога. Вера должна исходить только от Бога. Искажение истины. Нет таких людей, которые не могут узнать Бога. Духовная причина неверия в Истинного Бога. Что нужно делать, чтобы спастись? Какого главного дела требует от нас Бог? Свойства веры и знания.
1503. Скрытие и фальсификация научной информации угроза современной цивилизации 114.5 KB
  Засекречивание - неизбежное зло для науки, однако оно носит временный характер и компенсируется вложением в науку дополнительных средств. При создании СТО Эйнштейн руководствовался работами голландского физика Г.Лоренца и французского математика А.Пуанкаре. Если бы современные физики познакомились с классическими теориями эфира, их такой вывод не удивил.
1504. Визначити класичним методом реакцію кола 97.58 KB
  Визначити класичним методом реакцію кола на підключення джерела живлення. Побудувати графік функції, провести аналіз, визначити тривалість перехідного процесу.
1505. Проектирование оптимальной организационной структуры в условиях глобальной конкуренции 97 KB
  Глобальные факторы конкуренции. Организационный дизайн для оптимизации преимуществ компании во внутренней конкуренции на внутреннем национальном рынке. Преимущества и недостатки СУРГ. Преимущества и недостатки ДСС. Организационный дизайн для оптимизации участия компании в международной конкуренции.
1506. Анализ ЗАО Городское освещение 102 KB
  Технология производства с общей схемой технологического процесса. Характеристика окружающей среды проектируемого объекта. Организация эксплуатация электрооборудования объекта. Планирование ТО и Р оборудования. Виды диагностирования электрооборудования.
1507. Особенности микропроцессорной техники 115.57 KB
  Основные направления в развитии микропроцессорной техники. Системы счисления. Цифровые электронные устройства. Технологии изготовления цифровых интегральных микросхем. Регистры микропроцессора. Аккумулятор, РОН, счетчик команд. Микропроцессорные средства и системы. Понятие дополнительного кода числа.