Современная электроника №2/2019
СОВРЕМЕННЫЕ ТЕХНОЛОГИИ 23 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2019 Рис. 1. Архитектура ядра ОС цессоров, поддерживающих аппарат- нуювиртуализацию; добавление гипер- визора в список доверенных частейПО, так как все прочие компоненты системы зависят от него. Также для такой систе- мы сложнее разрабатывать прикладное ПО: виртуальные машины по степени изоляции сравнимы с физически раз- дельными компьютерами, поэтому взаи- модействие между ними является более сложным, нежели взаимодействие про- цессов в рамках одной ОС. Всё этопозволяет заключить, что вир- туализация не даётся бесплатно, к тому же возрастающая сложность процессо- ров также не помогает в вопросахповы- шения надёжности и огромное количе- ствоаппаратныхошибокиуязвимостей впроцессорахвпоследнее времяпоявля- етсяименноиз-заихвысокойсложности. Одним словом, решение хоть и отно- сительно хорошее, но применимое не во всех ситуациях, особенно в системах жёсткого реального времени с особы- ми требованиями к надёжности. Между тем существующие техноло- гии защиты памяти в виде разделения режимов работы процессора и установ- ки прав доступа к памяти в виде MPU/ MMU способны обеспечить основу для построения защищённых и надёжных приложений. На этой основе можно строить сколь угодно сложные системы и изолировать приложения друг от дру- га. При этом от процессора не требует- ся аппаратной поддержки механизмов виртуализации. Разумеется, если при- чиной использования Linux является его набор драйверов, отсутствующий в других ОС, то вариант с гипервизором остаётся единственно возможным. Если же вопрос с драйверами стоит менее остро, то целесообразно рассмотреть другие варианты обеспечения надёж- ности, в целях снижения сложности. М ИКРОЯДРО Попытки разделить функционал ядра ОС на более удобные для понимания и изолированные друг от друга ком- поненты начались практически одно- временно с разработкой ранних ОС. Большой объём инженерных усилий был затрачен на разработку так назы- ваемых микроядер, первые представи- тели которых появились в 70-е годы. Микроядропредполагает выполнение таких традиционныхкомпонентов ядра, какфайловые системы, драйверыисете- выепротоколыв видеобычныхприложе- ний, называемых также серверами, пото- мучтоони, поаналогиис сетевымисерве- рами, предоставляют услугипрограммам пользователя. Вмикроядернойархитекту- реприложение взаимодействует с серве- рами, используямеханизмымежпроцесс- ноговзаимодействия, например, спомо- щьюобмена сообщениями (см. рис. 1). На ядро возлагаются только базовые обязанности вроде планировщика и реализации механизмов межпроцесс- ного взаимодействия. Серверы изоли- рованы друг от друга и от ядра, а кроме того, обладают (в большинстве случа- ев) структурой в виде цикла обработ- ки сообщений. За счёт такой архитек- туры микроядерные системы, как пра- вило, более просты и надёжны. Стоит особо подчеркнуть, что попу- лярная в последнее время практи- ка отнесения ОС к микроядерным на основании только размера ядра являет- ся ошибочной. Микроядро – это прежде всего именно архитектура, в которой компоненты самой ОС выполняются в пользовательском режиме и обслу- живают запросы приложений через механизмы межпроцессного взаимо- действия. Компактный размер само- го ядра является побочным эффектом от такой архитектуры, а не критерием отнесения ОС к тому или иному типу. Отсутствие функционала в ядре, тре- бующего изменений для поддержки нового оборудования или сетевых про- токолов, выгодно отличает микроядер- ную архитектуру от монолитных ядер. По мере исправления ошибок новые ошибки практически не вносятся, так как отсутствует параллельный процесс развития ядра. Это даёт надежду на то, что рано или поздно этот процесс раз- работки сойдётся к программе, в кото- рой нет эксплуатируемых ошибок. М ИКРОЯДЕРНЫЙ UNIX Проблемой, ограничивающей при- менение микроядерной архитектуры в надёжных системах, является огром- ное количество унаследованного кода, который использует интерфейсы UNIX (POSIX). Преодолеть эту проблему при- званы попытки реализовать UNIX- подобный интерфейс поверх микро- ядра. Это позволило бы использовать достоинства микроядер с существую- щей инфраструктурой. Среди применяемых ОС с такой архи- тектурой можно упомянуть MINIX, а также операционную систему реаль- ного времени (ОСРВ) QNX. Архитек- тура этих ОС построена вокруг микро- ядра, которое управляет процессами и их взаимодействием, а все драйверы, стеки протоколов и файловые систе- мы вынесены в пользовательское про- странство и могут быть перезапущены во время работы. К сожалению, попытки реализовать ОС UNIX, которая не была бы монолит- ной системой, сталкиваются с фунда- ментальными проблемами, присущими самому UNIX-подобному интерфейсу. Если в монолитных ОС состояние про- цесса, такое как открытые файлы, сете- вые сокеты и прочее находится в неко- торых структурах данных внутри ядра (см. рис. 2), то в микроядрах это состо- яние хранится уже не в одном месте, а в Приложение Аппаратура Аппаратура VFS IPC, файловая система IPC, планировщик, управление памятью Планировщик, управление памятью Драйверы устройств Приложение Сервер UNIX Сервер файлов Драйвер Системный вызов ОС с монолитным ядром ОС на основе микроядра Режим пользователя Режим ядра Представление приложений в ядре ОС Монолитное ядро Рис. 2. Информация о состоянии приложений в монолитном ядре Приложения
RkJQdWJsaXNoZXIy MTQ4NjUy