Отдельные характерные особенности операционных систем
К изучению операционных систем можно подходить с различных сторон, прежде всего в зависимости от преследуемой цели. Ниже мы рассмотрим ряд таких систем и их семейств, обращая внимание на отдельные характерные черты, которые могут быть интересны интересующимся существующими подходами к организации систем.
Отметим, что как, пожалуй, и всем прочим базовым понятиям информатики (файл, процесс, etc.), едва ли можно дать строгое определение «операционной системе». Набор предоставляемых пользователю или приложению «операций» может разительно отличаться от системы к системе. На практике это означает, что разработчик программы или пользователь в своей работе должны полагаться на документацию на конкретную систему (или, в общем случае, платформу), или же, если возникший вопрос не освещен в документации, на чтение исходного кода (если оный доступен.)
Мы начнем с более просто устроенных систем, предоставляющих меньший набор функций (и менее требовательных к аппаратному обеспечению), переходя затем к имеющим более сложное устройство.
FreeDOS
Свободная система FreeDOS берет свое начало как попытка воссоздать интерфейсы прикладного программирования (англ. application programming interface, далее: API) собственнической (англ. proprietary) системы MS-DOS, о завершении продаж и поддержки которой было объявлено в г. Первый выпуск системы состоялся в г.
Система MS-DOS, в свою очередь, возникла ( г.) как попытка создать на 16-битных аппаратных платформах на основе процессоров Intel 8086 (8088) окружение, подобное (включая и API — для облегчения переноса существующих приложений на новую систему) реализуемому крайне популярной в 70-х гг. (и используемой во встраиваемых, англ. embedded, решениях вплоть до начала XXI в.) системой CP/M.
Разработанная исходно для MS-DOS файловая система FAT нашла широкое применение в бытовых вычислительных устройствах (в частности, аудио- и видеотехнике) и была стандартизована как Ecma 107.
Система не предполагает использования функций аппаратного управления доступа к устройствам и памяти (блока англ. input-output and memory management unit, далее IOMMU), а значит не предоставляет и соответствующих функций выполняемым под ее управлением программам. (Так, например, любая программа может — вследствие ошибки или намеренно — обращаться к областям памяти, выделенным любой другой программе.) На практике, программы для данного семейства систем зачастую обращаются к устройствам (включая видеоподсистему, клавиатуру, реже — накопители и файловые системы) «напрямую», минуя системные функции.
Функции переключения между задачами (англ. task switching) также не предусмотрены (ни добровольного, ни принудительного.)
В настоящее время система представляет интерес с точки зрения изучения внутреннего устройства операционных систем (благодаря своей простоте), чему способствует в том числе и возможность запуска системы на крайне простых аппаратных платформах или моделях оных (как, например, 8086tiny.) FreeDOS может быть полезна интересующимся историей операционных систем, а равно разработчикам встраиваемых решений (хотя автору не известны современные аппаратные платформы, совместимые с FreeDOS.) Подобные соображения справедливы и для свободной с г. CP/M.
SYSLINUX 6.04 20190226 Copyright (C) 1994-2015 H. Peter Anvin et al
boot: freedos
Booting...
…
JemmEx loaded
Kernel: allocated 45 Diskbuffers = 23940 Bytes in HMA
C: HD1, Pri[ 1], CHS= 0-32-33, start=
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:\>
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, система поддерживает простые аппаратные платформы и не требует наличия IOMMU. Из отличий можно отметить поддержку современных архитектур (включая ARM и, в первом варианте, AVR) а равно наличие поддержки кооперативной многозадачности (т. е. требует от разработчика явного указания в исходном коде точек, в которых управление будет передано планировщику для передачи другим готовым к выполнению задачам или, в отсутствие таковых, перевода процессора в режим ожидания события — «сна».)
NetBSD
Система NetBSD является потомком собственнической AT&T Unix, лицензии на которую компания-собственник предоставляла университетам на льготных условиях, что и обусловило ее широкое распространение (включая вариант Berkley Software Distribution, BSD, в то время разрабатываемый в университете Калифорнии в Беркли) в образовательной среде.
Изначально данное семейство систем предполагало использование миникомпьютеров (как, например, DEC PDP-11), однако появление в г. 32-битного процессора Intel 80386, обратно совместимого со ставшими популярными в персональных компьютерах 8086 (8088) и 80286, а равно обладающими исходно предполагаемыми BSD аппаратными функциями управления доступом к устройствам и памяти (IOMMU), сделало актуальным перенос системы на появившиеся к началу 90-х персональные компьютеры с данным процессором. Первый вариант такой системы, 386BSD, вышел в г. Разногласия между разработчиками привели к появлению в г. самостоятельных проектов NetBSD и FreeBSD. В свою очередь разногласия между разработчиками NetBSD в дальнейшем привели к ответвлению проекта OpenBSD; FreeBSD была взята за основу при разработке Darwin (и, следовательно, macOS.)
Распространение Unix-подобных систем, разрабатываемых различными коллективами, сделало необходимым выработку общих принципов, терминологии и интерфейсов, что привело к выходу в г. стандарта IEEE Std 1003.1 «POSIX.1» (он же ИСО/МЭК 9945.) Копию версии г. стандарта можно найти во Всемирной паутине: http:
Помимо совместимости (хотя и неполной) с POSIX, NetBSD представляет интерес поддержкой с версии 5.0 ( г.) остаточного ядра (англ. rump kernel), позволяющей, с одной стороны, собирать включенные в ядро драйвера для выполнения в пользовательском пространстве (контексте) (англ. user space; т. е., как обычные процессы, или компоненты таковых, что полезно при отладке; а равно позволяет увеличить надежность системы, потеряв, возможно, в производительности), так и собирать пользовательские программы для выполнения в контексте ядра (англ. kernel space; другими словами, превратить отдельную программу в монолитную систему, т. н. англ. unikernel, что может позволить добиться большей производительности и меньших требований к ресурсам.)
GNU/Hurd
Основная сложность в разработке компонент ядра системы — допущенные ошибки зачастую приводят к полному сбою системы и необходимости перезагрузки. Это наблюдение привело к идее переноса как можно большего объема кода из контекста ядра в контекст пользователя (где ограничение ущерба реализовать куда как проще) и концепции микроядра (англ. microkernel.)
Обратная связь
Связаться с автором можно через канал #sdf
на IRC-сервере irc