Minix

MINIX — свободная Unix-подобная микро-ядерная операционная система, распространяемая по лицензии BSD[6][7], написанная на языке Си и ассемблер. Эндрю Таненбаум создал первую версию MINIX в 1987 в качестве «иллюстрации» учебника «Операционные системы: Разработка и реализация». Среди студентов, изучающих теорию операционных систем по исходникам MINIX, наибольшей известности достиг Линус Торвальдс, разработчик ядра Linux[8].

Minix
Изображение логотипа
Разработчик Эндрю Таненбаум
Семейство ОС Unix-подобная операционная система
Первый выпуск 1987[3]
Последняя версия
Поддерживаемые языки английский
Поддерживаемые платформы x86 и ARM
Тип ядра Микроядро
Лицензия модифицированная лицензия BSD[вд][4][5][…]
Репозиторий исходного кода git.minix3.org
Веб-сайт minix3.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Изначально целью MINIX являлось обучение студентов строению компьютеров и основ операционных систем. Исходные коды MINIX совершенно отличны от кодов ОС Linux, но, как и Linux, MINIX является Unix-подобной операционной системой с аналогичным набором команд.

Исходный код MINIX 3 с переведёнными на русский язык комментариями можно получить на CD вместе с книгой «Операционные системы: разработка и реализация» (Таненбаум Э. С., Вудхалл А. С., 3-е издание опубликовано в России в 2007 году), в которой детально расписано строение ОС на примере MINIX.

1 ноября 2008 года Эндрю Таненбаум получил грант в 2,5 млн евро от Европейского исследовательского совета для работы над проектом «Исследование действительно надёжного и безопасного системного программного обеспечения». Грант позволит продолжить работы по дальнейшему развитию ОС MINIX 3 в течение не менее пяти лет (до ноября 2013 года)[9].

История

править

Эндрю Таненбаум создал MINIX в Амстердамском свободном университете для наглядной демонстрации принципов, описываемых в его книге «Operating Systems: Design and Implementation» (1987). ISBN 0-13-637406-9. Сокращённые 12000 строк исходного кода ядра, подсистемы управления памятью и файловой системы MINIX были напечатаны в книге.

В 1987 году Таненбаум относился к MINIX только как к учебному пособию. Чтобы оставить код ОС доступным для изучения в течение семестра, Эндрю Таненбаум отвергал предложения усовершенствовать MINIX или принять патчи, которые поступали от читателей его учебника. Роль проекта, в котором читатели Таненбаума воплотили своё стремление разрабатывать операционные системы, взял на себя Linux.

Изначально Таненбаум разработал MINIX для компьютеров IBM PC и IBM PC/AT, доступных в то время. MINIX версии 1.5 был перенесен на Motorola 68000, что обеспечило совместимость с популярными платформами Amiga, Atari ST, Apple Macintosh. Кроме того, были сделаны версии для SPARC, National Semiconductor NS32032 и транспьютеров.

MINIX 1.5 вышел в 1991 году. Включал в себя поддержку для систем MicroChannel IBM PS/2, которые были также перенесены для архитектур Motorola 68000 и SPARC, при этом также поддерживая Atari ST, Amiga, Macintosh[10], и SPARCstation[11][12].

 
Загрузочный экран MINIX 2.0.4
 
Командная оболочка MINIX 2.0.4

Minix 2.0 снова поддерживал только архитектуру x86 и был реализован в 1997 году. Он прилагался ко второй редакции книги Таненбаума, написанной им в соавторстве с Аль��ертом Вудхаллом (Albert Woodhull). Minix 1 и 2 были средствами обучения[13][14].

 
Вывод команды top в MINIX 3.2
 
Запущенный X11 с оконным менеджером twm в MINIX 3

MINIX версии 3 был анонсирован 24 октября 2005 года Эндрю Таненбаумом во время его речи на конференции по принципам операционных систем, организованном Association for Computing Machinery (ACM Symposium on Operating Systems Principles). Несмотря на то, что MINIX всё ещё служит в качестве учебного примера в новой редакции книги Таненбаума и Вудхалла, он был переработан и доведён до годности к использованию в качестве надёжной операционной системы для микроконтроллеров и других встраиваемых систем. Он доступен на LiveCD, с которым можно работать без необходимости установки системы на жёсткий диск, а также в виде, совместимом со многими эмуляторами, такими, как Bochs, QEMU, VMware, VirtualBox и Virtual PC[15].

Эта операционная система является компактной. Части, которые работают в пользовательском режиме, разделены на небольшие модули и хорошо изолированы друг от друга. Например, каждый драйвер устройства выполняется как отдельный процесс пользовательского режима, и ошибка в драйвере (безусловно, источник большинства ошибок в любой операционной системе) не может полностью нарушить работу системы в целом. В MINIX, когда драйвер терпит крах, он автоматически перезапускается, не требуя пользовательского вмешательства, перезагрузки, и не затрагивая выполняющихся программ. Перечисленные особенности, микро-ядерная архитектура и другие аспекты значительно повышают надёжность этой операционной системы.

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

Анонс изменений в релизе 3.1.5[16]:

  • Улучшена производительность;
  • Добавлена поддержка разделяемой памяти (Shared memory);
  • Добавлена функция setitimer;
  • Улучшен код обработки сигналов;
  • Добавлены порты PostgreSQL, QEMU и Sudo.

Анонс изменений в релизе 3.1.6:

  • Добавлены новые драйверы: Atheros L2, Intel E1000, Realtek 8169, DEC Tulip;
  • Поддержка VirtualPC Network (DEC Tulip);
  • Поддержка PipeFS;
  • Поддержка HGFS — монтирование каталогов VMware как файловой системы;
  • Поддержка FPU;
  • Поддержка System Event Framework (SEF);
  • Экспериментальная поддержка APIC (по умолчанию отключена);
  • Добавлены порты:
    • Набор базовых системных утилит из OpenBSD — bsd-utils;
    • Интерпретатор Lua 5.1.4;
    • Файловый менеджер Midnight Commander;
    • Эмулятор QEMU 0.12.2;
    • Средства для измерения производительности aim9, lmbench3;
    • tcpdump.

Анонс изменений в релизе 3.1.7:

  • Планирование ресурсов на пользовательском уровне (Userspace scheduling) и поддержка серверов-планировщиков;
  • Корректная поддержка одновременной работы с несколькими Ethernet-картами одного типа;
  • Исправлены ошибки, мешающие запуску MINIX под управлением системы виртуализации KVM;
  • Загрузчик теперь может работать с образами, размер которых превышает 16 Мб;
  • Размер корневого раздела увеличен до 64 Мб, скрипт установки изменен с целью корректной работы с корневыми разделами нестандартного размера;
  • В системе сборки появилась поддержка сборки MINIX с использованием GCC (ранее использовался набор компиляторов ACK), ведётся работа по обеспечению поддержки icc, clang и llvm-gcc;
  • Проведена реорганизация и чистка дерева исходных текстов;
  • Добавлены новые порты: Git и GCC 4.4.3;
  • Реализован вторичный уровень кеширования ФС в VM, использующий всю доступную память для минимизации задержки при вводе-выводе;
  • Поддержка кодировок CP-1251 и KOI8-U.

Анонс изменений в релизе 3.2.0:

Релиз 3.3.0 стал поддерживать ARM.

MINIX 3.4.0 стал кандидатом на релиз в январе 2016 года[19].

MINIX 3 всё ещё имеет сообщество, которое его разрабатывало, и сообщество было встречено на MINIXCon 2016 с 50 человек, чтобы обсудить будущее MINIX[20].

Все чипсеты Intel после 2015 года выполняются в MINIX 3 как программный компонент Intel Management Engine[21].

Отношения с Linux

править

Раннее влияние

править

Торвальдс использовал и оценил MINIX, а также был знаком с книгой Таненбаума[22], однако при реализации архитектуры ядра Linux решил не использовать архитектуру MINIX, применив архитектуру монолитного ядра вместо архитектуры микроядра. Данное решение Торвальдса было не одобрено Таненбаумом и вылилось в спор Таненбаума — Торвальдса. Таненбаум представил свои аргументы в пользу использования архитектуры микроядра в мае 2006 года[23].

Ранняя разработка ядра Linux была выполнена на хост-системе MINIX, что привело к тому, что Linux включил в себя различные функции из MINIX, такие как поддержка файловой системы MINIX.

Утверждение Кеннета Брауна

править

В мае 2004 года Кеннет Браун из Института Алексиса де Токвиля[англ.] выдвинул обвинение в том, что основные части ядра Linux были скопированы из кодовой базы MINIX, объявив это в своей книге «Самиздат»[24]. Эти обвинения были опровергнуты — в первую очередь, Эндрю Таненбаумом, который сильно критиковал Кеннета Брауна и опубликовал длинное опровержение на своём личном веб-сайте, также указывая на то, что Браун финансировался Microsoft'ом[25][7].

Литература

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

См. также

править
  • Xinu[англ.] - аналогичная образовательная операционная система от 1984 года.

Примечания

править
  1. MINIX 3.3.0 is Available Now
  2. Release v3.3.0 · Stichting-MINIX-Research-Foundation/minix (англ.)
  3. History of MINIX 3
  4. Legal Questions
  5. https://git.minix3.org/index.cgi?p=minix.git;a=blob_plain;f=LICENSE;hb=HEAD
  6. WebCite query result. Дата обращения: 11 сентября 2010. Архивировано из оригинала 18 августа 2010 года.
  7. 1 2 faq [Wiki]. Дата обращения: 17 июня 2018. Архивировано из оригинала 26 апреля 2019 года.
  8. MINIX is now available under the BSD license. Дата обращения: 17 июня 2018. Архивировано 4 марта 2016 года.
  9. MINIX 3 News — 01 Nov 2008. Дата обращения: 11 марта 2011. Архивировано 17 декабря 2009 года.
  10. macminix (MacMinix) · GitHub. Дата обращения: 17 июня 2018. Архивировано 26 февраля 2021 года.
  11. Источник. Дата обращения: 17 июня 2018. Архивировано 17 апреля 2016 года.
  12. Installing and running MINIX for Solaris (SMX). Дата обращения: 17 июня 2018. Архивировано из оригинала 12 мая 2016 года.
  13. Архивированная копия. Дата обращения: 17 июня 2018. Архивировано из оригинала 4 февраля 2012 года.
  14. MINIX/SH Home Page. Архивировано 28 ноября 2002 года.
  15. MINIX 3
  16. New to minix — Группы Google. Дата обращения: 17 июня 2018. Архивировано 28 мая 2013 года.
  17. WebCite query result. Дата обращения: 18 июня 2012. Архивировано из оригинала 21 июня 2012 года.
  18. MINIX 3.2: A microkernel with NetBSD applications [LWN.net]. Дата обращения: 17 июня 2018. Архивировано 17 июня 2018 года.
  19. Index of /iso/snapshot/. Дата обращения: 17 июня 2018. Архивировано 24 июня 2018 года.
  20. MINIXCon 2016. Дата обращения: 17 июня 2018. Архивировано 3 июня 2018 года.
  21. Positive Technologies — learn and secure : Disabling Intel ME 11 via undocumented mode. Дата обращения: 17 июня 2018. Архивировано из оригинала 2 августа 2021 года.
  22. How Linux was born, as told by Linus Torvalds himself | Ars Technica. Дата обращения: 18 июля 2018. Архивировано 18 июля 2018 года.
  23. Tanenbaum-Torvalds Debate Part II. Дата обращения: 18 июля 2018. Архивировано 20 июня 2018 года.
  24. Samizdat’s critics… Brown replies
  25. Andrew S. Tanenbaum, Professor at the Vrije Universiteit. Дата обращения: 18 июля 2018. Архивировано 18 июля 2018 года.

Ссылки

править