Микроядерные операционные системы реферат

Обновлено: 11.05.2024

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

Созданная в университете Карнеги Меллон технология микроядра Machслужит основой для многих ОС.

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

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

 задания и потоки;

 межпроцессные коммуникации (IPC 1 );

 управление поддержкой ввода/вывода и прерываниями;

 сервисы набора хоста 1 и процессора.

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

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

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

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



Сартаков Василий

Введение в микроядерные ОС

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

За последнее десятилетие технологии вычислительных систем осуществили огромный скачок вперед и теперь да же в мобильных устройствах присутствуют процессоры с частотой большей 1GHz и модули оперативной памяти объемом 512-1024 MB. Кроме того, внутренняя архитектура программного обеспечения существенно увеличила свою сложность, появились большие программные стеки изолированных модулей осуществляющих интенсивный обмен данными. Например: При просмотре видео в интернете, в браузере исполняется код flash проигрывателя, являясь отдельным исполнимым модулем. Этот модуль взаимодействует с библиотеками кодека, декодирующего видео, с оконным менеджером, с графической подсистемой, и, в конечном счете, с ядром ОС. Такая архитектура, как можно заметить, основана на идее жесткого разделения исполнимых модулей и коммуникации между ними. Если в такой системе ядро будет построено в соответствии с микроядерной идеологией, то добавится дополнительный уровень абстракции связанный с аппаратным вводом-выводом. Иными словами на фоне интенсивного межпроцессного взаимодействия (IPC) в современных системах, дополнительный IPC возникающий от микроядра незначителен, а для некоторых приложений с соответствующей архитуктурой может быть даже более оптимальным. Таким образом, если брать во внимание архитектуру системы целиком, а не только ядра и его компонентов, можно сделать вывод что идея использования микроядерных ОС снова может стать актуальной.

Данная статья представляет собор обзор наиболее ярких событий и достижений последнего десятилетия в области микроядерных ОС.

Первое поколение микроядер

Первым поколением микроядерных ОС называют системы разработанные и созданные в 80-х года XX века. Наиболее известными проектами являются ядро Mach и операционная система QNX. Первый проект был результатом исследований в области архитектуры ОС осуществленный командой ученых в Carnegie Mellon University в конце 80-х - начале 90-х. Это ядро было медленным [1] и поддерживало только архитектуру x86, но дало огромный импульс разработке микро ядерных ОС. После закрытия проекта в CMU, микроядро развивала команда исследователей в Utah University и в то время ядро стало частью проекта GNU, получив название GNU/Mach. В настоящее время GNU/Mach является частью ОС GNU/Hurd и развивается командой энтузиастов при поддержке компании Debian.


Рис. 1. Семейство микроядерных ОС архитектуры Liedtke

Второе поколение микроядер: L4

Йохен Лидтке (Jochen Liedtke) в конце 90ых предложил новую, оптимизированную архитектуру микроядра, сначала L3, потом L4. Эта архитектура подразумевала синхронный IPC, минимальный функционал ядра, вынесение всех политик (policy) в пространство пользователя. Стремление уменьшить размер ядра помимо вопросов отказоустойчивости и безопасности ставило задачу исполнения кода ядра из кеша процессора, что должно было убрать издержки на частые переключения контекста.

L4 это идеология, и она оформлена в документах L4 eXperimental reference manual. Сейчас последняя версия[2] X.2-rev.7. На основе этой архитектуры может быть запрограммирована операционная система, благодаря чему появилось большое количество новых проектов, которые построены на L4 IPC, но преследуют разные цели и задачи.

Таких проектов за последнее десятилетие было больше двух десятков, но в этой статье представлены наиболее известные из них.

L4Ka, Karlsruhe Institute of Technology (KIT)

Операционная система L4Ka разрабатывалась командой Йохена Лидтке в соответствии c архитектурой L4. Ядро в этой ОС носило название Hazelnut и было построено в соответствии с версией X.0 L4 API. Более позднее ядро построенное в соответствии с ревизией X.2 носило название Pistachio. Это ядро существует до сих пор, но команда KIT не занимается его развитием. Поддерживает большое количество архитектур, таких как arm, power pc, x86 и другие. Ядро Pistachio получило большое распространение и на его основе было создано несколько коммерческих проектов.

Проекты NICTA Group

NICTA Group [3] - Information and Communications Technology (ICT) Research Centre of Excellence в Австралии. Nicta представляет собой государственную организацию, объединяющую ведущие ВУЗы Австралии и специализируется на узком направлении исследований. В эти направления входят научные проекты в области системного программирования, управления, искусственного интеллекта и распознавания образов, оптики и наноэлектроники - наиболее перспективными направлениями начала 21-го века. Эта организация не только проводит исследования, но и целенаправленно доводит эти исследования до рынка в виде бизнес проектов. Это можно увидеть на примере проекта L4Ka. Исследователи из NICTA разработали встраиваемую микроядерную систему NICTA::Pistachio-embedded на основе проекта L4Ka из KIT. Далее была создана компания OKL (Open Kernel Lab), которая занималась разработкой коммерческих продуктов на основе микроядра Pistachio-embedded. В 2007 году компания OKL анонсировала собственно микроядро OKL4, и это микроядро получило большое распространение в коммерческих продуктах в партнерстве с Qualcomm. В 2012 году OKL4 была продана [4] компании General Dynamics.

L4.verified - формально верифицированное ядро на архитектуре L4. Это научная разработка NICTA Group, и можно предположить, что трек у этого проекта будет аналогичен проекту OKL. Основная идея этого проекта заключается в математическом доказательстве корректности реализации ядра. Микроядерные ОС обладающие минимальным размером могут быть формально верифицированы. То есть по каждой строчке кода может быть написано математическое выражение, все функции превращены в теоремы, и дальше, используя математический аппарат можно доказать что реализация операционной системы соответствует полностью модели по которой она построена. В частности для L4.verified доказаны соответствие реализации модели и отсутствие вечных циклов. Стоимость этого исследования была порядка 6 млн$, длился проект 7 лет. Объем работы был оценен[5] в 25 человеко-лет. Это колоссальная и очень сложная работа. Вероятными областями применений такой системы являются военное оборудование и системы безопасности.

seL4 - это еще один проект NICTA и является операционной системой для систем безопасности. Информации об этом проекте мало, но с официального сайта есть возможность скачать исполнимые образы.

Проекты Technische Universitat Dresden (TUD)

Научная группа под руководством профессора Hermann Hartig в TUD участвовала в разработке микроядерных ОС совместно с Йохеном Лидтке. Эта группа создала собственную реализацию архитектуры L4 в микроядрах L4.Sec, Fiasco/L4.Fiasco и Fiasco.OC. Кроме того ими была разработана операционная система реального времени DROPS[6] (Dresden Real-Time Operating System Project), разработана доверенная графическая система Nitpicker и многое другое.

Современные микроядра

Fiasco.OC [7] микроядро реализованное на языке программирования C++, построенное по концепции Everything Is Object. Поддерживает архитектуры ARM, x86, ppc, sparc v8, а так же современные отладочные средства и платформы на подобие Pandaboard и Beagleboard. Самостоятельно микроядро функционировать не может как следствие у него должно быть окружение - набор прикладных программ и модулей реализующих полезный функционал. Таким окружением для микроядра Fiasco.OC является L4Re[8] (L4 Runtime Environment). В его состав входят паравиртуализированный L4Linux - позволяющий использовать скомпилированное для Linux прикладное ПО, DDEKit - набор исходного кода (wrapper), позволяющий использовать драйвера ОС Linux, а так же большой набор библиотек и прикладных программ, адаптированных для запуска поверх микроядра. Среди таких приложений стоит выделить TCP/IP Стек LwIP с набором драйверов сетевых устройств, доверенный графический интерфейс (GUI) Nitpicker и графическую подсистему Mag. Это все позволяет создавать на основе микроядра Fiasco.OC современные аппаратно-программные комплексы.

Genode Framework [9] является Open Source проектом выпускников TUD. Его разработчики ставили перед собой задачу создания унифицированного окружения для множества разных микроядерных проектов. Важными качествами этого проекта является наличие доверенного графического интерфейса пользователя (GUI), поддержка Qt, а так же специальных возможностей микроядер. Например, для микроядра Fiasco.OC разработан паравиртуализированный L4Linux, представляющий собой ядро Linux запускаемое в пространстве пользователя. Фреймворк Geode позволяет использовать L4Linux в свое окружении. Аналогично присутствует поддержка L4Linux для ядра OKL4. Кроме того Genode Фреймворк содержит в себе DDE_Kit для использования исходного кода драйверов Linux. Genode поддерживает разнообразное количество ядер, таких как Fiasco, Fiasco.OC, OKL4, Pistachio, HelenOS, Linux. Кроме того оно содержит собственное ядро с минимальным функционалом называемым base-hw. С недавних пор Genode стал способен заменить полностью Linux для сборки, то есть сборку и отладку окружения можно полностью производить на Genode. Помимо этого Genode поддерживает механизмы аппаратной виртуализации ARM TrustZone, что позволяет использовать этот фреймворк для создания доверенных решений.

Микро гипервизор NOVA [10] (NOVA OS Virtualization Architecture) является гипервизором первого порядка (bare metal), то есть запускается напрямую на аппаратной платформе. Он разработан выпускниками TUD и сейчас развивается в Intel. В основе этого микрогипервизора находится микроядерная ОС архитектуры L4. Архитектура системы такова, что позволяет исполнять прикладное ПО параллельно с виртуальными машинами. Благодаря этому на основе гипервизора NOVA можно создавать доверенные решения, в которых доверенное ПО (например криптография) будет исполняться в отдельном, жестко отделенном от виртуальных машин окружении. Таким окружением например может быть фреймворк Geode, так как в Genode есть поддержка этого гипервизора. Помимо Genode NOVA поддерживает собственное окружение NOVA User Land (NUL).

Другие микроядерные проекты

Помимо семейства L4 в последнее десятилетие создавались и развивались другие микроядерные проекты. Микроядро QNX продолжало развиваться и стало де-факто стандартом для применения в системах промышленной автоматизации.

Проект MINIX3

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

Микроядерная операционная система HelenOS

Микроядерная операционная система HelenOS[11] так же являлась учебно-научной работой как и MINIX3. Эта система разработана студентами Faculty of Mathematics and Physics at Charles University in Prague. Изначально в этом проекте было множество архитектурных недостатков. Например, система позиционировалась как микроядерная, в то время как часть драйвера каждого устройства находилась в пространстве ядра. Кроме того HelenOS не поддерживала оперативную память больше 2Gb, а набор драйверов был минимальным и устаревшим. Эта система не позволяет использовать драйвера Linux а так же запускать исполнимый код для Linux. В последние несколько лет архитектура операционной системы была серьезно переработана, весь код драйверов был полностью убран из ядра в пространство пользователя, а после сотрудничества с Genode Labs микроядро HelenOS получило поддержку в Фреймворке Genode.

Проект Microsoft Research Singularity

Singularity [12] - это исследовательский проект компании Microsoft Research. Эта операционная система работает в общем адресном пространстве, а изоляция[13] процессов создана программно, а не аппаратно. В обычных монолитно-модульных, или микроядерных L4 системах, разделение адресных пространств делает по средством аппаратного обеспечения: центральный процессор обладает разными режимами работы (Ring0-Ring3), и привилегированный код ядра и код пользовательских программ находятся в разных режимах (кольцах). Передача данных между ними осуществляется при помощи прерываний, а жесткая изоляция процессов гарантируется блоком MMU (Memory Management Unit). Такая архитектура для микро ядерных систем добавляет большое количество лишних операций при передаче данных, и разработчики Singularity решили отказаться от разделения на user space и kernel space, благодаря чему производительность Singularity на операциях ввода-вывода больше да же чем монолитно-модульный Linux.

Защита доступа к памяти со стороны устройств реализована с использованием IOMMU. Этот механизм ограничивает DMA доступ устройства к оперативной памяти, что позволяет обезопасить от повреждения ядра и программ вредоносным устройством.

Микроядерная операционная система Barelfish

Система опубликована под лицензией BSD и ее исходный код доступен.

Заключение о перспективах микроядерных ОС

Анализируя проекты последнего десятилетия можно сделать вывод о неугасании интереса научного сообщества к микроядерным ОС. Микроядерные ОС за последнее десятилетие произвели качественный скачек в производительности и в настоящее время переходят из состояния исследовательских университетских проектов в реальные коммерческие продукты. Кроме того архитектура микроядерных ОС развивается для применения в распределенных системах (Barelfish), встраиваемых систем и систем общего назначения (Fiasco.OC, Genode, HelenOS, MINIX3), а так же узкоспециализированных доверенных решений и безопасности (Singularity, seL4, L4.Verified). Коммерческий успех проекта OKL4 демонстрирует потребность в микроядрах со стороны больших корпораций.

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

Литература по микроядрам

  1. Hartig H. et al. The performance of ?-kernel-based systems //ACM SIGOPS Operating Systems Review. - ACM, 1997. - Т. 31. - №. 5. - С. 66-77.
  2. Dannowski U. et al. L4 experimental kernel reference manual //Version X. - Т. 2.
  3. Klein G. et al. Verifying a high-performance micro-kernel. - 2007.
  4. Hunt G. C., Larus J. R. Singularity: rethinking the software stack //ACM SIGOPS Operating Systems Review. - 2007. - Т. 41. - №. 2. - С. 37-49.

Знаете ли Вы, что, как и всякая идолопоклонническая религия, релятивизм ложен в своей основе. Он противоречит фактам. Среди них такие:

1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")

2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.

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

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

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

Содержание работы
Файлы: 1 файл

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

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

По дисциплине: Операционные системы и среды

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

Выполнил: студент гр. _______________

1.Микроядерная архитектура, концепция………………. …………..4-7

3. Ядро в привилегированном режиме………………………….……..12-17

5. Аппаратная зависимость и переносимость ОС………………. ….25

6.Типовые средства аппаратной поддержки ОС……………………. 26-29

7. Машинно-зависимые компоненты ОС…………………………..…30-31

8. Переносимость операционной системы……………………………32-34

9. Преимущества и недостатки микроядерной архитектуры…. 35-38

10. Двоичная совместимость и совместимость исходных текстов….39-40

11. Трансляция библиотек……………………………………………. 41-42

12. Способы реализации прикладных программных средств……..…43-47

Список используемой литературы …………………. ………………..50

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

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

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

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

1. Микроядерная архитектура, концепция

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

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

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

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

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

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

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

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

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

2. Ядро и вспомогательные модули ОС

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

ядро — модули, выполняющие основные функции ОС;

модули, выполняющие вспомогательные функции ОС.

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

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

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

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

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

Решение о том, является ли какая-либо программа частью ОС или! нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС. Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса программы является Web-браузер компании Microsoft, который сначала поставлялся как отдельное приложение, затем стал частью операционных систем Windows NT 4.0 и Windows 95/98, а сегодня существует большая вероятность того, что по решению суда этот браузер снова превратится в самостоятельное приложение.

Рис. 3.1. Нечеткость границы между ОС и приложениями

Вспомогательные модули ОС обычно подразделяются на следующие группы:

утилиты — программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;

системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

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

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

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

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

По основному архитектурному принципу операционные системы разделяются на микроядерные и макроядерные (монолитные). В некоторой степени это разделение тоже условно.

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

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

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

Микроядерные операционные системы

Микроядерная архитектура является альтернативой классическому (монолитному) способу построения операционной системы.

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

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


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

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

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


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

Операционные системы, основанные на концепции микроядра, в высокой степени удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью, расширяемостью, надежностью и создавая хорошие предпосылки для поддержки распределенных приложений. За эти достоинства приходится платить снижением производительности, и это является основным недостатком микроядерной архитектуры.

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

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

Читайте также: