Функции микроядра. Микроядро vs. монолит и «торжество» MINIX. Смотреть что такое "Микроядро" в других словарях

  • Системное программирование ,
  • Разработка под Linux
  • Недавно Эндрю Татенбаум, профессор Амстердамского свободного университета, автор учебной и миниатюрной Unix системы Minix, вновь оказался в центре событий благодаря эпистолярному жанру. В своем письме Интел он поблагодарил компанию за использование Minix, посетовал на то, что та не трубила об этом на каждом шагу и заявил, что из-за этого мало кто знает о том, что Minix - на сегодняшний день самая популярная ОС на свете .



    Надо отдать должное профессору, он умеет выбирать адресата, время и место для того, чтобы вызвать громкий и продолжительный эффект с помощью простого сообщения, отправленного по электронной почте. Его предыдущим корреспондентом был Линус Торвальдс, а их переписка о монолитном и микро ядре вошла в анналы истории ИТ. Без этого трудно понять, почему Эндрю Таненбаум так экзальтирован из-за мнимого успеха Миникс, которая всего лишь в течении десятка лет обеспечивала работу интеловского бэкдора IME .

    Рождение Linux и критика монолитного ядра

    26 лет назад программирования для Unix было нетривиальным делом для обычного студента, так как все разновидности Unix были платными. Чтобы освоить эту операционную систему Линус решает поставить Minix. Интернет в ту пору еще только зарождался, заказ ОС шел через обычную почту, так же как и доставка. Ради Minix пришлось раскошелиться на 169 долларов.


    У меня возникло множество претензий к Minix. Хуже всего была эмуляция терминала, очень важная для меня программа, потому что именно ее я использовал для подключения к университетскому компьютеру. Я зависел от этой эмуляции каждый раз, когда связывался с университетским компьютером, чтобы поработать с мощной Unix-системой или просто выйти в онлайн.

    Вскоре будущий создатель Linux обнаружил серьезные недостатки Minix. Так как это был всего лишь обучающий вариант Unix, то профессор преднамеренно исковеркал ее. Многие из этих недостатков можно было устранить заплаткой самого известного хакера Minix Брюса Эванса, но для того, чтобы ее поставить нужно было изрядно провозиться. Самым же существенным недостатком для Линуса была программа эмуляции терминала, которую пришлось заменить на свою собственную. Затем понадобился драйвер файловой системы и понеслось, ядро новой ОС зародилось по принципу каши из топора.


    25 августа 1991 г. Линус отправляет свое знаменитое сообщение о том, что работает над бесплатной операционной системой, но это будет не такой крупный и профессиональный проект как GNU . Помимо всего прочего внимание заслуживает тот факт, что этот и другие ранние анонсы свое операционной системы Линус отправляет в конференцию Minix, оттягивая на себя пользователей последней.


    Эндрю Таненбаум до поры до времени никак на это не реагировал, но Linux рос как снежный ком. Уже в январе 1992 г. вышла версия 0.12, в котором была реализована страничная подкачка на диск - то чего не было в Minix. Вскоре после этого профессор снизошел до выскочки, чтобы лично ему ответить и вот 29-го января Линус получает сообщение в конференцию comp.os.minix с нравоучительным содержанием. Начало было обнадеживающим.


    From: [email protected] (Andy Tanenbaum)
    То: Newsgroups: comp.os.minix
    Subject: LINUX устарела
    Date: 29 Jan 92 12:12:50 GMT

    Я тут на пару недель уезжал в США, поэтому не писал особенно о LINUX (не то чтобы я стал писать, если бы и был здесь). Однако теперь хочу сделать несколько замечаний.
    Как большинство из вас знает, для меня MINIX – хобби, которым я занимаюсь по вечерам, когда мне надоедает писать книжки, а по CNN не показывают никаких войн, революций или парламентских слушаний. Моя основная работа – преподавание и исследования в области операционных систем.

    Далее следовали справочные сведения о монолитном ядре, микроядре и об ОС, исповедующих тот, или иной принцип. Затем следовал несостоятельный с точки зрения логики довод о том, что среди специалистов по разработке операционных систем споры по данному вопросы уже прекратились ввиду явного преимущества микроядра. Дальше декларации о том, что Minix прогрессивна, а Linux - возврат в 1970-е. Кроме того, Linux привязан к одной архитектуре в то время как Minix был перенесен с Intel процессоров на другие платформы: Atari, Amiga, Macintosh, SPARC и NS32016.


    Я мог бы многое рассказать о сравнительных преимуществах этих двух подходов, но достаточно сказать, что среди специалистов по разработке операционных систем споры уже закончились. Микроядро победило. Minix – система с микроядром. Файловая система и управление памятью – это отдельные процессы, которые работают вне ядра. Ввод-вывод тоже выполняется отдельно. LINUX – монолитная система. Это большой шаг назад, в 70-е. годы .


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

    Линус принимает вызов

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


    From: [email protected] (Linus Benedict Torvalds)
    Subject: Re: LINUX устарела
    Date: 29 Jan 92 23:14:26 GMT
    Organization: University of Helsinki

    ...
    Да, linux – монолитная система, и я согласен, что микроядро лучше. Если бы у вашего сообщения не был такой спорный заголовок, я бы, вероятно, согласился с большинством ваших высказываний. С теоретической (и эстетической) точки зрения linux проигрывает. Если бы ядро GNU было готово прошлой весной, я бы и не взялся за свою разработку: беда в том, что оно не было готово тогда и не готово до сих пор. Linux выигрывает прежде всего потому, что она уже готова.

    Затем перечисляет проблемы Minix с многозадачностью в файловой системе.


    Если бы это было единственным критерием качества ядра, вы были бы правы. Однако вы не пишете о том, что микроядро в minix сделано плохо и возникают проблемы с многозадачностью (в ядре). Если бы я сделал ОС, у файловой системы которой были бы проблемы с многозадачностью, я бы не стал так поспешно осуждать других: наоборот, я бы из кожи вон лез, чтобы все забыли о моем провале. Да, я знаю, что для minix есть масса заплаток, обеспечивающих многопоточную работу, но это лишь заплатки, и Брюс Эванс говорит, что все равно остается множество проблем синхронизации.

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


    Эндрю Танебаум : Я нарочно написал Minix таким корявым, чтобы студенты могли гонять его на разнообразном и недорогом компьютерном железе, но дизайн у моей ОС норм., а не то что твой отсталый Linux. Его к тому же невозможно переносить на другие платформы. Я бы тебе на экзамене поставил пару.

    David Feustel : Ничего страшного, и у Эйнштейна были плохие отметки по математике и физике .

    Ken Thompson : Пользователям до лампочки современное ли ПО у них на компьютере, производительность гораздо важнее. Да, будущее за микроядром, однако монолитное ядро проще состряпать. Впрочем, его и запороть проще, если писать код на скорую руку.

    Randy Burns : Системные вызовы Linux совместимы с переносимыми ОС, так что жалобы на привязку к одной платформе неуместны. Наоборот, Linux закрывает брешь, позволяя нам использовать програмы GNU . Может быть через пару лет, когда Hurd и недорогие BSD системы получат распространение Linux и устареет, но сейчас мы можем наслаждаться gcc, bash, bison за бесценок и писать код для лучшей ОС .

    Pete French : А разве микроядро и монолитное ядро не являются артефактами языка программирования, на котором написаны. В чем разница между микроядром, написанным на C и монолитным ядром - на OCCAM?

    Линус Торвальдс : Ты старался так ради студентов, ну тогда понятно. Но с многозадачностью в твоей ОС все равно беда, как ни крути, а на моем «отсталом» монолитном Linux все летает. С переносимостью больших проблем не будет, так как Linux API переносимо - были бы желающие. А хорошие оценки мне и так не светят, я тут недавно с другим преподавателем архитектуры ОС повздорил.

    Lawrence C. Foard : Теоретики такие теоретики. У них прекрасные идеи, но никто их них не удосужился их проверить на деле. Интелосвкие 32-битные процессоры уже почти 10 лет как доступны на рынке, но никто кроме Линуса не написал для них ОС , которую можно пощупать, без необходимости покупать Unix AT&T за 100,000$. Готовая ОС стоит десятка бумажных. Я уже сегодня могу писать код для Linux и экспериментировать как мне вздумается.

    peter da silva : Прекрасно, что Linux существует и монолитное ядро - одна из причин того, что он был создан так быстро. Это мощный аргумент в пользу монолитного ядра и однако это не значит, что микроядро обязательно должно быть медленным, или что оно «бумажное».

    Аргументы в пользу микроядра в то время действительно перевешивали, но на сегодняшний день опыт использования обоих принципов построения ОС

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

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

    Микроядро работает с наивысшим приоритетом и обеспечивает работу остальной части операционной системы как набора серверных приложений. Технология микроядра Mach (мэк) создана в университете Карнеги Меллон и служит основой многих операционных систем.

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

    Управление виртуальной памятью,

    Управление заданиями и потоками,

    Межпроцессные коммуникации (IPC – inter-process communication),

    Управление вводом-выводом и прерываниями,

    Обеспечение клиент-серверного сервиса.

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

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

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

    Рисунок 4.1 – Перенос основного объема функций ядра в пространство пользователя

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

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

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

    Наиболее ярким представителем микроядерных ОС является операционная система реального времени QNX. Микроядро QNX планирует только планирование и диспетчеризацию процессов, их взаимодействие, обработку прерываний и сетевые службы нижнего уровня. Такое микроядро обеспечивает лишь два десятка системных вызовов и имеет размер от 8 до 46 килобайт.

    Рисунок 4.2 – Реализация системного вызова в микроядерной архитектуре

    Для построения минимальной системы QNX к микроядру следует добавить менеджер процессов, который создает процессы, управляет ими и их памятью. Для применения QNX в настольной ПЭВМ, к микроядру следует добавить также файловую систему и менеджер устройств.

    Все эти менеджеры выполняются вне пространства ядра, так что ядро остается небольшим.

    Рассмотрим кратко достоинства и недостатки микроядерных ОС. К достоинствам их можно отнести:

    Переносимость, обусловленная тем, что весь машинно-зависимый код изолирован в микроядре,

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

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

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

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

    Рисунок 4.3 – Смена режимов при выполнении системного вызова

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

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

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

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

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

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

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

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

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

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

    См. также

    Микроядра
    ОС на основе микроядер

    Wikimedia Foundation . 2010 .

    Синонимы :

    Смотреть что такое "Микроядро" в других словарях:

      Микроядро … Орфографический словарь-справочник

      Центральная часть операционной системы, выполняющая основные функции управления системой: управление виртуальной памятью; поддержка выполнения процессов; организация взаимодействия процессов; обслуживание ввода/вывода данных и прерываний. По… … Финансовый словарь - У этого термина существуют и другие значения, см. L4. Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей … Википедия

      У этого термина существуют и другие значения, см. Amoeba (значения). Amoeba Разработчик Эндрю Таненбаум и др. Исходный код Открытый Первый выпуск 1983 Последняя версия 5.3 1996 Тип ядра Мик … Википедия

      Spring экспериментальная микроядерная объектно ориентированная операционная система, разработанная Sun Microsystems в начале 1990 х. В ней использовались принципы, сходные с теми, что использовались в ядре Mach. Разработка прекратилась в середине … Википедия

      Это список известных операционных систем. Операционные системы могут быть классифицированы по базовой технологии (UNIX подобные, пост UNIX/потомки UΝΙΧ), типу лицензии (проприетарная или открытая), развивается ли в настоящее время (устаревшие или … Википедия

      У этого термина существуют и другие значения, см. Ядро. Ядро центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное… … Википедия

      Служебный список статей, созданный для координации работ по развитию темы. Данное предупреждение не устанавл … Википедия

      Служебный список статей, созданный для координации работ по развитию темы. Данное предупреждение не устанавливается на информационные статьи списки и глоссари … Википедия

      3.1.3a Разработчик Эндрю Таненбаум … Википедия

      Рабочий стол QNX 6 (Neutrino) по … Википедия

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

    В 90-е годы XX века было весьма распространенным убеждение, что большинство операционных систем следующих поколений будут строиться как микроядерные. Однако практика показывает, что это не совсем так. Разработчики желают иметь компактное микроядро, но при этом включить в него как можно больше функций, исполняемых непосредственно этим программным модулем. Ибо выполнение за­требованной функции другим модулем, вызываемым из микроядра, приводит и к дополнительным задержкам, и к дополнительным сложностям. Более того, имеется масса разных мнений по поводу того, как следует организовывать службы опе­рационной системы по отношению к микроядру; как проектировать драйверы устройств, чтобы добиться наибольшей эффективности, но сохранить функции драйверов максимально независимыми от аппаратуры; следует ли выполнять опе­рации, не относящиеся к ядру, в пространстве ядра или в пространстве пользователя; стоит ли сохранять программы имеющихся подсистем (например, UNIX) или лучше отбросить все и начать с нуля.

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

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

    Для большинства микроядерных операционных систем основой для такой архи­тектуры выступает технология микроядра Mach. Эта операционная система была создана в университете Карнеги Меллон, и многие разработчики брали с нее пример.

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

    • управление виртуальной памятью;
    • поддержка заданий и потоков;
    • взаимодействие между процессами (Inter-Process Communication, IPC);
    • управление поддержкой ввода-вывода и прерываниями;
    • сервисы хоста (host) и процессора.

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

    С применением концепции нескольких потоков выполнения на одно задание мик­роядро создает прикладную среду, обеспечивающую использование мультипро­цессоров; при этом совсем не обязательно, чтобы машина была мультипроцессорной: на однопроцессорной машине различные потоки просто выполняются в разное время. Вся поддержка, требуемая для мультипроцессорных машин, сконцентри­рована в сравнительно малом и простом микроядре.

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

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

    Наиболее ярким представителем микроядерных операционных систем является операционная система реального времени QNX . Микроядро QNX поддерживает только планирование и диспетчеризацию процессов, взаимодействие процессов, обработку прерываний и сетевые службы нижнего уровня. Это микроядро обеспечивает всего лишь пару десятков системных вызовов, но благодаря этому оно может быть целиком размещено во внутреннем кэше даже таких процессоров, как Intel 486. Как известно, разные версии этой опе­рационной системы имели и разные объемы ядер - от 8 до 46 Кбайт.