Введення в minix 3

Як часто ви перезавантажували ваш телевізор в минулому році? Ймовірно, набагато менше, ніж ваш комп'ютер. Звичайно ж, для цього є багато «резонів», але все більше і більше користувачів, далеких від техніки, не хочуть і чути про них. Вони хочуть тільки, щоб їх комп'ютер весь час прекрасно працював і ніколи не відмовляв. MINIX 3 є проектом з розробки операційної системи, надійної, як телевізор, для вбудованих систем і критичних додатків, як, втім, і для майбутніх 50-доларових однокристальних портативних комп'ютерів і настільних систем загального застосування. Сьогодні ця маленька, проста і надійна операційна система вже існує. І прошу зауважити: це остання публікація в дискусії на тему альтернативних ОС.

історичний екскурс

Відродження

Різні дослідження показують, що програмне забезпечення в загальному випадку містить близько 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 може бути досить легко в неї перенесено.

Введення в minix 3

Мал. 1. Архітектура MINIX 3

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

Точка зору користувача

З користувальницької точки зору MINIX 3 виглядає, як UNIX, але не такий роздутий. Вона містить X Window System і більше 400 стандартних програм UNIX, включаючи:
Командні процесори (shells): ash, bash, pdksh, rsh
  • Мови програмування (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 знайдеться. За цим посиланням можна подивитися скріншоти.

    доступність

    Дорога редакціє. Робота нічого не поїдає.

    > Наприклад робота (будь-яка) на всіх дистрибутивах> якими я користувався (близько 10), поїдає завжди> набагато більше процесорного часу ніж та ж в> Віндовс.

    Дорога редакціє. Робота нічого не поїдає.

    > Наприклад робота (будь-яка) на всіх дистрибутивах> якими я користувався (близько 10), поїдає завжди> набагато більше процесорного часу ніж та ж в> Віндовс.

    а венда - царює.

    Операційна система Minix, дітище професора Ендрю Тененбаума з голландського університету Vrije, отримала грант Європейської дослідницької ради (European Research Council) на суму 2.5 млн. Євро. Гроші будуть витрачені на подальші дослідження в області розробки операційної системи, яка сама змогла б знаходити уразливості в своєму коді і в подальшому усувати їх.

    Помилки в програмному забезпеченні ніколи не будуть повністю викорінено, написав Таненбаум в поданні до проекту. Але такі операційні системи як Windows і Linux спочатку спроектовані без приділення належної уваги стабільності коду. Індустрія ПО набагато більш безвідповідально підходить до перевірки якості готової продукції, ніж, наприклад, автомобільна промисловість, де виявлення дефекту однієї деталі може спричинити відгук всього модельного ряду автомобілів. Рішенням даної проблеми може стати створення захищеної операційної системи, яка б висувала жорсткіші вимоги до виконуваного коду.

    Концепція мікроядер, навколо якої побудований Minix, накладає певні обмеження на взаємодії процесів між ядрами. Це дозволяє зводити до мінімуму ситуації, коли нестабільно працюючий драйвер периферійного пристрою або будь-який інший код, запущений в ядрі, викликає крах системи. За задумом Таненбаума нестабільність повинна локалізувати всередині мікроядра, а взаємодія з процесом її викликав блокуватися.

    Виділених коштів повинно вистачити на оплату праці трьох дослідників і двох програмістів протягом наступних п'яти років.

    Схожі статті