|
Переводы
и публикации
Сентябрь
2006
Оригинальный
материал:
http://www.osnews.com/story.php/15960/Introduction-to-MINIX-3
Перевод:
Павел Макаров (makarov@minix3.ru)
Введение
в MINIX 3
Эндрю
С. Таненбаум
(Andrew S.
Tanenbaum)
Как
часто вы перезагружали ваш телевизор
в прошедшем году? Вероятно, гораздо
меньше, чем ваш компьютер. Конечно же,
для этого есть много «резонов», но всё
больше и больше пользователей, далёких
от техники, не хотят и слышать о них. Они
хотят только, чтобы их компьютер всё
время прекрасно работал и никогда не
отказывал. MINIX 3 (http://www.minix3.org)
является проектом по разработке
операционной системы, надёжной, как
телевизор, для встраиваемых систем и
критических приложений, как, впрочем,
и для будущих 50-долларовых однокристальных
портативных компьютеров и настольных
систем общего применения. Сегодня эта
маленькая, простая и надёжная операционная
система уже существует. И прошу заметить:
это последняя публикация в дискуссии
на тему альтернативных ОС.
Исторический
экскурс
MINIX
3 имеет ясное будущее, но несколько
затушёванное прошлое. Первая версия,
MINIX 1, была создана в 1987 году и была первым
клоном UNIX с полностью открытым исходным
кодом. Она разрабатывалась быстро и
скоро обрела свою собственную группу
USENET (comp.os.minix) с 40'000 подписчиков в течение
3 месяцев – это большая цифра для времени,
когда Интернет был доступен только
исследователям из университетов и
студентам. Одним из первых приверженцев
MINIX был финский студент по имени Линус
Торвальдс, который пошёл и купил ПК
специально для того, чтобы запустить
MINIX, очень тщательно изучил её и затем,
вдохновлённый MINIX, решил написать свою
собственную операционную систему. Хотя
Линус и знал MINIX очень хорошо, он не
заимствовал из неё какой-либо код, как
приписывают ему некоторые
(http://www.cs.vu.nl/~ast/brown).
Система Линуса выросла в современную
операционную систему Linux. Автор MINIX,
Эндрю Таненбаум (Andrew
Tanenbaum,
(http://www.cs.vu.nl/~ast),
и Торвальдс провели несколько красивых
публичных дискуссий по устройству
операционных систем, первую из них в
1992 году
(http://www.oreilly.com/catalog/opensources/book/appa.html),
а самую последнюю – в 2006 году
(http://www.cs.vu.nl/~ast/reliable-os).
Возрождение
Хотя
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 найдётся. По этой
ссылке (http://www.minix3.org/doc/screenies.html)
можно посмотреть скриншоты.
Доступность
MINIX
3 является программным обеспечением с
открытыми исходными кодами,
распространяющимся под лицензией BSD
(http://www.minix3.org/license.html).
Она имеет свой собственный Интернет-сайт
(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 (http://www.minix3.org/vmware.html)
и Xen (http://minixonxen.skynet.ie/cgi-bin/trac.cgi/wiki/Report).
С
тех пор, как MINIX 3 была публично анонсирована
в начале 2005 года, на Интернет-сайт
наведалось более 300'000 различных
посетителей, а образ CD-ROM был скачан
75'000 раз. В настоящее время на сайт
заглядывают более 1'000 посетителей в
день. Существует также активная
тематическая конференция на Google
USENET,
comp.os.minix (http://groups.google.com/group/comp.os.minix),
где люди задают вопросы и получают
ответы, сообщают о новом ПО и обсуждают
MINIX 3. MINIX 3 является результатом коллективной
работы и ваша помощь будет только
приветствоваться. Возьмите систему,
поэкспериментируйте с ней и шагните в
будущее.
|