Отдельные характерные особенности операционных систем
К изучению операционных систем можно подходить с различных сторон, прежде всего в зависимости от преследуемой цели. Ниже мы рассмотрим ряд таких систем и их семейств, обращая внимание на отдельные характерные черты, которые могут быть интересны с точки зрения выбора наиболее подходящей для решения возникающей задачи платформы, а равно при изучении существующих подходов к организации систем.
Отметим, что как, пожалуй, и всем прочим базовым понятиям информатики (файл, процесс, etc.), едва ли можно дать строгое определение «операционной системе». Набор предоставляемых пользователю или приложению «операций» может разительно отличаться от системы к системе. На практике это означает, что разработчик программы или пользователь в своей работе должны полагаться на документацию на конкретную систему (или, в общем случае, платформу), или же, если возникший вопрос не освещен в документации, на чтение исходного кода (если оный доступен.)
Мы начнем с более просто устроенных систем, предоставляющих меньший набор функций (и менее требовательных к аппаратному обеспечению), переходя затем к имеющим более сложное устройство.
FreeDOS
Свободная система FreeDOS берет свое начало как попытка воссоздать интерфейсы машинного программирования (англ. application binary interface, далее: ABI) собственнической (англ. proprietary) системы MS-DOS, о завершении продаж и поддержки которой было объявлено в г. Первый выпуск системы состоялся в г. Одной из целей проекта является обеспечение возможности запуска большинства программ для MS-DOS без какого-либо их изменения.
Система MS-DOS, в свою очередь, возникла ( г.) как попытка создать на 16-битных аппаратных платформах на основе процессоров Intel 8086 (8088) окружение, подобное (включая и интерфейсы прикладного программирования, англ. application programming interface, далее: API) реализуемому крайне популярной в 70-х гг. (и используемой во встраиваемых, англ. embedded, решениях вплоть до начала XXI в.) системой CP/M. Предполагалось, что существенная часть уже существующих для CP/M приложений будет без особых сложностей перенесена на новую систему.
Разработанная исходно для MS-DOS файловая система FAT нашла широкое применение в бытовых вычислительных устройствах (в частности, аудио- и видеотехнике) и была стандартизована как Ecma 107.
В настоящее время система представляет интерес с точки зрения изучения внутреннего устройства операционных систем (благодаря своей простоте), чему способствует в том числе и возможность запуска системы на крайне простых аппаратных платформах или моделях оных (как, например, 8086tiny.) FreeDOS может быть полезна интересующимся историей операционных систем, а равно разработчикам встраиваемых решений (хотя автору не известны современные аппаратные платформы, совместимые с FreeDOS.) Подобные соображения справедливы и для свободной с г. CP/M.
Contiki
Операционная система для встраиваемых систем с акцентом на использование сетей передачи данных и протоколов Internet. Первый вариант разрабатывался в ‒ гг. Второй вариант (англ. next generation), отличающийся, среди прочего, несколько сокращенным набором поддерживаемых аппаратных платформ, разрабатывается по настоящее время.
В отличие от FreeDOS, система поддерживает современные архитектуры (включая ARM и, в первом варианте, AVR), а равно кооперативную многозадачность (т. е. требует от разработчика явного указания в исходном коде точек, в которых управление будет передано планировщику для передачи другим готовым к выполнению задачам или, в отсутствие таковых, перевода процессора в режим ожидания события — «сна».)
Система представляет интерес в первую очередь с точки зрения разработки встраиваемых приложений, включая предназначенные для взаимодействия с Internet.
NetBSD
Система NetBSD является потомком собственнической AT&T Unix, лицензии на которую компания-собственник предоставляла университетам на льготных условиях, что и обусловило ее широкое распространение (включая вариант Berkley Software Distribution, BSD, в то время разрабатываемый в университете Калифорнии в Беркли) в образовательной среде.
Изначально данное семейство систем предполагало использование миникомпьютеров (как, например, DEC PDP-11), однако появление в г. 32-битного процессора Intel 80386, обратно совместимого со ставшими популярными в персональных компьютерах 8086 (8088) и 80286, а равно обладающими исходно предполагаемыми BSD аппаратными функциями управления доступом к устройствам и памяти (блока англ. input-output and memory management unit, далее IOMMU), сделало актуальным перенос системы на появившиеся к началу 90-х персональные компьютеры с данным процессором. Первый вариант такой системы, 386BSD, вышел в г. Разногласия между разработчиками привели к появлению в г. самостоятельных проектов NetBSD и FreeBSD. В свою очередь разногласия между разработчиками NetBSD в дальнейшем привели к ответвлению проекта OpenBSD; FreeBSD была взята за основу при разработке Darwin (и, следовательно, macOS.)
Распространение Unix-подобных систем, разрабатываемых различными коллективами, сделало необходимым выработку общих принципов, терминологии и интерфейсов, что привело к выходу в г. стандарта IEEE Std 1003.1 «POSIX.1» (он же ИСО/МЭК 9945.) Копию версии г. стандарта можно найти во Всемирной паутине: http:
В отличие от рассмотренных выше систем, NetBSD не позволяет пользовательским программам напрямую обращаться к устройствам или к памяти других программ. Такая изоляция обеспечивает бо́льшую надежность системы: сбой программы, как правило, приводит к ее аварийному завершению, но не к сбою системы в целом. Это означает, однако, что должна быть некая программа, управляющая такой изоляцией и, следовательно, действующая вне ее. В случае Unix-подобных систем, такую программу называют ядром. Как правило ядро является достаточно сложной программой и, несмотря на усилия разработчиков, ошибки в нем (которые, в этом случае, могут приводить к сбою системы в целом) не столь уж редки.
NetBSD представляет интерес поддержкой с версии 5.0 ( г.) остаточного ядра (англ. rump kernel), позволяющей, с одной стороны, собирать включенные в ядро драйвера для выполнения в пользовательском пространстве (англ. user space; т. е., как обычные процессы, или компоненты таковых, что полезно при отладке; а равно позволяет увеличить надежность системы, потеряв, возможно, в производительности), так и собирать пользовательские программы для выполнения в контексте ядра (англ. kernel space; другими словами, превратить отдельную программу в монолитную систему, т. н. англ. unikernel, что может позволить добиться большей производительности и меньших требований к ресурсам.)
Xen
Гипервизор Xen (читается: «дзен»), строго говоря, едва ли может быть назван операционной системой. Тем не менее, его роль в чем-то подобна роли ядра системы; однако под его управлением работают не приложения, но ядра и системы. Так, в частности, Xen не позволяет выполняемым параллельно на данной машине различным системам обращаться к памяти друг-друга, а равно предотвращает попытку управления одним устройством из различных систем.
Появлению Xen ( г.) способствовало наблюдение, что многие современные системы используют не более двух колец защиты (англ. protection ring; имеющее наибольшие привилегии кольцо 0 реализует контекст ядра; наименьшие — контекст пользователя) из четырех реализуемых процессором Intel 80386 и следующими за ним. В режиме паравиртуализации, Xen выполняется в кольце 0, ядро же должно быть адаптировано для выполнения в кольце 1 (приложения адаптации не требуют.) В режиме аппаратной виртуализации, от процессора требуется поддержка «кольца −1», в котором выполняется гипервизор; адаптация ядра в этом случае не требуется.
Управление Xen само по себе выполняется достаточно сложными приложениями, требующими некоторой операционной системы, называемой в этом контексте привилегированным доменом (англ. dom0; в противоположность пользовательскому домену, англ. domU.) Такой системой может быть, в частности, рассмотренная выше NetBSD, поддерживающая Xen начиная с версии 3.0 ( г.)
GNU/Hurd
было объявлено о начале проекта GNU разработки полностью свободной Unix-подобной системы, включающей средства разработки (компиляторы, компоновщики, ассемблеры, etc.), редакторы, программы обработки текстов, и, в перспективе, любые иные средства, которые могут быть полезны пользователю.
К началу 90-х система в целом обрела форму, но была лишена одного из ключевых элементов — собственного ядра. (Т. е. существовала в виде набора различных программных пакетов, предназначенных для использования на различных Unix-подобных системах.)
Напомним, что основную сложность в разработке компонент ядра системы представляет то, что допущенные ошибки зачастую приводят к полному сбою системы и необходимости перезагрузки. Это наблюдение привело к идее переноса как можно большего объема кода из контекста ядра в контекст пользователя (где куда как проще минимизировать ущерб от сбоя.) Концепция микроядра (англ. microkernel) предполагает оставление в контексте ядра лишь основных функций управлением доступа к памяти и устройствам, а так же, возможно, какого-то набора основных драйверов устройств.
В г. в университете Карнеги — Меллона была начата разработка микроядра Mach на основе ядра системы 4.2BSD. Разработка завершилась выходом в г. версии 3.0, в которой, по мнению разработчиков, концепция микроядра была реализована в полной мере.
было объявлено о начале разработки на основе микроядра Mach ядра GNU Hurd. (Под ядром в данном случае понимается набор выполняемых в непривилегированном контексте пользователя программ, реализующих функции, которые в Unix-подобных системах традиционно реализуются в привилигерованном контексте ядра.)
Разработка Mach продолжалась в университете Юты до версии 4; начиная с г. микроядро разрабатывается в рамках проекта GNU (как GNU Mach.)
Отдельные компоненты GNU широко используются в различных системах (включая, например, NetBSD выше) и представляют интерес как с точки зрения практического применения, так и с точки зрения изучения внутренней организации систем и их компонент. Вариант системы GNU, использующий ядро GNU Hurd и микроядро GNU Mach (называемый, в целом, GNU/Hurd), представляет в настоящее время интерес, главным образом, с точки зрения изучения существующих и разработки новых подходов к организации операционных систем.
GNU/Linux
Параллельно с началом разработки GNU Hurd в г. выходит ядро Linux. Разработка данного ядра, а равно перенос компонент системы GNU на него, привлек интерес куда как большего количества программистов, нежели разработка микроядра GNU Mach и ядра GNU Hurd, что обусловило быстрое развитие и распространение систем, использующих компоненты GNU и ядро Linux, и называемых GNU/Linux.
Семейство систем GNU/Linux представляет значительный интерес с практической точки зрения; система широко используется как платформа для «серверных» приложений; распространена и на «настольных» компьютерах. Ядро Linux само по себе достаточно распространено и, в частности, во встраиваемых системах; вместо компонент GNU в этом случае нередко применяются альтернативы, как, например, Busybox и Musl. Тем не менее, сложность внутреннего устройства и высокая скорость разработки именно ядра Linux значительно ограничивают возможность использования его в исследовательских или учебных целях.
Обратная связь
Связаться с автором можно через канал #sdf
на IRC-сервере irc