Интервью с разработчиками UzhOS
Роман Химов, Среда, 11 Май 2005, 15:26
Интервью брал Роман Химов, на вопросы отвечали Сергей Семанин (главный
архитектор проекта) и Александр aka Kretos (администратор и главный дизайнер проекта).
<br><br>
<b><i>РХ:</i> Какие проблемы вы видите в современных ОС, зачем нужна новая ОС?</b>
<br><br>
<i>СС:</i> Есть желание сделать российскую ОС, которая, с одной стороны, сможет
поднять престиж России на рынке ОС, предоставив пользователям
возможности, которых современные ОС не предоставляют, и которая,
с другой стороны, будет доступна практически всем слоям потребителей,
как по цене, так и по эксплуатационны качествам.
<br><br>
<i>АK:</i> Прежде чем начать агитационную деятельность по написанию УжОСа, я
много думал над нужностью этого проекта. На тот момент я не видел
операционной системы, которая бы меня устраивала. Тем не менее <b>я хотел
использовать на своем ПК идеальную</b> с моей точки зрения ОС. А идеальная
ОС по лично моим представлениям должна быть <b></b> как по
количеству и качеству предоставляемых сервисов, так и по оформлению. Я
видел красиво оформленные графические оболочки, но роскошных не видел.
Надо это исправить
<br><br>
<b><i>РХ:</i> Какие проблемы призвана решить ваша ОС?</b>
<br><br>
<i>СС:</i>Я опасаюсь, что обсуждение достоинств и недостатков существующих ОС
может "вылиться" в отдельную огромную статью, поэтому ограничусь тем,
что скажу, что UzhOS объединит в себе достоинства существующих ОС,
вобрав в себя лучшие решения, и будет свободна от их недостатков.
Объектная идеология и модульная архитектура ОС UzhOS сделает ее гибко
конфигурируемой- от встроенных микросистем для промышленных
контроллеров, до "", конфигурируемой достраиваемой и
развиваемой "на ".
<br><br>
<b><i>РХ:</i> Вы читали статью Эммануэля Марти "<a
href=http://www.osrc.info/content.php?article.77>Почему вам больше не стоит
писать собственное я</a>"? Почему вы решили писать свое ядро?</b>
<br><br>
<i>СС:</i> Я прочитал эту статью. У меня сложилось мнение, что ее писал человек,
который сначала мечтал утешить свои амбиции, написав свое ядро ради
самого ядра, но вскоре, осознав в глубине души, что он - бездарность,
теперь пытается внушить эту мысль остальным: "не стоит даже пытаться,
вы все равно не напишете ничего лучше того, что уже ".
<br><br>
<i>АK:</i> Добавить нечего
<br><br>
<b><i>РХ:</i>
Я постараюсь пояснить, почему я это спрашиваю. Мне кажется, что одной из
частых ошибок разработчиков ОС является желание охватить все и
переустроить все, что только можно - от диспетчера процессора до
драйвера мышки и от реализации графической подсистемы до кнопки в
почтовом клиенте. Не страдает ли тем же UzhOS?</b>
<br><br>
<i>СС:</i>
Все исходит из принципа необходимости и достаточности. Ядро должно
удовлетворять требованиям, предъявленным к ОС. Во-первых, ни одно из
существующих ядер не обеспечивает совместного существования в системе
задач жесткого и мягкого времени, следовательно, необходимы свежие
решения. Они подробно, но коряво изложены в
"<a href=http://uzhos.h12.ru/?m=art>Концепциях...</a>".<br>
<br>
<b><i>РХ:</i> Итак, вы все же начали работать над ОС от ядра. Что интересного хочет
предложить команда разработчиков UzhOS в своем ядре?</b>
<br><br>
<i>СС:</i> Ну, а от чего же еще можно создавать ОС?
<br><br>
Ключевые решения (описаны в статье
"<a href=http://uzhos.h12.ru/?m=art>Концепции </a>" на
<a href=http://www.uzhos.tk>www.uzhos.tk</a>):
<ol>
<li>микроядро построено на принципах, делающих возможным одновременное
существование в одной ОС задач жесткого и мягкого реального времени;</li>
<li>объектная идеология и модульная архитектура ядра, делающая
конфигурировани ОС очень гибким, а архитектуру ОС - легко
достраиваемой и расширяемой, причем, в т.ч. - динамически.</li>
<li>механизм динамического связывания объектов, встроенный в систему, и
позволяющий создавать распределенную операционную среду;</li>
<li>развитая концепция виртуальных терминалов, предоставляющая, кроме
удаленных графических консолей, новую технологию World Wide Web, не
использующую HTTP, а целиком использующую концепцию удаленного
связывания объектов.</li>
</ol>
Здесь попробую рассказать вкратце:<br>
<ol>
<li>требование совместимости с NT вынуждает решить проблему с NT DPC,
приводящим в пиковых ситуациях к задержкам переключения процессора до
30-40 мс. Принято решение эмулировать NT DPC на уровне потока ядра с
приоритетом реального времени, а задачи "" реального времени
выполнять на приоритетах выше NT DPC, т.е. в отдельной группе приоритетов
жесткого реального времени, а сами NT DPC разбить на группы и
обеспечить их относительное выполнение с вытеснением (к сожалению,
больше в этом плане пока рассказать не могу - секрет
).</li>
<li>планируется поддержка linux на уровне подсистемы, поэтому
диапазон приоритетов ОС должен перекрывать диапазон приоритетов
linux.</li>
<li>предусматриваетя возможность динамического встраивания новых
классов объектов на уровне микроядра.</li>
</ol>
Исходя из вышесказанного простое заимствование решений из существующих
ядер меня не устраивает. Краткие характеристики ядра UzhOS с
комментариями:
<ol>
<li>диапазон приоритетов - 256, с 4 группами приоритетов:
<ul>
<li>приоритеты "" реального времени (64 + 32 специальных);</li>
<li>приоритеты "мя" реального времени (100);</li>
<li>динамические приоритеты (52);</li>
<li>ленивые приоритеты (8);</li>
</ul>
</li>
<li>новая концепция потока как контекста, в котором с вытеснением могут
выполняться до 16 уровней задач;</li>
<li>особая концепция отложенных обработок прерывания, способных
выполняться в контексте потока ядра с вытеснением (2 группы по 16 уровней);</li>
<li>особый алгоритм диспетчера объектов ядра (расширенная концепция
планировщика),позволяющий динамически встраивать в микроядро новые
классы объектов.</li>
<li>классы объектов микроядра, и всех остальных уровней, подчиняются
идее "каждый класс объектов может быть сигнальным, т.е. объявляющим
какие-либо события. Любой синхронный исполняемый объект может
блокироваться в ожидании события от любых одиночных или групп ".
Эта идея будет дополнена свойством "асинхронные объекты, ожидающие
события, планируются на ".</li>
</ol>
<i></i>: в качестве прототипа диспетчера прерываний был взят
диспетчер прерываний NT, концепция приоритетной обработки прерываний
полностью переработана. В качестве прототипа диспетчера объектов взяты
планировщик NT и нижний уровень менеджера объектов NT (как идея).
Алгоритм динамического планирования, как идея, также заимствован из NT
(планировщики *nix (в т.ч. linux) настолько слабы, что заимствовать оттуда
что-либо, хотя бы, как идею, не представилось возможным). Идея 5)
также заимствована из NT, т.к. ничего подобного по красоте и гибкости
я не встретил ни в одной другой архитектуре.
<br><br>
А что же заимствовано из *nix? ну, пожалуй, семафоры и пайпы. первые
стали популярными благодаря *nix, вторые - это изобретение unix.
<br>
Так, меня, кажется, понесло, закругляюсь
<br><br>
Все ядро UzhOS сверху донизу пронизано идеей модульности,
динамического конфигурировани и динамического добавления новых
классов объектов. Кроме того, на уровне конечных подсистем все классы
объектов предоставляют виртуальные методы, тем самым позволяя
"" на них механизмы удаленного доступа по принципу DCOM-CORBA.
<br><br>
<b><i>РХ:</i> Вы упоминали то, что собираете в UzhOS лучшее из существующих ОС, как вы
пришли к такой структуре? </b>
<br><br>
<i>СС:</i> Как я написал выше, необходимы свежие решения. К предложенной
архитектуре я пришел раньше, в период работы в области АСУТП,
связанной с жестким реальным временем, распределенным управлением
объектами, сетевыми решениями. Со временем некоторые решения
"". А когда встретил на сайте <a href=http://www.uzhos.tk>www.uzhos.tk</a>
предложение создать российскую ОС, я вышел со своим предложением.
<br><br>
<b><i>РХ:</i> Вы часто упоминаете, что одним из идейных вдохновителей концепции ядра
UzhOS стало ядро NT, основанное, в свою очередь, на достижениях VMS. Вы
планируете использовать для своего ядра какие-либо части, разработанные
в других проектах, как то <a href=http://www.reactos.org/>ReactOS</a> или
<a href=http://www.openvms.org/>OpenVMS</a>?</b>
<br><br>
<i>СС:</i>
К сожалению, даже при всем моем желании "" что-нибудь из
ReactOS на этапе разработки микроядра мне это не удастся, т.к. у
меня принципиально иное микроядро. Но, если говорить о прямом
копировании решений, это всегда приводит к плохим пародиям на
существующие ОС. Очень наглядный пример тому - это как раз ReactOS,
которая в своем стремлении к полной двоичной совместимости (на уровне
структур ядра) и стала смешной пародией на NT, да и к тому же, в
основном, с плохо написанным кодом. Хотя некоторые отдельные решения
в ReactOS мне понравились. Например, механизм реализации виртуальных
методов классов микроядра в ReactOS лучше, чем в NT (как механизм).
<br><br>
Но с другой стороны, реализацию каких-то отдельных утилит или
процедур я не считаю зазорным подсмотреть, чтобы потом сделать по-своему, тем
более, если в заголовке модуля написано "програма написана в надежде,
что она кому-нибудь может пригодиться"
А что-то заимствовать из
кода VMS я не вижу смысла, т.к. все ее решения я знаю давно и хорошо,
и смогу их реализовать, не заглядывая в код (это, впрочем, касается и многих
других ОС). К тому же, это, все-таки, уже прошлое...
<br><br>
К счастью, реализовать совместимость с NT легко, т.к. в основном,
ее классы инкапсулированыи не требуют полной совместимости на уровне
структур. Но и в иных случаях, например, при реализации POSIX, можно
создать прослойку, изолирующую структуры POSIX от ядра UzhOS.
<br><br>
<b><i>РХ:</i> Планируете ли вы совместимость вашей ОС с приложениями под
существующие системы и как вы собираетесь ее реализовывать?</b>
<br><br>
<i>СС:</i> Ядро ОС построено на принципах многослойности: API микроядра является
инструментом для создания подсистем ядра и драйверов режима ядра, API
"исполняющего уровня" позволяет создавать конечные подсистемы, в т.ч.
win32, posix, и любые другие конечные операционные среды. Причем все
эти среды могут существовать одновременно в различных сеансах.
Например, один пользователь в своей пользовательско сессии может
создать несколько сеансов: win32, Linux, SunOS и т.п.
<br><br>
<b><i>РХ:</i> Следует ли из этого то, что у UzhOS не будет своей исполняющей среды и
она будет целиком и полностью опираться на описанные существующие?</b>
<br><br>
<i>СС:</i>
Я увлекся иллюстрацией гибкости ядра на примере конечных подсистем, и
забыл сказать про родную подсистему
Конечно, она будет, т.к. только
она может позволить использовать ВСЕ свойства ОС
Причем, желающие
смогут использовать родной API совместно с одним из "".
<br><br>
<b><i>РХ:</i> А что насчет драйверов?</b>
<br><br>
<i>СС:</i> API микроядра и "исполняющего уровня" предоставляют достаточно мощный
арсенал механизмов, позволяющий реализовать любую систему
ввода-вывода, в т.ч. NT и Linux, как подсистемы, и, как следствие,
позволит использовать в ОС UzhOS готовые драйверы NT (и Linux).<br>
Ну, разумеется, впоследствии мы предоставим "" драйверы
<br><br>
<b><i>РХ:</i> Какие возможности даст ваша ОС "из " потребителю?</b>
<br><br>
<i>СС:</i> Ну, попробую по пунктам:
<ol>
<li>Многоплановые desktops, от текстовых консолей, до 2D-3D desktops;</li>
<li>Возможность полноценной удаленной работы в консольном и оконном
режимах (правда, это далеко не новинка
);</li>
<li>Легко и просто, "одним движением ", создавать многомашинные
кластеры. Причем предполагается включение в кластеры ""
систем при наличии установленного на них ПО для связывания с UzhOS;</li>
<li>Распределенные файловые системы, невзирая на ОС и "" файловые
системы, с учетом вышесказанного;</li>
<li>Новая технология World Wide Web, построенная на динамическом
связывании объектов и без участия HTTP и всего связанного с ним
"джентльменского", который на низкоскоростныхсоединениях
работает в несколько раз быстреее. И сайты в этой технологии
(стандартные компоненты) можно строить мышкой;</li>
<li>Неописуемый комфорт для разработчиков целевых систем "под клю",
особенно встроенных микросистем: Весь технологическийцикл
разработки и отладки целевой системы - в студии разработки, "не
вставая с ", без применения кросс-отладчиков, с последующим
"" отлаженной системы в target контроллер.</li>
</ol>
Пожалуй, этот список можно продолжить...
<br><br>
<b><i>РХ:</i> Как огранизована работа вашей команды?</b>
<br><br>
<i>СС:</i> Работа нашей команды организована ужасно!
<br><br>
<i>АK:</i> По синергетическом(самоорганизовывющемуся) принципу
То бишь
кряхтит и ладно
Скоро будет смысл оптимизировать работу команды, а
пока на это просто не хватает времени ни у меня, ни у Сергея. Сам
метод координации работы по электронной почте накладывает свой
отпечаток в виде многодневных потерь времени. Надо с этим что-то
делать.
<br><br>
<b><i>РХ:</i> А сколько человек сейчас в команде?</b>
<br><br>
<i>СС:</i> Записано 10, вместе с дизайнерами - больше. Активно работают пока
далеко не все.
<br><br>
<i>АK:</i> Есть несколько человек, которых планируется привлечь в ближайшее
время. Команда продолжает формироваться, требуются талантливые
программисты.
<br><br>
<b><i>РХ:</i> Какие инструменты вы используете?</b>
<br><br>
<i>СС:</i> В качестве среды компиляции мы используем MinGW. Ведь не покупать же у
Микрософта кроскомпиляторы для всех платформ?! Да, он и не продаст!
В качестве среды разработки мы используем MS Visual studio custom projects,
построенные на makefiles.
<br><br>
<b><i>РХ:</i> Почему была выбрана закрытая модель разработки?</b>
<br><br>
<i>СС:</i> По двум причинам:
<ol>
<li>не делать оригинальные решения достоянием общественности, в т.ч.
конкурентов;</li>
<li>есть надежда хоть что-нибудь заработать
</li>
</ol>
<b><i>РХ:</i> Считаете ли вы, что закрытая разработка в свободное время возможна,
или UzhOS планирует перейти в статус коммерческого проекта?</b>
<br><br>
<i>СС:</i> А если невозможна, то почему???
<br><br>
<i>АK:</i> Закрытая разработка в свободное время возможна, но конца её
дождутся наши внуки. Чтобы дело шло быстрее, нужно этому делу уделять
как можно больше времени, а это возможно только при переводе проекта
на коммерческую основу и привлечении инвестиций в разработку.
<br><br>
<b><i>РХ:</i> То есть переход в коммерческий проект планируется?</b>
<br><br>
<i>АK:</i>
Переход в коммерческий проект планировался уже давно, а сейчас он
уже осуществляется. Уже ведется расчет финансовых показателей,
необходимых денежных затрат на создание и реализацию ОС. Инвестор
планирует начать денежные вливания в проект к середине лета 2005 года
поскольку считает проект очень перспективным. Я тоже так считаю
<br><br>
<b><i>РХ:</i> На какой стадии сейчас находится проект, когда можно будет увидеть
первые публичные альфа-версии?</b>
<br><br>
<i>СС:</i> Сейчас "" микроядро, уже работают потоки и объекты
синхронизации, сейчас трудимся над таймером. Работа пока продвигается
медленно, из-за сильной загруженности на основной работе, но в
ближайшее время расчитываем форсировать работу.
<br><br>
Alpha-версию увидим в обозримом будущем...
<br><br>
<b><i>РХ:</i> Спасибо, и удачи вам!</b>
это контент от Центр информации по операционным системам
( http://www.osrc.info/plugins/content/content.php?content.95 )