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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

[править|править код]

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

[править|править код]

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

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

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

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

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

[править|править код]

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

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

  • Достоинства:Нет необходимости собирать ядро при установке нового аппаратного устройства.
  • Недостатки:Скорость работы ядра.

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

  • Достоинства:Устойчивость к сбоям оборудования, ошибкам в компонентах системы. Основное достоинство микроядерной архитектуры — высокая степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая её работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра.[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.

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

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

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

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

[править|править код]

Гибридные ядра — это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра. Пример: ядра ОС Windows семействаNT,такжеWindows CEиWindows Mobile.

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

[править|править код]

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

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

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

Примеры:Windows NT,DragonFly BSD.

  1. 12Н. Ю Иванова, В. Г. Маняхина.Системное и прикладное программное обеспечение.— Прометей, 2011. — С. 37-38. — 202 с. —ISBN 978-5-4263-0078-1.
  2. 12Владислав Владимирович Цехановский, Борис Яковлевич Советов.Информационные технологии 7-е изд., пер. и доп. Учебник для прикладного бакалавриата.— С. 244. — 328 с. —ISBN 9785534000481.
  3. "What is the Linux Kernel and What Does It Do?"(англ.).Архивировано изоригинала29 июня 2018.Дата обращения:29 июня 2018.