Алексей МандрыкинИтак, друзья мои, публикую здесь обещанное эксклюзивное интервью с Алексеем Мандрыкиным, разработчиком ОС Xameleon, настоящим энтузиастом своего дела. Мягкий юмор и твердая вера в будущее микроядерной архитектуры. Алексей считает что открытый исходный код - не главное в сравнении с исчерпывающей документацией, описывающей протоколы взаимодействия модулей, и в данном конкретном случае, он абсолютно прав. Впрочем, читайте сами ;)

Вначале несколько общих вопросов, личного характера, дабы мои читатели имели возможность познакомиться с вами поближе. Так откуда вы? Я имею ввиду, где вы проживаете в данный момент, и сколько вам лет?

Мне 34 года. В настоящий момент я проживаю с семьей в Новошахтинске - это небольшой город в Ростовской области. Работаю программистом в компании Fast Reports Inc. (www.fast-report.com)

Хорошо, а интересно, чем новошахтинские программисты занимаются в свободное от написания ОС время?

В свободное от написания ОС время я стараюсь заработать деньги, чтобы прокормить семью. :-)

Впрочем как и все мы ;-) А как ваши друзья и ваша семья относится к вашему хобби?

Сложный и больной вопрос. Позвольте мне не отвечать на него.

Какой ОС и каким средством разработки вы пользуетесь повседневно?

Повседневно я использую Microsoft Windows XP. Средство разработки Borland Delphi7 и, когда отвечаю в поддержке, использую MS Visual Studio 2005. Удивляетесь? Это не шутка, это необходимость использования по основному месту работы - осушестваляю поддержку FastReport Studio.

Для разработаки микроядра использую Slackware Linux 9, который живет в виртуальной машине MS Virtual PC. Очень выручает Samba, поскольку нахожусь в зависимости от редактора из Visual Studio. Разумеется, я также использую и средства разработки GNU.

Ok, сейчас я задам несколько общих вопросов касающихся ваших взглядов на микроядерную архитектуру. Скажите, чем обусловлено ваше желание создать микроядерную ОС?

Я всегда хотел написать ОС. По крайней мере с момента, когда понял что такое операционная система. В юности, как и многие, увлекался ассемблером и даже имел некоторый успех в написании многозадачной среды на Turbo Assembler в защищенном режиме процессора I386, в которой время разделялось поровну между всеми задачами. В то время очень удивлялся, почему такой быстрый компьютер так медленно работает, ведь я писал на ассемблере. :)

С тех пор прошло более двенадцати лет. За это время я занимался различными проектами и всегда имел хорошую работу, которая позволяла расти профессионально. Так случилось, что моё знакомство с Linux началось гораздо раньше, чем с линейкой NT компании Майкрософт. Чем больше я узнавал обе системы, тем ярче формировались мои представления об их преимуществах и недостатках. И вот, когда за плечами уже был некий багаж знаний, я узнал о L4. Меня поразила простота и лаконичность системных вызовов – это были простейшие кирпичики, из которых можно построить дом и даже замок. С тех пор мои юношеские мечты обрели вторую жизнь. Понимаете?

Да, мне это знакомо. Я сам пытался написать ОС, однако продвинулся не очень далеко. Однако, вот следующий вопрос: считаете ли Вы, что микроядерные ОС имеют шанс стать широко распространенными в будущем, учитывая то, что сейчас их удельный вес на рынке системного ПО очень мал?

Очень хороший шанс. Посмотрите как растёт количество ядер на одном кристалле. Чем могут ответить на это монолитные ядра? Простаивать в критических секциях в очереди на ресурсы? Впрочем, и не все микроядра выдержат эту гонку. Я считаю что микроядра, которые основаны на асинхронной передаче сообщений, тоже сойдут с дистанции в недалёком будушем. Асинхронность добавляет значительный overhead, что непозволительно для микроядра.

Не кажется ли вам, что до тех пор, пока будет доминировать архитектура x86, максимум на что мы можем рассчитывать - это ОС с монолитными или гибридными ядрами? Так как существует весьма распространенное мнение, что такой дизайн ОС является наиболее эффективным для этой архитектуры ПК.

Осмелюсь не согласиться с этим утверждением. Миф о неэффективности микроядерного подхода возник из за проблемы сброса TLB буфферов при переключении адресного пространства в x86 процессоре. Не буду говорить, кем сейчас усиленно поддерживается этот миф. :) Однако, с ростом числа ядер на одном кристалле, эта проблема постепенно сходит на нет. Да и кто сказал что сервисы, организованные поверх микроядра, должны обязательно быть раскиданы по разным адресным пространствам? Например, микроядро L4 обеспечивает минимальный overhead при передаче сообщений в пределах одного адресного пространства.

Похоже, что разработка Minix 3, появление которой вызвало такой ажиотаж, приостановлена. Вернее, ничего качественно нового не делается, похоже что ее разработчики сейчас обеспокоены тем, как бы портировать побольше софта под нее, а финальный релиз GNU/HURD мы, похоже, вообще никогда не увидим. Как бы вы прокомментировали столь медленные темпы развития микроядерных ОС?

К сожалению я пока не видел Minix 3 и не слежу за проектом, но судя по информации в новостях, вижу в ней потенциального конкурента. Само собой, Minix это раскрученная марка и признанный авторитет Таненбаума. Кстати, несмотря на то, что мне не очень нравится стиль кодирования Таненбаума, я считаю его талантливым преподавателем, легко объясняющим сложные вещи.

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

Интересное мнение. А что вы думаете о проекте Singularity от Microsoft, где драйверы устройств запускаются даже не как отдельные от ядра процессы, но под своими собственными виртуальными машинами? Не перегибают ли они палку?

Я думаю что уж слишком сложные драйвера они там пишут, если для их отладки, каждому драйверу нужна отдельная виртуальная машина. :) А если серьёзно, то это, наверное, больше интересно с исследовательской точки зрения или это, возможно, такой маркетинговый ход для следующего поколения Windows.

Что вы думаете о QNX? Считаете ли вы ее успешной, завершенной, и красивой ОС? Чем, по вашему, объясняется угасание интереса разработчиков к этой операционной системе?

Применительно к ОС QNX у меня возникло двойственное впечатление. Считаю её успешной и революционной для своего времени. Большинство разработчиков, говоря о QNX, прежде всего подразумевают реалтайм, а не микроядерность. В наше время реалтаймом уже никого не удивишь, а микроядерность ещё не вошла в моду.

Хорошо, спасибо, Алексей. Но давайте плавно перейдем непосредственно к вашей ОС. Скажите пожалуйста, традиционно считается, что микроядерные ОС менее производительны по сравнению с монолитными, за счет накладных расходов межпроцессного взаимодействия, скажите, сравнивали ли вы производительность ОС Хамелеон, с производительностью монолитных ОС, Линукса например, какие-нибудь простые бенчмарки или что-то в этом духе?

Только однажды. Тестировал скорость отрисовки в консоли Linux и консоли Xамеleоn. Не буду кривить душой, в этом тесте с небольшим отрывом выиграл Linux. Но это меня нисколько не огорчило. Попробуйте улучшить Linux, чтобы он работал быстрее ;) В то же время у Хамелеона десятки и сотни мест, которые можно оптимизировать.

Почему вы не открываете исходный код вашей ОС? Вы надеетесь использовать ее в коммерческих целях?

Недавно выложил на сайте Хамелеона исходный код двух драйверов и пример простейшего пользовательского приложения. Пока не вижу смысл полностью открывать исходный код.

Я не ставлю исходный код во главу угла – всегда найдётся человек, способный написать код лучше и оптимальнее. Главное это идея и know-how. Думаю что документация, описывающая протоколы взаимодействия модулей, гораздо важнее исходного кода.

Что касается коммерческих целей, то, на мой взгляд, в этом нет ничего плохого.

Почему Вы решили создать свою ОС, а не подключиться к разработке других, более крупных проектов? И не планируете ли вы участвовать в разработке, скажем Minix 3?

Наверное, несмотря на возраст, где-то в уголке сознания ещё теплятся остатки юношеского максимализма и не даёт покоя слава Уильяма Гейтса. : )

Подключаться к другим проектам не планировал. Если разочаруюсь в Хамелеоне, то стану проповодеником.

Огромное спасибо вам, Алексей, за это интервью. Мой вам совет: не торопитесь становиться проповедником, ведь их - великое множество, а таких энтузиастов как вы - единицы. Подумайте об этом, ну и разумеется, мой блог, всегда будет рад оказать вашему проекту информационную поддержку. Можете на это рассчитывать. Желаю удачи!

Спасибо Вам большое за проявленый интерес.