Создатель MINIX, легендарный спорщик и хорошо известный сторонник микроядер - это лишь несколько прозвищ Доктора Эндрю С Таненбаума (Dr Andrew S Tanenbaum); Возможно даже в вашей библиотеке есть один или два учебника написанные им.
Редактор Builder AU Ник Гибсон (Nick Gibson) побеседовал с Доктором Таненбаумом после его доклада на linux.conf.au. Гибсон спрашивал Таненбаума о микроядрах, MINIX и том, что ждет нас в будущем.
Builder AU: Почему вы считаете, что микроядра лучше, чем монолитные ядра?
Доктор Таненбаум: Если вы посмотрите на системы, в которых жизненно необходима непрерывная работа - например, авиационные системы, вентиляторы в госпиталях - системы, сбой в работе которых может привести к чьей-либо смерти, вы увидите, что в них используются микроядра.
Для тех людей, которые делают самолеты и другое оборудование с подобными системами действительно необходимо, чтобы оно работало без сбоев. Ведь если что-то пойдет не так, потребуется перезагрузка, а это очень не хорошая вещь для самолета, находящегося в воздухе.
Существует огромное количество военных, промышленных и медицинских систем, которые базируются на микроядрах, из-за того что покупатели пришли к выводу, что они более надежны.
Микроядра широко используются во встраиваемых системах в высоко надежных изделиях, в которых работают практически безотказно.
Микроядра становятся популярными во встраиваемых устройствах, например QNX, купленная Harman International, и L4 - вы думаете стоит сконцентрироваться на области встраиваемых устройств, если вы разработчик микроядра?
Это область программ, поэтому да. Одно из свойств встраиваемых систем - это то, что у них мало функций. Если вы делаете какой-либо медицинский прибор, он возможно не должен быть с множеством других приборов, он просто должен хорошо работать.
В другой стороны, вам нужны люди для создания команды разработчиков. Относительно легко взять это новое устройство и сделать для него новую операционную систему, так как никто кроме разработчиков его не видел.
На рабочем столе люди хотят знать чем отличается одно используемое устройство от другого. Во встраиваемых системах этого не надо. Поэтому легче начать с нового продукта.
Вы работаете над MINIX3, что отличает её от других микроядер?
Мы добились больших успехов в том, чтобы соответствовать POSIX, и кроме встраиваемых систем, сделали его полезным на рабочем компьютере, ноутбуке и т.д. Мы сделали интерфейс, который полностью соответствует POSIX, И портировали около 500 программ, у нас есть Apache, у нас есть GUI, у нас есть perl, python и gcc - многие из программ, которые люди используют на рабочем компьютере.
Многие другие встраиваемые системы на этом не фокусируются. Если вы делает программу для истребителя F-16, вам не нужна программа Ghostview. А мы портировали множетсво программ, чтобы сделать MINIX полезным.
У нас пока нет Firefox, он будет позже в том году, но когда у нас будет Firefox и может быть OpenOffice, MINIX сможет использовать множество людей для своих систем.
У нас есть X Windows, в обычных встраиваемых системах его нет, так как он не нужен в самолетах. Вот в чем разница между нами и другими компаниями.
Вы написали статью "Can We Make Operating Systems Reliable and Secure?", которая рассматривалась в некоторых кругах как атака на Linux и возобновление старого спора между вами и Линусом. У вас действительно проблемы с Линусом?
Нет, нет и нет. Мы иногда встречаемся с ним в течение последней пары лет и он отличный парень. Пару лет назад Кен Браун (Ken Brown) написал книгу, в которой сказал, что Линус украл Linux у меня, из Minix, тем самым нарушив права интеллектуальной собственночсти и компании не должны использовать Linux, поскольку я могу подать на них в суд.
Позже выяснилось, что Microsoft заплатила ему за это - и я защитил Линуса. Я написал на своем сайте, что после этого Brown пришел ко мне я рассказал ему верную историю.
У нас разная философия в системе разработки, но это не значит, что мы испытываем неприязнь друг к другу.
А про статью в компьютерном журнале, я не размещал её на Slashdot Это сделал кто-то другой.
Это была статья в науный журнал про будущие исследования в операционных системах. Это не была атака на Linux или Windows - это была статья для ученой публики о том какая работа происходит в мире операциооных систем и в ней представлены изменения в различных подходах, один их которых MINIX, но кроме этого говорится о Singularity, Nooks и других подходах.
Если люди подумали, что это была атака на Linux, то они излишне чувствительны.
В 1992 году вы назвали Linux устаревшим. Сейчас, 15 лет спустя, Linux запускается на 64 битных x86 процессорах. Вы все еще продолжаетет считать его устаревшим?
Я все еще думаю, что эта базовая архитектура, базовый дизайн - плохая идея, монолитные ядра не хорошая идея, и люди видят их все больше и больше в приложениях, в которых они действительно необходимы. В промышленных встраиваемых системах люди используют микроядра. Это необходимо для работы.
Только на рабочем компьютере и некоторых серверах не имеет значения работает он или может отказать. Здесь монолитные системы популярны, но там , где необходима постоянная безотказная работа - они не популярны. Я уже давно это видел.
Моя ошибка насчет Линуса была в том, что у него было хорошее микроядро и он мог бы улучшать его. Научный прогресс заключается в том, что вы берете что-то и улучшаете, а не ухудшаете это.
Я думал он возьмет микроядро и улучшит его! Но ему было всего 20 лет, он не имел много опыта; он был ребенком и разработал другое ядро.
В прошлом году мы слышали, что GNU/HURD снова сменит микроядро. Вы думаете мы когда-нибудь увидим финальный релиз GNU/HURD?
Спросите их! Существует множество отличных микроядер, есть L4, есть MINIX, я не знаю что они делают.
Я не думаю что они так же как я хотят создать хорошо работающий продукт.
Я разговаривал с Ричардом Сталлманом (Richard Stallman) по поводу свободного программного обчеспечения, и он начал спорить со мной когда я сделал неверное с его точки зрения утверждение.
Свободное программное обеспечение - если вы имеете исходный код программы и можете делать с ним всё что захотите, не важно под какой лицензией он находится Беркли(Berkeley) или GPL. Важно то, что у вас есть исходный код и вы можете делать с ним все что захотите.
Он сказал: "Нет, лицензия самая важная вещь!" А я сказал: "Нет, программа - это самое главное, и наличие исходного кода, а детали лицензии - вторичны."
Важная вещь состоит в том, что вы открываете исходный код и другие люди могут изменять его как вы хотите в условиях лицензии; а природа этих условий не так важна. Он просто опешил от такого заявления.
Я думаю Линус придерживается того же мнения, что и я, и считает, что важная вещь - код, точные условия лицензии не так важны. Ему не нравится GPLv3, мне нравится лицензия Беркли, но я уважаю его за то, что он сделал свой выбор. Это ключевой момент для меня.
Я прочитал в вашей статье, что микроядра - это один из инструментов, которые можно использовать. Какие другие инструменты будут доступны поставщикам ОС?
Singularity - очень интересная разработка от Microsoft, они написали полную систему с нуля едином адресном пространстве на модели безопасного языка. Они придумали этот новый язык, Sing#, который произошел от c#, в Sing#, как и Java вы не можете просто написать p= random & *p=0, язык вам просто этого не позволит.
Это безопасный язык, Он сильно ограничивает вас в том, что вы можете сделать, и все компоненты взаимодействуют друг с другом в едином адресном пространстве через "именованные потоки (named pipes)"
Поток имеет протокол, и этот протокол описан на формальном языке - вы посылаете сообщение кому-нибудь этого типа. И они посылают обратно от A, B или C и т.д.
Вам надо написать все это на формальном языке и система проверит можете ли вы произвести те или иные действия согласно формальному протоколу этого канала.
Таким образом, они получили очень правильную систему, так как заставляют описать какой протокол нужен для всех этих вещей.
Это очень интересная разработка, они заставили её рабтать, таким образом, это интересный подход. Она не совместима с Windows, она не совместима с Unix, она не совместима ни с чем, это будет маркетинговой проблемой для них.
Но они продемонстрировали, что этот подход может быть осуществлен. На виртуальных машинах они имеют некоторый потенциал, но я думаю это плохой путь, запускать все драйвера на различных виртуальных машинах. Использование процесса достаточно, вам не нужна для этого целая машина.
Подход Nooks Uni of Washington обошел их, он держит все драйвера в ядре, но взаимодействие между операционной системой и дрйверами происходит через слой Nooks, и проверяется, что все работает. Если вы делаете что-то, что не должны, слой Nooks отловит это действие и как-нибудь проинформирует - это другой подход.
Есть группа людей, которая работает над другими подходами; я не претендую на то, что это единственный путь, но я думаю, что потенциально он очень хорош.
Наконец, что разработчики должны помнить когда создают программы, которые будут перенесены на системы, базирующиеся на микроядре?
Соответствать интерфейсу POSIX - все микроядра, работающие на компьютере поддерживают интерфес POSIX.
Использовать ANSI стандарт С - не используйте расширения GNU, gcc или другие. Используйте ANSI C, интерфейс POSIX и другие вещи, которые были стандартизированы. Придерживайтесь стандартов!
Микроядра и большинство других систем поддерживает стандарты, когда вы начинаете использовать расширения, которые кто-то сделал, включать ассемблерный код и другие вещи, вы навредите себе.
Если вы используете стандарты в языке, библиотеках, системных вызовах, вы имеете неплохой шанс на то, что ваша программа запустится где угодно.
Когда вы используете расширения, вы вредите себе.
21 2007-01-26 12:18:44 (#)