Отдельные характерные особенности операционных систем
К изучению операционных систем можно подходить с различных сторон, прежде всего в зависимости от преследуемой цели. Ниже мы рассмотрим ряд таких систем и их семейств, обращая внимание на отдельные характерные черты, которые могут быть интересны интересующимся существующими подходами к организации систем.
Отметим, что как, пожалуй, и всем прочим базовым понятиям информатики (файл, процесс, 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.
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