Какой архитектуры ядра не существует
Перейти к содержимому

Какой архитектуры ядра не существует

  • автор:

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

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

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

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

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

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

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

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

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

Примером может служить VFS — «виртуальная файловая система», совместно используемая многими модулями файловых систем в ядре Linux.

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

Сравнения типов ядер:

XNU (на основе Darwin, используется в Mac OS X)

DragonFly BSD (первое из семейства BSD микроядро, основанное не на Mach)

NT kernel (используется Windows NT, 2000, 2003; XP, Vista, 7)

Микроядро

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

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

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

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

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

IPC (Inter-Process Communication) Межпроцессное взаимодействие — набор способов обмена данными между множеством потоков в одном или более процессах.

Примеры ядер: Mach, L4, QNX, velOSity

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

За что отвечает ядро операционной системы

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

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

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

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

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

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

Недостаток:

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

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

Из положительного момента — быстрая разработка и внедрение новых модулей а также скорость работы такого ядра. всё таки унификация всех элементов берет своё

Примеры ОС построенных на таких ядрах :LINUX, Unix, ms-dos

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

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

Микроядро

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

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

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

Недостатки: увеличенное потребление ресурсов.

Из самых популярных операционных систем которое используют это
ядро операционной системы это MAC OS X.

Экзоядро

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

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

Вы спросите а к какому типу архитектуры тогда относиться операционная система windows?

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

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

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

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

Содержание

Типы архитектур ядер операционных систем [ править | править код ]

Монолитное ядро [ править | править код ]

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

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

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

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

Модульное ядро [ править | править код ]

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

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

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

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

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

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

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

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

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

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

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

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

Гибридное ядро [ править | править код ]

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

Комбинация разных подходов [ править | править код ]

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

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

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

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

Итак, что такое ядро операционной системы и за что оно отвечает в работе вашего компьютера? Разберемся подробнее.

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

Windows использует ядро NT, которое контролирует несколько подсистем. Apple использует ядро XNU. Linux-системы, такие как Ubuntu и Android, используют ядро Linux.

  • Уровень «управления процессами» позволяет параллельно запускать несколько задач на вашем компьютере. Ядро обрабатывает все запросы, поступающие от программ, упорядочивает их во времени и прерывает, если возникают проблемы.
  • Верхний уровень — файловая система. Здесь процессам назначаются области на HDD (жестком диске) и в основной памяти компьютера.
  • Таким образом, ядро регулирует весь путь от системного оборудования до прикладного программного обеспечения, которым управляет пользователь через графический интерфейс (GUI). Но сама пользовательская область не является частью ядра и называется «shell», «ring» или «userland».
  • Компьютерная программа отправляет системные вызовы «System Calls» в ядро. Затем оно делает фактический запрос на машинном языке СPU. Ядро знает полный набор команд центрального процессора, то есть все машинные инструкции, которые он может выполнить. Такие системные вызовы запускаются, например, при чтении или записи файлов на компьютер. Эта простая задача постоянно решается даже в фоновом режиме.
  • В многопользовательских системах ядро также контролирует доступ к файлам и аппаратным компонентам.

Ядро является не ядром процессора, а ядром операционной системы.

Ядро операционной системы: что собой представляет и что входит в состав

Lorem ipsum dolor

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

Мы будем очень благодарны

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

Вся соль в ядре!

Термин «ядро операционной системы» можно особенно часто услышать от поклонников POSIX-систем. Впрочем, сами понимаете, это вовсе не означает, что в той же, например, Windows, ядра нет как такового. Что такое ядро операционной системы? Для чего оно нужно? Какими бывают ядра у разных ОС? Вот на эти вопросы мы сейчас с вами и попробуем найти ответы.


Зачем нужно ядро?

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

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

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

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

Впрочем, конечно, в зависимости от операционной системы и её предназначения, ядра бывают разными — и даже очень. Какими именно? Сейчас мы с вами и займёмся тем, что поговорим о видах ядер операционных систем.


Какими бывают ядра?

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

Начнём, пожалуй, с такой интересной вещи, как монолитное ядро. Как видно из названия этого типа ядер операционных систем, они отличаются высокой степенью интеграции компонентов ядра, что приводит к ряду особенностей его работы — более высокой скорости и сравнительной простой разработке. Но, правда, при этом есть минус, что если какой-то из модулей ядра начнёт работать некорректно, это может привести к некорректной работе всего ядра (читай, к краху операционной системы). Все компоненты такого ядра работают в одном и том же адресном пространстве — то есть всё ядро являет собой одну большую программу. Старые операционные системы были все исключительно с монолитными ядрами и требовали перекомпиляции ядра при изменении конфигурации «железа», с которой работала операционная система. Современные операционные системы с монолитными ядрами также не вполне излечились от подобного недуга: при изменениях в оборудовании нужно изменить некоторые модули в ядре и после этого выполнить перекомпиляцию всего ядра. Удобно ли это? Вряд ли. Но, тем не менее, благодаря простоте создания такого ядра, монолитная архитектура пользуется значительной популярностью у системных программистов. POSIX-системы (по крайней мере, большая их часть), в том числе и BSD-систем, пользуются той же архитектурой, что и старые UNIX’ы, и MS-DOS — именно монолитным ядром. Поэтому и нужно пользователям BSD-систем собирать ядро всякий раз по новой, когда они добавляют в систему новое устройство. Впрочем, это относится не ко всем BSD-системам — их всё-таки довольно много.

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

Архитектура модульного ядра позволяет при изменениях конфигурации аппаратного обеспечения того компьютера, на котором работает операционная система, не выполнять перекомпиляции самой важной части всей операционной системы. Каким же образом этого добиться? На самом деле, всё очень просто. Ядра подобного типа позволяют работать с подгружаемыми внешними модулями, обеспечивающими поддержку различных устройств, — драйверами. Поскольку модули внешние, то при смене оборудования достаточно изменить набор этих модулей, а само ядро уже трогать не обязательно. Это, кстати, очень удобно и для разработчиков — драйверы для операционных систем с модульной ядерной архитектурой проще писать и отлаживать. Впрочем, модульность не избавляет ядро от необходимости иметь некую резидентную часть, которую нельзя выполнить в виде подключаемого модуля. Модульная архитектура ядра используется в более продвинутой, по сравнению со старыми UNIX’ами, операционной системе Linux 1 , что во многом и определило её популярность среди пользователей POSIX-систем. Модульные ядра также работают в одном адресном пространстве, что позволяет им работать по-прежнему быстро, но всё же накладывает на драйверы массу ограничений. Поэтому и модульное ядро не стало последним этапом в развитии ядер операционных систем.

Микроядро — это уже более современная версия ядерной архитектуры. В ней само ядро предоставляет сравнительно небольшой список функций, в который входят обычно только работа с процессами и аппаратная абстракция операционной системы. Вся остальная функциональность операционной системы вынесена в специальные процессы, имеющие статус пользовательских и называемые, как правило, сервисами. Такой подход к организации ядра операционной системы имеет ряд преимуществ по сравнению с монолитным и модульным ядрами. Благодаря тому, что адресных пространств процессов уже много, ядро более устойчиво к ошибкам в сервисных процессах, но при этом на «общение» между этими самыми процессами тратится довольно много ресурсов компьютера — хотя бы того же процессорного времени. Поэтому микроядерные операционные системы появились уже тогда, когда мощности компьютеров позволяли не слишком терять в быстродействии при такой схеме организации ядра операционной системы. Микроядро удобно для пользователей, которые могут менять драйверы прямо в процессе работы операционной системы, и для системных программистов, которым нет нужды лезть в ядро для добавления какой-то функциональности в операционную систему: достаточно реализовать сервис, который будет работать как простое пользовательское приложение. Системы с микроядрами — это MacOS X, QNX, Symbian OS и некоторые другие, менее известные.

Как видите, в списке операционных систем ни с одним из упоминавшихся выше типов ядер не было самой распространённой в мире операционной системы — сиречь Windows (имеется в виду линейка NT — NT 4.0, 2000, XP, 2003, Vista, 2008). Причина этого, как вы уже, наверное, догадались, в том, ядро системы Windows имеет совершенно особый тип — это гибридное ядро. За таким названием — гибрид микроядра и монолитного ядра. Многие теоретики построения операционных систем ругают корпорацию Microsoft за ядра её ОС, однако такая архитектура наиболее эффективна с точки зрения сочетания надёжности и производительности. Конечно, помимо достоинств обеих архитектур она объединяет и их недостатки, но их год от года становится всё меньше, потому что нет таких трудностей, которые бы Microsoft не преодолела ради денег. Компоненты ядра Windows работают в одном и том же адресном пространстве (это, как видите, пришло из старых операционных систем с монолитным ядром), но при этом взаимодействуют друг с другом не напрямую, а путём обмена сообщениями (это уже характерно для микроядер).

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


Резюме

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

Если вы решите написать ОС со своим ядром (а это совсем непросто), то информации, которая содержится в статье, вам не хватит даже для того, чтобы просто приступить к непосредственному написанию программного кода. Что ж, тут, как говорится, Гугл в помощь. Информации по ядрам операционных систем в интернете много, часть из неё представлена даже на русском, так что с поиском, думаю, особых проблем не должно возникнуть.

Вадим СТАНКЕВИЧ

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *