Отдельные характерные особенности операционных систем
К изучению операционных систем можно подходить с различных сторон, прежде всего в зависимости от преследуемой цели. Ниже мы рассмотрим ряд таких систем и их семейств, обращая внимание на отдельные характерные черты, которые могут быть интересны с точки зрения выбора наиболее подходящей для решения возникающей задачи платформы, а равно при изучении существующих подходов к организации систем.
Отметим, что как, пожалуй, и всем прочим базовым понятиям информатики (файл, процесс, 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.
SYSLINUX 6.04 20190226 Copyright (C) 1994-2015 H. Peter Anvin et al
boot: freedos
Booting...
FreeDOS kernel 2042 (build 2042 OEM:0xfd) [compiled May 11 2016]
Kernel compatibility 7.10 - WATCOMC - FAT32 support
(C) Copyright 1995-2012 Pasquale J. Villani and The FreeDOS Project.
All Rights Reserved. This is free software and comes with ABSOLUTELY NO
WARRANTY; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - InitDiskWARNING: using suspect partition Pri:1 FS 06: with calculated values 0-32-33 instead of 1023-254-63
WARNING: using suspect partition Pri:1 FS 06: with calculated values 65-69-4 instead of 1023-254-63
C: HD1, Pri[ 1], CHS= 0-32-33, start= 1 MB, size= 511 MB
1 FreeDOS without drivers
2 FreeDOS + HIMEMX
3 FreeDOS + JEMMEX NOEMS X=TEST
4 FreeDOS + JEMMEX + CTTY COM1
Select from Menu [01234], or press [ENTER]- 7 - Singlestepping (F8) is: OFF
JemmEx v5.79 [02/02/20]
JemmEx loaded
Kernel: allocated 45 Diskbuffers = 23940 Bytes in HMA
FreeCom version 0.84-pre2 XMS_Swap [Aug 28 2006 00:29:00]
C:\>UPTIME -r
Uptime counter reseted to zero.
C:\>PROMPT $P$G
C:\> LH FDAPM APMDOS
Performing action: APMDOS
If APMDOS slows down any app, use ADV:REG instead.
Going resident.
C:\> IF EXIST IMAGE.ISO LH SHSUCDHD /F:IMAGE.ISO
C:\> SET PATH=C:\FDOS\BIN;C:\MISC\BIN
C:\>
MEM
, в память загружены командный интерпретатор COMMAND
, программа управления энергопотреблением FDAPM
и пакетный драйвер адаптера Ethernet RTSPKT
.C:\> MEM /full
Segment Total Name Type
------- ---------------- ------------ -------------
0000 1,024 (1K) interrupt vector table
0040 768 (1K) BIOS data area
0070 8,416 (8K) IO system data
027e 4,112 (4K) DOS system data
0280 192 (0K) FILES FILES=16 (3 in this block)
028d 480 (0K) FILES FILES=16 (8 in this block)
02ac 1,328 (1K) LASTDRV LASTDRIVE=O
0300 2,048 (2K) STACKS data area
0380 272 (0K) MEM environment
0392 55,248 (54K) MEM program
1110 584,416 (571K) free
9fc0 185,840 (181K) reserved
cd1f 112 (0K) free
cd27 3,008 (3K) COMMAND program
cde4 144 (0K) free
cdee 912 (1K) FDAPM program
ce28 192 (0K) free
ce35 26,144 (26K) RTSPKT program
d498 75,360 (74K) free
e6ff 4,096 (4K) COMMAND environment
Memory Type Total Used Free
---------------- -------- -------- --------
Conventional 639K 14K 625K
Upper 108K 34K 74K
Reserved 277K 277K 0K
Extended (XMS) 260,992K 436K 260,556K
---------------- -------- -------- --------
Total memory 262,016K 761K 261,255K
Total under 1 MB 747K 48K 699K
Total Expanded (EMS) 8,576K (8,781,824 bytes)
Free Expanded (EMS) 8,192K (8,388,608 bytes)
Largest executable program size 625K (639,680 bytes)
Largest free upper memory block 74K ( 75,376 bytes)
FreeDOS is resident in the high memory area.
C:\>
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