MINIX

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:08, 24 августа 2017.
MINIX
Minix Logo.png
MINIX
Uekshh.jpg
Рабочий стол MINIX
Разработчик Эндрю Таненбаум
Написанный на C / C++
OS линейка UNIX -подобная операционная система
Рабочее состояние Актуальное
Исходный код полный исходный код ядра в комплекте
Начальная версия MINIX
Последний релиз MINIX 3.3.0 / 16 September 2014 (2014-09-16)
Платформы x86 и ARM
Ядро (тип) Микроядро
Лицензия Некоммерческое программное обеспечение BSD лицензия BSD
Предшествующая MINIX 2
Официальный веб-сайт Official website
Статус поддержки
  • не поддерживается
  • Дата окончания основной фазы поддержки 16 September 2014 (2014-09-16)

MINIX (от mini-UNIX) – свободная микроядерная, в основном учебная операционная система для UNIX-компьютеров. Minix является одной из старейших операционных систем распространяемая по лицензии BSD. Ее первая версия появилась около 20 лет назад. Она послужила прототипом для многих операционных систем на базе ядра Linux.

MINIX

История MINIX

За первые десять лет ОС MINIX претерпела множество изменений. Первоначальный код был рассчитан на IBM PC с процессором 8086 и 2456 Кбайт памяти, с двумя дисководами и без жестких дисков. Эта система основывалась на UNIX Version 7. С течением времени система развивалась в различных направлениях. Например, текущая версия может работать на чем угодно, начиная со старых PC (в 16-битном реальном режиме) и заканчивая современными Pentium с огромными жесткими дисками (в 32-битном защищенном режиме). Кроме того, система теперь базируется не на Version 7, а на международном стандарте POSIX (IEEE 1003.1 и ISO 9945-1). Добавлено множество новых возможностей, на наш взгляд, может быть, даже слишком много. Впрочем, некоторым и этого мало, что и привело к появлению Linux. В дополнение, MINIX была перенесена на множество других платформ, включая Macintosh, Amiga, Atari и SPARC.

Во времена молодости UNIX (Version 6), ее исходные коды были широко доступны по лицензии AT&T и часто изучались. Джон Лайонс (John Lions) из университета Нового Южного Уэльса в Австралии даже написал небольшую брошюру, описывающую шаг за шагом работу UNIX. С разрешения AT&T эта брошюра использовалась во многих университетских курсах по операционным системам.

С выходом UNIX Version 7 стало ясно, что UNIX превратилась в дорогостоящий коммерческий продукт, поэтому лицензия, под которой распространялась Version 7, запрещала изучение исходного кода на учебных курсах, чтобы не подвергать риску его статус коммерческого секрета. Поэтому многие университеты просто прекратили изучение UNIX, довольствуясь одной теорией.

К сожалению, изучение одной только теории формирует у студентов однобокий взгляд на то, какой в действительности может быть операционная система. В книгах и курсах, посвященных операционным системам, в огромных подробностях рассматриваются такие теоретические главы, как, например, алгоритмы планирования, которые на практике не столь важны. Действительно важные вещи, такие как ввод/вывод и файловые системы, зачастую опускаются, так как им не посвящено достаточно теории.

Чтобы исправить ситуацию Э. Таненбаум решил написать собственную операционную систему, которая с точки зрения пользователя была бы совместима с UNIX, но внутри была бы совершенно самостоятельной. Так как в этой системе не используется ни строчки кода AT&T, она не попадает под действие лицензионных ограничений и может свободно использоваться при обучении.

Таким образом, студенты могут "вскрывать" реальную операционную систему, чтобы увидеть, как она устроена изнутри, точно так же, как студенты-медики вскрывают лягушек. Название MINIX происходит от mini-UNIX, так как эта система достаточно мала, чтобы даже не-гуру мог понять, как она работает.


MINIX 3

С пользовательской точки зрения 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 в режиме ядра работает только крошечная часть кода – всего около 4'000 строк кода. Этот код обслуживает прерывания, диспетчеризацию процессов и межпроцессное взаимодействие (interprocess communication - IPC). Оставшаяся часть операционной системы работает как набор процессов в пространстве пользователя, причём каждый из них защищён аппаратно диспетчером памяти (MMU) и ни один из них не имеет привилегий суперпользователя. Структура MINIX 3 показана на Рис. 1.

Рис. 1. Архитектура MINIX 3

Она спроектирована как многоуровневая конструкция. Внизу находится микроядро, работающее в режиме ядра и состоящее приблизительно из 3'000 строк кода на С и 800 строк кода на ассемблере. Выше него находится уровень драйверов устройств, причём каждый драйвер является отдельным процессом в пространстве пользователя для облегчения его замены в случае, если он откажет. Затем идут серверы, которые составляют ядро операционной системы. Они включают сервер реинкарнации, упомянутый выше, файловый сервер, диспетчер процессов и др., включая Х сервер, хранилище данных (data store) и множество прочих. И, наконец, сверху расположены процессы пользователя. Хотя изнутри MINIX 3 совершенно не похожа на остальные UNIX-образные системы, она поддерживает стандартный POSIX-интерфейс приложений, так что обычное ПО для UNIX может быть довольно легко в неё портировано.

Компоненты взаимодействуют между собой посылкой сообщений фиксированной длины. Например, процесс пользователя запрашивает файл, посылая сообщение файловому серверу, который в свою очередь, проверяет свой кэш и, если необходимый блок отсутствует, посылает сообщение процессу дискового драйвера начать получение блока. И хотя посылка сообщения добавляет немного дополнительного времени к длительности процесса обмена (около 500 нс на 3 ГГц Pentium 4), система остаётся вполне быстродействующей. Например, полная сборка системы, требующая более 120 компиляций, укладывается в 10 секунд.

Рис. 2. Структура операционных систем основанных на монолитном ядре и микроядре, соответственно.
Становление

Хотя 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.


Особенности
  • Совместимость со стандартом POSIX
  • Поддержка TCP/IP
  • Компиляторы: cc, gcc, perl, g++, perl, python и т.д.
  • Более чем 650 UNIX-программ
  • Оконная система - X Window System, jwm, ede
  • Драйверы устройств, запускающиеся как пользовательские процессы
  • Полный исходный текст операционной системы, снабженный комментариями
  • Запускается с 386, 486, Pentium, и т.д.
Требуемые аппаратные средства

Чтобы запустить MINIX 3, Вам нужен PC с процессором 386, 486 или Pentium, или другим совместимым процессором. Стандартная конфигурация требует минимум 16 Мбайт оперативной памяти. Версия на 8 Мбайт также доступна, но она более медленная из-за меньшего буфера кэша. Так как MINIX 3 распространяется как LiveCD, Вы можете проверить её, не устанавливая на жесткий диск, но для инсталляции на жесткий диск, Вам будет необходимо как минимум 50 Мбайт, или 600 Мбайт, если Вы хотите установить все исходные тексты программ.

Анонсы в релизах

Начиная с версии 3.1.4 Minix поддерживает виртуальную память.

Version Release date Description
3.1.0 2005-10-24
  • Первый релиз MINIX 3 (Выпуск книги).
3.1.2a 2006-05-29
  • Новый менеджер пакетов Packman.
  • Исправлена проблема установки с автоматическим разбиением дисков.
3.1.3 2007-04-13
  • Добавлена новая виртуальная файловая система
3.1.3a 2007-06-08
  • Исправление ошибок.
3.1.4 2009-06-09
3.1.5 2009-11-05
  • Улучшение производительности
  • Разделяемая память
  • Функция setitimer
  • Файловая система ISO 9660
  • Open Sound System
  • Ловушка доступа к неинициализированным указателям NULL, для удобства пользователя
  • Улучшена обработка сигналов
  • Лучшая поддержка для отладчиков (усовершенствованный ptrace и др.)
  • Автоопределение сетевых карт (для поддерживаемых PCI-карт), улучшение конфигурации сети
3.1.6 2010-02-08
3.1.7 2010-06-16
  • Userspace scheduling and a scheduling server[1]
  • Поддержка нескольких сетевых карт одного типа
  • Загрузка образов системы > 16 MB
  • Использование GCC
  • Поддержка кодировок cp1251 и KOI8-U
3.1.8 2010-10-04
  • Новая инфраструктура управления пакетами: pkgsrc и pkgin
  • Поддержка сокета домена Unix
  • Мультизагрузка
  • Поддержка ext2
  • Драйвер ACPI
  • Полная поддержка APIC, включая APIC I/O
  • Экспериментальная поддержка AHCI
3.2.0 2012-02-29
  • Портирование GNU Debugger для MINIX 3 и реализация поддержки дампа ядра
  • Поддержка FUSE с экспериментальной NTFS-3G
  • Частичная замена пространства пользователя MINIX на NetBSD реализацию
  • Замена стандартного компилятора ACK на Clang (GCC также поддерживается)
  • Switch to ELF and BSD libc libraries
  • Pkgsrc Upstreaming and Application Porting
  • Асинхронный virtual filesystem (VFS) сервер.
  • Замена загрузчика MINIX на NetBSD
  • Поддержка NCQ в AHCI драйвере
3.2.1 2013-02-21
  • Замена стандартного inet сервера на сетевой стек lwIP
  • Transitioning towards strict BSD coding style (based on KNF)
  • VBFS — поддержка монтирования VirtualBox Shared Folder как файловой системы
  • Поддержка кросс-компиляции
  • Поддержка Device Driver Environment kit
3.3.0 2014-09-16
  • Поддержка архитектуры ARM. Minix успешно запущен на широко распространенных одноплатных компьютерах Beagle
  • Экспериментальная поддержка USB для Beaglebone (hub и mass storage)
  • Кросскомпиляция для ARM и x86

Сегодня Эндрю Таненбаум благосклонно относится к участию в развитии MINIX 3.

Пример установки

Различия между MINIX 3 и предыдущими версиями

Рис.3 История взаимодействий различных Unix-подобных систем

MINIX 1, 1.5 и 2 были созданы как инструменты для обучения проектированию ОС.

MINIX 1.0 был создан в 1987 году. 12 000 строк исходного кода ядра было написано преимущественно на языке программирования Си и на языке ассемблер. Исходный код ядра, файловая и система управления памятью были напечатаны в книге. Изначально Танненбаун создал MINIX для компьютеров IBM PC и IBM PC/AT, доступных в то время.

MINIX 1.5, выпущенный в 1991 году, включал в себя поддержку MicroChannel IBM PS/2 и был также портирован на архитектуры Motorola 68000 и SPARC, поддерживающие Atari ST, Commodore Amiga, Apple Macintosh и Sun Microsystems SPARCstation компьютерные платформы. Также доступна версия МINIX, работающая как пользовательский процесс под SunOS.

MINIX 2, выпущенная в 1997 году, была доступна только для архитектур x86 и запускаемая под ОС Solaris SPARC архитектурой. Minix-vmd был создан двумя исследователями из Vrije Universiteit, с добавлением виртуальной памяти и с поддержкой для X Window System.

MINIX 3 делает то же самое, обеспечивая современную ОС множеством новых инструментов и Unix приложений.[2]

Профессор Таненбаум однажды сказал:

« Помните, что MINIX 3 не является дочерней программой MINIX… MINIX 1 была написана в качестве учебного пособия… MINIX 3 является началом создания высокой надежности, исцеления, без наворотов ОС… MINIX 1 и MINIX 3 были связаны точно так же, как Windows 3.1 и Windows XP, те одним именем. - [Источник 1] »

MINIX 3.2.0 была выпущена в феврале 2012 года. Данная версия имеет множество новых возможностей, в том числе и компилятор Clang, экспериментальную симметричную многопроцессорную поддержку, procfs и ext2fs поддержку файлов и GDB. Некоторые части NetBSD были также включены в релиз, в том числе загрузчик, libc и различные другие библиотеки.[3]

Релиз MINIX 3.2.1 вышел 21 февраля 2013 года.

Доступность

MINIX 3 является программным обеспечением с открытыми исходными кодами - [Источник 2] , распространяющимся под лицензией 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 и Xen.

Развитие и перерождение

ОС MINIX разрабатывалась в расчете на совместимость с UNIX Version 7. Эта версия была выбрана за основу благодаря ее простоте и элегантности. Иногда говорят, что Version 7 была улучшением не только по сравнению с предыдущими версиями, но и по сравнению с последующими. С пришествием POSIX, развитие MINIX начало стремиться к новому стандарту, поддерживая в то же время обратную совместимость с существующими программами. Это обычный для компьютерной индустрии путь развития, так как никакой производитель не захочет представлять систему, которой никто не сможет пользоваться. Рассматриваемая в этой книге версия MINIX базируется на стандарте POSIX (в отличие от версии, рассматриваемой в первом издании, которая базировалась на V7). Как и UNIX, MINIX написана на языке программирования С, чтобы упростить ее перенос на различные компьютеры. Придерживаясь философии «маленькое есть прекрасное», MINIX изначально не требовала для работы жесткий диск, тем самым вписываясь в студенческий бюджет (сейчас это может показаться удивительным, но в середине 80-х, когда MINIX впервые увидела свет, жесткие диски все еще были дорогой новинкой). Со временем и функциональность, и объем системы росли, и в итоге потребовался жесткий диск. Но философия MINIX не была забыта, и для работы вполне достаточно раздела объемом 30 мегабайт. В противоположность этому сейчас для коммерческих UNIX 200 мегабайт считается абсолютным минимумом.

Вскоре после создания MINIX, для обсуждения этой операционной системы была сформирована группа новостей USENET [Источник 3] . За несколько недель на нее подписалось более сорока тысяч подписчиков, и большинство из них хотели добавить в систему множество новых возможностей, чтобы сделать ее лучше и больше (ну, или хотя бы просто больше). Каждый день несколько сотен человек давали советы, предлагали идеи и куски кода. Создатель системы несколько лет успешно сопротивлялся этому напору и отвергал предложения усовершенствовать Minix или принять патчи, которые поступали от читателей его учебника, чтобы система оставалась достаточно маленькой и понятной для студентов. Постепенно стало понятно, что автор будет придерживаться этой стратегии. Именно в этот момент финский студент, Линус Торвальдс, решил создать собственный клон MINIX, который должен был стать рабочей системой со множеством возможностей, а не только учебным пособием для студентов. Впрочем, вскоре все желающие поучаствовали в параллельном проекте Linux. Наверное, именно по этому ОС Торвальдса вырвался вперед. Роль проекта, в котором читатели Эндрю Таненбаума воплотили бы своё стремление разрабатывать операционные системы, взял на себя Linux и от этого он бесконечно выиграл. Это и было рождение LINUX

Преимущества

Название MINIX происходит от mini-UNIX, так как эта система достаточно мала, чтобы даже не-гуру мог понять, как она работает.

У MINIX есть и еще одно преимущество перед UNIX. Она на десять лет моложе UNIX, поэтому ее код обладает более модульной структурой. Например, файловая система MINIX вообще не является частью ядра, а работает как отдельная пользовательская программа. Другое отличие в том, что UNIX создавалась, чтобы быть эффективной. MINIX же создавалась, чтобы быть читаемой (насколько может быть читаемым текст любой программы на сотни страниц). Поэтому, например, в коде MINIX имеются тысячи комментариев.

Литература

  • Таненбаум Э., Вудхалл А. Операционные системы: разработка и реализация. 2-е издание. ISBN 5-469-00148-2
  • Таненбаум Э., Вудхалл А. Операционные системы: разработка и реализация. 3-е издание. 2007 год. ISBN 5-469-01403-7

Источники

  1. Andrew Stuart Tanenbaum. "The Minix story from Andrew Tanenbaum". Some Notes. // Minix. [20 May 2004]. URL: http://www.cs.vu.nl/~ast/brown (дата обращения: 20.04.2017)
  2. Tanenbaum. "Minix3", Minix Forum. // Minix3. [2006-2013]. URL: http://minix3.ru (дата обращения: 2.03.2017)
  3. Tanenbaum. "Minix", Minix Groups. // Minix. [2010-2017]. URL: https://groups.google.com/forum/#!forum/comp.os.minix (дата обращения: 09.04.2017)

Примечания

  1. Individual Programming Assignment User Mode Scheduling in MINIX 3 by Bjorn Patrick Swift
  2. minix3 faq Woodhull, Albert S.. "MINIX 3: A small, reliable free operating system: " MINIX 3 FAQ. 24 Oct 2005. Vrije Universiteit. 15 Jun 2006
  3. "MINIX Releases". wiki.minix3.org. Archived from the original on 2013-01-18. Retrieved 29 February 2012.