Переводы и публикации
Сентябрь 2006
Оригинальный материал:
http://www.osnews.com/story.php/15960/I ... 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/opensour ... /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/tra ... iki/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 является результатом коллективной работы и ваша помощь будет только приветствоваться. Возьмите систему, поэкспериментируйте с ней и шагните в будущее.