Ядро операционной системы: что собой представляет и что входит в состав
Ядро операционной системы — это «главный» набор инструкций, благодаря которому работает компьютер. Ядро ОС означает, что оно лежит в основе работы любой операционной системы. На него накладываются все возможности ОС и все дополнительное программное обеспечение. От эффективности работы ядра зависит производительность и эффективность операционной системы. От эффективности ОС зависит работа компьютерного устройства.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Ядро архитектуры
Ядро архитектуры (программное ядро) — это определенный принцип построения программного обеспечения и реализации повторного использования. До сих пор обобщенных определений дано не было, но как правило, об архитектуре ядра говорят применительно к операционным системам. Со временем, выделение так называемого ядра стали осуществлять в крупных программных комплексах. Другое возможное использование этого термина применяют когда разрабатываются некие независимые библиотеки программ (SDK), так например, говорят о графических или физических движках.
Содержание
Ядро — как библиотека функций [ править ]
Если вы хотите, чтобы отдельные части вашего алгоритма можно было применять в дальнейшем при построении новых программ, то единственный реальный путь к этому – вычленить претендующие на многократное использование функциональные компоненты вашей программы и оформить их в виде модулей. В результате такой деятельности формируется библиотека функций.
Пополняя библиотеку, уделяют внимание тестированию отдельных модулей, их единообразному описанию (интерфейсу), но, как правило, совершенно не беспокоясь о сохранении работоспособности прежнего состава библиотеки. Причины для беспокойства действительно нет, так как поступающие модули обычно настолько слабо связаны с остальными компонентами, что их появление не может как либо повредить соседям по библиотеки. Это происходит от того, что модули из библиотеки играют только подчиненную роль: разработчик новой программы самостоятельно пишет ведущую часть, которая время от времени обращается к таким модулям для решения частных подзадач.
Надежность ядра [ править ]
Как мы видим оформление в виде ядра, некоторых библиотек функций необходимо в первую очередь, для надежного повторного использования уже отлаженных и оттестированных алгоритмов. Причем надежность тут первично. Именно для обеспечения надежности, отказываются от простого дублирования кода. Наличие дублирования есть самая главная причина проведения рефакторинга.
Мы можем ввести два термина:
- Безболезненность для окружения. Метод изменения содержимого программного фонда называется безболезненным для окружения, если его применение не влечет за собой необходимости редактирования существовавших ранее текстов программ и других первичных материалов.
- Безболезненность для работоспособности. Метод изменения содержимого программного фонда называется безболезненным для работоспособности, если его применение не может нарушить работоспособность отлаженных ранее конкретных конфигураций программ и других первичных материалов. Необходимое условие безболезненности для работоспособности – безболезненность для окружения.
Таким образом, выделенные и оттестированные функции составляют ядро, и его использование является безболезненным как для окружения, так и для работоспособности.
Ядро — это не только библиотека функций [ править ]
Но полноценное ядро — это не только библиотека функций. При разработке архитектуры ядра анализируется не только как должны работать собственно функции библиотеки, но и то как их будет использовать сторонний разработчик. Кроме того, архитектура ядра предполагает разделение кода на так называемые слои. Когда один слой отвечает за математические расчеты, второй за работу с графикой и интерфейсом пользователя, третий с бизнес логикой, четвертый с базой данных. При этом само ядро реализует только минимум функций, но при этом должно обеспечить независимость и концепцию слоев ПО. Таким образом, архитектура ядра налагает ряд ограничений на то, как этим ядром будет пользоваться сторонний разработчик.
Так например, примеры хорошо реализованных ядер можно найти почти исключительно только в реализации известных операционных систем (см. w:en:Kernel (computing)), или на уровне «железа» в реализации работы процессора (см. w:Микроархитектура). А многие т.н. движки, необоснованно называют ядром того или иного программного комплекса. Они, как правило, не выполняют никакой архитектурной роли, за исключением библиотеки функций, и могут рассматриваться лишь как SDK для разработки ПО.
Архитектура ядра с кольцами защиты [ править ]
Кольца привилегий архитектуры x86 в защищённом режиме Слои трёхуровневой архитектуры
Здесь мы рассмотрим понятие кольца защиты, и её применение к современной трёхуровневой архитектуре.
Кольца защиты обеспечивают информационную безопасность и отказоустойчивость на уровне аппаратного разделения системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (нулевое кольцо), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно семейство микропроцессоров x86, начиная с x386 обеспечивает четыре кольца защиты.
На практике процессор программируется в защищенном режиме определенным образом. Для каждой локальной задачи выделяется свое локальное адресное пространство (память). В каждый момент времени в определенном регистре процессора может быть указатель только на одну из задач. Поэтому задача работает только в своем адресном пространстве и не может физически иметь доступ к другим локальным задачам. Для смены задач осуществляется т.н. переключение задач. Каждая задача имеет т.н. уровень привилегий дискриптора (DPL). Этот уровень как раз и указывает в каком кольце находится задача. Основные правила защиты по привилегиям сводятся к следующим:
- Данные из задачи (программы) с некоторым уровнем привилегий могут быть получены только программой того же или более внутреннего уровня
- Программа с некоторым уровнем привилегий может быть вызвана только программой того же или более внешнего уровня, причем вызов программы другого уровня должен осуществляться не непосредственно, а через шлюз вызова
- Все команды, управляющие механизмами защиты могут использоваться только в программах нулевого уровня, что исключает вмешательство в организацию операционной системы со стороны прикладных программ
Таким образом, данные находящиеся на более низком уровне с более высоких физически получить нельзя. С более высокого уровня можно вызвать программы только более низкого уровня, и то через т.н. шлюз. Сам шлюз готовится на более низком уровне, и определяет по сути, что с помощью его можно вызвать. И только обладая таким шлюзом программа более высокого уровня может вызвать программу более низкого уровня. По этой причине очень многие функции ядра операционной системы нельзя вызвать из клиентских программ, и для работы с ними нужно писать драйверы.
Вот такого рода защиту и должно обеспечивать полноценное ядро. Это, например, может означать, что сторонние разработчики не могут напрямую вызвать функцию ядра (этим ядро и отличается от библиотеки функций). Также сторонние разработчики не могут получить никаких данных из ядра, кроме тех которые непосредственно предоставляет само ядро. Но главное, управление программным ходом выполняет исключительно ядро, и при необходимости может блокировать любые клиентские подпрограммы (например, те которые работаю ошибочно или не согласно принятой архитектуре), а клиентским программам для осуществления вызовов специально предоставляет callback-функции или что тоже самое работает через события (аналог вызова через шлюз).
Таким образом, такого рода ядро реализует:
- так называемый каркас архитектуры для управления ходом выполнения клиентских приложений (об этом мы поговорим в следующей статье каркас архитектуры)
- внутри себя реализует библиотеку функций (внутренний SDK — для разработчика ядра)
- часть функций, как правило в определенной «обертке» (API), из своей библиотеки, через механизм защиты (например, путем callback-функций) предоставляет клиентским приложениям
Теперь понимая, что для надежности и более четкой архитектуры нужно изолировать тем или иным образом слои приложений. Только если выше говорилось о системных слоях между операционной системой и клиентскими приложениями, то мы можем пойти далее, и изолировать слои в самом клиентском приложении.
И этих слоев как минимум два, т.н. клиент-серверная архитектура. Так сложилось, что для работы с данными повсеместно используются реляционные базы данных и, как правило, в серьезных приложениях используют или Oracle или MS SQL. Вся работа с данными преимущественно происходит посредством работы на языке SQL. Более того, как правило в хорошо разработанной архитектуре, запрещается какое-либо прямое обращение к базе данных, и вся работа с базой данных ведется посредством вызова только хранимых процедур, а уже в них на SQL так или иначе ведется работа с данными. Поэтому слой базы данных уже традиционно выделен и фактически отделен. Единственно плохо когда некоторые архитектуры, пользуясь возможностями языков программирования, прямо обращаются в серверу базы данных. В тоже время программировать пользовательский интерфейс на языке SQL невозможно. Для этого используют новейшие объектно-ориентированные языки.
Но можно пойти и еще дальше, пример более общей структуры представляет трёхуровневая архитектура. В ней также отделен сервер базы данных, но аналогично технологии MVC происходит разделение бизнес-логики и визуализации. Мы уже говорили о проблемах реализации классического MVC, но сам принцип разделения остается важным, хотя и может быть реализован более качественно. Но если в технологии MVC разделение касалось на уровне одного класса с его подклассами, то в трёхуровневой архитектуре речь идет о выделении всей визуализации в отдельную самостоятельную программу, а выделению отдельной программы (сервера) бизнес-логики. Понятно, что такое физическое разделение можно осуществить только тогда, когда логически в программе строго все было уже разделено или согласно технологии MVC, или другими более современными способами.
Тогда уже на уровне развертывания ПО, можно в зависимости от необходимости комбинировать самостоятельные компоненты ПО так или иначе. Например, можно совместить сервер бизнес-логики и сервер базы данных, а на клиентские машины поставить только программы визуализации — получая таким образом тонкого клиента. Или наоборот, совместить программы визуализации и сервер бизнес-логике на клиентских машинах, отделив только сервер базы данных — получив таким образом толстого клиента.
Ядро (операционной системы)
Ядро́ — центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное обеспечение. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов.
Как основополагающий элемент ОС, ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для его работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов межпроцессного взаимодействия и обращения приложений к системным вызовам ОС.
Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации.
Содержание
Типы архитектур ядер операционных систем
Монолитное ядро
Монолитное ядро предоставляет богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.
Некоторые старые монолитные ядра, в особенности систем класса Unix, требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружать модули, выполняющие части функции ядра.
Достоинства: Скорость работы, упрощённая разработка модулей, богатство предоставляемых возможностей и функций, поддержка большого количества разнообразного оборудования.
Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.
В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называется монолитным ядром (monolithic kernel). Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме.
Таким образом, монолитное ядро — это такая схема операционной системы, при которой все компоненты её ядра являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур.
В некоторых операционных системах с монолитным ядром сборка ядра, то есть его компиляция, осуществляется отдельно для каждого компьютера, на который устанавливается операционная система. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Так как ядро является единой программой, перекомпиляция — это единственный способ добавить в него новые компоненты или исключить неиспользуемые в таких системах. Следует отметить, что присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти. Кроме того, исключение ненужных компонентов повышает надёжность операционной системы в целом.
Монолитное ядро — старейший способ организации операционных систем. Примером систем с монолитным ядром является большинство Unix-систем.
В монолитном ядре выделяются вкрапления сервисных процедур, соответствующих системным вызовам. Сервисные процедуры выполняются в привилегированном режиме, тогда как пользовательские программы — в непривилегированном. Для перехода с одного уровня привилегий на другой иногда может использоваться главная сервисная программа, определяющая, какой именно системный вызов был сделан, корректность входных данных для этого вызова и передающая управление соответствующей сервисной процедуре с переходом в привилегированный режим работы.
Данный тип архитектуры ядер имеет преимущества. В частности, монолитное ядро более производительно, чем микроядро, поскольку состоит не из множества разрозненных процессов, «общающихся» между собой через механизм посылки сообщений, а работает в одном адресном пространстве, кроме того нет необходимости осуществлять переключения между процессами-сервисами.
Примером монолитного ядра является
Примеры: Традиционные ядра BSD), Linux; ядро
Модульное ядро
Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер операционных систем компьютеров.
В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции ядра при изменении состава аппаратного обеспечения компьютера. Вместо этого модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра, поддерживающих то или иное аппаратное обеспечение (например, драйверов). При этом подгрузка модулей может быть как динамической (выполняемой «на лету», без перезагрузки ОС, в работающей системе), так и статической (выполняемой при перезагрузке ОС после переконфигурирования системы на загрузку тех или иных модулей).
Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми функциями, предоставляемыми ядром. Поэтому модульные ядра продолжают оставаться монолитными. Модульность ядра осуществляется на уровне бинарного образа, а не на архитектурном уровне ядра, так как динамически подгружаемые модули загружаются в адресное пространство ядра и в дальнейшем работают как интегральная часть ядра. Модульные монолитные ядра не следует путать с архитектурным уровнем модульности, присущий микроядрам и гибридным ядрам. Практически, динамичная загрузка модулей, это просто более гибкий способ изменения образа ядра во время выполнения — в отличие от перезагрузки с другим ядром. Модули позволяют легко расширить возможности ядра по мере необходимости.
Модульные ядра удобнее для разработки, чем традиционные монолитные ядра, не поддерживающие динамическую загрузку модулей, так как от разработчика не требуется многократная полная перекомпиляция ядра при работе над какой-либо его подсистемой или драйвером. Выявление, локализация, отладка и устранение ошибок при тестировании также облегчаются.
Модульные ядра предоставляют особый программный интерфейс (API) для связывания модулей с ядром, для обеспечения динамической подгрузки и выгрузки модулей. В свою очередь, не любая программа может быть сделана модулем ядра: на модули ядра накладываются определённые ограничения в части используемых функций (например, они не могут пользоваться функциями стандартной библиотеки С/С++ и должны использовать специальные аналоги, являющиеся функциями API ядра). Кроме того, модули ядра обязаны экспортировать определённые функции, нужные ядру для правильного подключения и распознавания модуля, для его корректной инициализации при загрузке и корректного завершения при выгрузке, для регистрации модуля в таблице модулей ядра и для обращения из ядра к сервисам, предоставляемым модулем.
Не все части ядра могут быть сделаны модулями. Некоторые части ядра всегда обязаны присутствовать в оперативной памяти и должны быть жёстко «вшиты» в ядро. Также не все модули допускают динамическую подгрузку (без перезагрузки ОС). Общей тенденцией развития современных модульных ядер является всё большая модуляризация кода, улучшение механизмов динамической подгрузки и выгрузки, уменьшение или устранение необходимости в ручной подгрузке модулей или в переконфигурации ядра при изменениях аппаратуры путём введения тех или иных механизмов автоматического определения оборудования и автоматической подгрузки нужных модулей, универсализация кода ядра и введение в ядро абстрактных механизмов, предназначенных для совместного использования многими модулями. Примером может служить VFS — «виртуальная файловая система», совместно используемая многими модулями файловых систем в ядре Linux.
Микроядро
Микроядро предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Бо́льшая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами.
Достоинства: Устойчивость к сбоям оборудования, ошибкам в компонентах системы.
Недостатки: Передача данных между процессами требует накладных расходов.
Классические микроядра предоставляют лишь очень небольшой набор низкоуровневых примитивов, или системных вызовов, реализующих базовые сервисы операционной системы.
- управление адресным пространствомоперативной памяти.
- управление адресным пространством виртуальной памяти.
- управление процессами и тредами (нитями, потоками).
- средства межпроцессной коммуникации.
Все остальные сервисы ОС, в классических монолитных ядрах предоставляемые непосредственно ядром, в микроядерных архитектурах реализуются в адресном пространстве пользователя (Ring3) и называются сервисами. Примерами таких сервисов, выносимых в пространство пользователя в микроядерных архитектурах, являются сетевые сервисы, файловая система, драйверы.
Такая конструкция позволяет улучшить общее быстродействие системы. Современная тенденция в разработке операционных систем состоит в перенесении значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью.
Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.
Основное достоинство микроядерной архитектуры — высокая степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра.
И чтобы добавить в ОС с микроядром драйвер того или иного устройства, не надо перекомпилировать всё ядро, а надо лишь отдельно откомпилировать этот драйвер и запустить его в пользовательском пространстве.
В то же время микроядерная архитектура операционной системы вносит дополнительные накладные расходы, связанные с передачей сообщений, что отрицательно влияет на производительность. Для того чтобы микроядерная операционная система по скорости не уступала операционным системам на базе монолитного ядра, требуется очень аккуратно проектировать разбиение системы на компоненты, стараясь минимизировать взаимодействие между ними. Таким образом, основная сложность при создании микроядерных операционных систем — необходимость очень аккуратного проектирования.
Микроядра типа ядра ОС GNU Hurd развиваются медленно, гораздо медленнее, чем BSD, но они обладают огромным потенциалом, то есть заделом на будущее, и, возможно, в этом самом будущем, достигнут аналогичного функционала.
Классическим примером микроядерной системы является 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 по внутренней архитектуре и является микроядерной ОС с выносом всех драйверов устройств, сетевых стеков и графической подсистемы в сервисные процессы.
Сервисные процессы (в принятой в семействе UNIX терминологии: «демоны») активно используются в самых различных ОС для задач типа запуска программ по расписанию (UNIX и Windows NT), ведения журналов событий (UNIX и Windows NT), централизованной проверки паролей и хранения пароля текущего интерактивного пользователя в специально ограниченной области памяти (Windows NT). Тем не менее не следует считать ОС микроядерными только из-за использований такой архитектуры. Решающим критерием «микроядерности» является размещение всех или почти всех драйверов и модулей в сервисных процессах, иногда с явной невозможностью загрузки любых модулей расширения в собственно микроядро, а также разработки таких расширений.
Примеры: Symbian OS; GNU/Hurd и Mac OS X; Windows CE; AIX; ChorusOS ; MorphOS.
Экзоядро
Экзоядро — ядро операционной системы компьютеров, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов. Предполагается, что API для прикладных программ будут предоставляться внешними по отношению к ядру библиотеками (откуда и название архитектуры).
Возможность доступа к устройствам на уровне контроллеров позволит эффективней решать некоторые задачи, которые плохо вписываются в рамки универсальной ОС, например реализация СУБД будет иметь доступ к диску на уровне секторов диска, а не файлов и кластеров, что положительно скажется на быстродействии.
Наноядро
Наноядро — архитектура ядра операционной системы компьютеров, в рамках которой крайне упрощённое и минималистичное ядро выполняет лишь одну задачу — обработку аппаратных прерываний, генерируемых устройствами компьютера. После обработки прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о результатах обработки (например, полученные с клавиатуры символы) вышележащему программному обеспечению при помощи того же механизма прерываний. Примером является KeyKOS — самая первая ОС на наноядре. Первая версия вышла ещё в 1983-ем году.
Гибридное ядро
Гибридные ядра это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра.
Имеют «гибридные» достоинства и недостатки.
Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов. Так, например сейчас, ядро «Linux» представляет собой монолитную систему с отдельными элементами модульного ядра. При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра — так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции.
Существуют варианты ОС Linux были бы частью ядра. Другим примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре
Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой, это не совсем так. Микроядро NT слишком велико (более 1 Мбайт, кроме того, в ядре системы находится, например, ещё и модуль графического интерфейса), чтобы носить приставку «микро». Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах. В то же время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. По мнению специалистов Microsoft, причина проста: чисто микроядерный дизайн коммерчески невыгоден, поскольку неэффективен.
Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой.
Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.
Ядро операционной системы
Как основополагающий элемент ОС, ядро представляет собой наиболее низкий уровень приложений к ресурсам системы, необходимым для их работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов
Содержание
Типы архитектур ядер операционных систем [ ]
Монолитное ядро [ ]
В отличие от «классических» монолитных ядер, модульные ядра, как правило, не требуют полной Микроядро [ ]
Наноядро [ ]
Гибридное ядро [ ]
Комбинация разных подходов [ ]
Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов.
Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйверы устройств двумя способами: и внутрь ядра, и в пользовательское пространство.