Как
часто вы перезагружали ваш телевизор
в прошедшем году? Вероятно, гораздо
меньше, чем ваш компьютер. Конечно же,
для этого есть много «резонов»,
но всё больше и больше пользователей,
далёких от техники, не хотят и слышать
о них. Они хотят только, чтобы их компьютер
всё время прекрасно работал и никогда
не отказывал. MINIX 3 является проектом по разработке
операционной системы, надёжной, как
телевизор, для встраиваемых систем и
критических приложений, как, впрочем,
и для будущих 50-долларовых однокристальных
портативных компьютеров и настольных
систем общего применения. Сегодня эта
маленькая, простая и надёжная операционная
система уже существует. И прошу заметить:
это последняя публикация в дискуссии
на тему альтернативных ОС.
Исторический
экскурс
MINIX 3 имеет ясное будущее, но несколько
затушёванное прошлое. Первая версия,
MINIX 1, была создана в 1987 году и была первым
клоном UNIX с полностью открытым исходным
кодом. Она разрабатывалась быстро и
скоро обрела свою собственную группу
USENET (comp.os.minix) с 40'000 подписчиков в течение
3 месяцев – это большая цифра для времени,
когда Интернет был доступен только
исследователям из университетов и
студентам. Одним из первых приверженцев
MINIX был финский студент по имени Линус
Торвальдс, который пошёл и купил ПК
специально для того, чтобы запустить
MINIX, очень тщательно изучил её и затем,
вдохновлённый MINIX, решил написать свою
собственную операционную систему. Хотя
Линус и знал MINIX очень хорошо, он не
заимствовал из неё какой-либо код, как
приписывают ему некоторые.
Система Линуса выросла в современную
операционную систему Linux. Автор MINIX,
Эндрю Таненбаум (Andrew
Tanenbaum,
и Торвальдс провели несколько красивых
публичных дискуссий по устройству
операционных систем, первую из них в
1992 году,
а самую последнюю – в 2006 году (см. перевод - прим. CITKIT.ru).
Возрождение
Хотя
MINIX была (и остаётся по-прежнему) широко
используемым инструментом для курсов
по изучению операционных систем в
университетах, она получила новый
импульс в 2005 году, когда Таненбаум собрал
новую команду разработчиков для полной
переделки её в сверхнадёжную систему.
Хотя MINIX 3 и имеет общие исторические
корни с MINIX 1 и MINIX 2 (реализованной в 1997
году как POSIX-совместимая ОС), но это
фактически новая система (ситуация
аналогична тому, как соотносятся Windows
XP и Windows
3.1).
Различные
исследования показывают, что программное
обеспечение в общем случае содержит
порядка 6÷16
ошибок на 1000 строк кода и что драйверы
устройств имеют в 3÷7
раз больше ошибок, чем вся остальная
операционная система. Если добавить
ещё тот факт, что 70% типовой операционной
системы состоит из драйверов устройств,
то становится ясно, что драйверы устройств
являются самым большим источником
ошибок. Для Windows
XP, например,
85% сбоев происходят из-за ошибок в
драйверах устройств. Очевидно, для того,
чтобы сделать ОС надёжной, нужно что-то
сделать с этими «вредоносными»
драйверами устройств. Построение
системы, надёжной, несмотря на неизбежное
существование ошибок в драйверах, и
было главной причиной появления MINIX 3.
Конструкция
Подход,
используемый в MINIX 3 для достижения
высокой надёжности, основан на изоляции
ошибок. В частности, в отличие от
традиционных ОС, где весь код объединён
в единую огромную исполняемую программу,
работающую в режиме ядра, в MINIX 3 в режиме
ядра работает только крошечная часть
кода – всего около 4'000 строк кода. Этот
код обслуживает прерывания, диспетчеризацию
процессов и межпроцессное взаимодействие
(interprocess
communication
- IPC). Оставшаяся часть операционной
системы работает как набор процессов
в пространстве пользователя, причём
каждый из них защищён аппаратно
диспетчером памяти (MMU) и ни один из них
не имеет привилегий суперпользователя.
Один из этих процессов, наречённый сервером
реинкарнации,
хранит
таблицы всех остальных процессов, и
когда один из этих процессов начинает
работать некорректно или отказывает,
сервер реинкарнации автоматически
заменяет его новой копией. Поскольку
многие ошибки нестабильны и возникают
неожиданно, в большинстве случаев
перезапуск отказавшего компонента
решает проблему и позволяет системе
восстановить себя без перезагрузки и
без того, чтобы пользователь вообще
заметил это. Это свойство называется
«самовосстановление» (или
«самолечение» - кому что больше
нравится – прим. переводчика)
и оно
отсутствует в традиционных системах.
Структура
MINIX 3 показана на Рис. 1. Она спроектирована
как многоуровневая конструкция. Внизу
находится микроядро, работающее в режиме
ядра и состоящее приблизительно из
3'000 строк кода на С и 800 строк кода на
ассемблере. Выше него находится уровень
драйверов устройств, причём каждый
драйвер является отдельным процессом
в пространстве пользователя для
облегчения его замены в случае, если он
откажет. Затем идут серверы, которые
составляют ядро операционной системы.
Они включают сервер реинкарнации,
упомянутый выше, файловый сервер,
диспетчер процессов и др., включая Х
сервер, хранилище данных (data
store)
и множество прочих.
И, наконец, сверху расположены процессы
пользователя. Хотя изнутри MINIX 3 совершенно
не похожа на остальные UNIX-образные
системы, она поддерживает стандартный
POSIX-интерфейс приложений, так что обычное
ПО для UNIX может быть довольно легко в
неё портировано.

Рис.
1.
Архитектура MINIX 3
Компоненты
взаимодействуют между собой посылкой
сообщений фиксированной длины. Например,
процесс пользователя запрашивает файл,
посылая сообщение файловому серверу,
который в свою очередь, проверяет свой
кэш и, если необходимый блок отсутствует,
посылает сообщение процессу дискового
драйвера начать получение блока. И хотя
посылка сообщения добавляет немного
дополнительного времени к длительности
процесса обмена (около 500 нс на 3 ГГц Pentium
4), система остаётся
вполне быстродействующей. Например,
полная сборка системы, требующая более
120 компиляций, укладывается в 10 секунд.
Точка
зрения пользователя
С
пользовательской точки зрения MINIX 3
выглядит, как UNIX, но не такой раздутый.
Она содержит X Window
System
и более 400 стандартных программ UNIX,
включая:
-
Командные
процессоры (shells):
ash,
bash,
pdksh, rsh
-
Редакторы:
emacs,
nvi, vim,
elvis, elle, mined,
sed, ed,
ex
-
Языки
программирования (language
tools):
cc,
gcc, g++, bison,
flex,
perl, python,
yacc
-
Средства
программирования (programming
tools):
cdiff, make,
patch,
tar,
touch
-
Сетевые
средства (networking):
ssh,
telnet,
ftp, lynx,
mail,
rlogin, wget, pine
-
Файловые
утилиты: cat,
cp, bzip2, compress,
mv, dd, uue, GNU utilities
-
Текстовые
утилиты: grep, head,
paste,
prep,
sort,
spell,
tail
-
Администрирование:
adduser, cron, fdisk,
mknod, mount,
cvs, rcs
-
Игры:
dungeon,
nethack
В
настоящее время пользовательским
интерфейсом является только Х, но со
временем может быть добавлен и графический
пользовательский интерфейс (GUI), если
подходящий лёгкий GUI найдётся. По этой
ссылке
можно посмотреть скриншоты.
Доступность
MINIX
3 является программным обеспечением с
открытыми исходными кодами,
распространяющимся под лицензией BSD.
Она имеет свой собственный Интернет-сайт
(http://www.minix3.org),
с которого может быть скачан загружаемый
образ CD-ROM, содержащий все исходники и
исполняемые файлы (всё
это читатели
могут также найти и на сайте русскоязычной
группы разработчиков ОС MINIX 3 - http://www.minix3.ru
– прим. переводчика).
Для её
установки просто загрузите CD-ROM, войдите
как root
и наберите setup.
Установка займёт около 10 минут. После
установки системы с CD-ROM или с Интернет-сайта
простым набором: packman
с последующим выбором может быть
загружено большое количество пакетов.
В настоящее время MINIX 3 работает на
платформе х86, но работа над портами на
PowerPC и Xscale уже идёт. Она также прекрасно
работает на виртуальных машинах, таких,
как VMware
и Xen.
С
тех пор, как MINIX 3 была публично анонсирована
в начале 2005 года, на Интернет-сайт
наведалось более 300'000 различных
посетителей, а образ CD-ROM был скачан
75'000 раз. В настоящее время на сайт
заглядывают более 1'000 посетителей в
день. Существует также активная
тематическая конференция на Google
USENET, comp.os.minix,
где люди задают вопросы и получают
ответы, сообщают о новом ПО и обсуждают
MINIX 3. MINIX 3 является результатом коллективной
работы и ваша помощь будет только
приветствоваться. Возьмите систему,
поэкспериментируйте с ней и шагните в
будущее.
сентябрь 2006