MDF - по ту сторону монитора...

Дата: 06/05/05; 


Около двух лет назад бродя по просторам рунета в поисках единомышлеников, я обнаружил сайт asmdev.narod.ru. Интересное содержание и знакомое слово "ассемблер", подтолкнуло меня написать письмо автору сайта - Дрону. Переписка не была продолжительной, и в первых же письмах я спросил номер его аськи... С 8 июля 2003 года для Дрона началось тяжелое время, на протяжение первого полугода я без остановочно задавал наиглупейшие вопросы связанные с разработкой ос. Между прочем я продолжаю это делать и сейчась, но реже =)

Скажите пару слов о себе
   Мне почти 33 года, работаю программистом в компании Информзащита (www.infosec.ru), женат, есть сын... хакер еще тот, правда ему пока только три года с небольшим. Программированием занимаюсь уже давно - с 88 года.

Почему и как давно вы заинтересовались разработкой ОС?
   Я такой человек, как это сказать... писсимист чтоль, в каждой программе вижу недостатки ;) И выбираю собственно из двух зол, ну или из трех... то есть считаю, что хорошее программное обеспечение могу написать только я сам, всё остальное от лукавого ;)) Об операционной системе мечтал давно, но реально что-то обдумывать начал где-то году в 99. Чуть позже появился лист рассылки на yahoogroups в то время он назывался egroups, собрал туда своих друзей, там пошло, поехало...

Какие инструменты вы выбрали за основные и почему?
   Я всегда любил ассемблер, считаю что знать ассемблер обязан каждый программист, поэтому и писать сразу начал на ассемблере. Вообще-то сначала я думал все написать на ассемблере. Сейчас это самому кажется смешным. В принципе с тех пор мои взгляды на программирование достаточно серьезно поменялись, хотя MenuetOS я никогда не считал серьезной вещью. Выбора насчет инструментов как-то не стояло, любимый линукс, nasm, ld. Правда первая версия ядра не заладилась... написав килобайт 100 зарылся и вскоре понял что дальше будет только хуже. Пробовал писать на С++, но там свои сложности... В конце концов переписал все практически с нуля, опять таки на ассемблере. Нынешним кодом я почти вполне доволен.

Расскажите об архитектуре вашей системы
   Ну сначала я хотел сделать по простому, (тогда еще мало смыслил в осестроении) монолитное ядро, что-то типа линукса. но под влиянием друзей вскоре я пересмотрел свои взгляды. Это почти классическое микроядро. Долгие споры у нас вызывало взаимодействие процессов, В конце концов решили соригинальничать и изобрели TPC. Ну это что-то типа RPC. Конечно еще существует разделяемая память, ибо удаленные вызовы - не так быстры и далеко не безграничны по возможностям. Для критичных по скорости вещей будет применяться разделяемая память. Ядро конечно с полноценной поддержкой нитей (куда щас без этого, только еще приложения поддерживали бы... (камень в сторону линукс)). По ядру собственно почти все. Дальнейшие мысли сводятся к следующем. Корневое место в системе будет занимать Namer (c)ND. Или говоря русским языком - сервер имен. собственно он будет обеспечивать доступность всех остальных серверов (серверами в микроядерных операционных системах называются почти все служебные программы). Это все конечно не выглядит слишком быстрым, но в принципе и не предназначено для скорости. Это предназначено для подключения. После подключения сервер может наладить с клиентом более скоростные долгосрочные отношения. А может и не налаживать, если способен ответить сразу же, и ответ имеет разумные размеры (эти тонкости будут обдумываться в засисимости от служб, заранее не получится сказать). В принципе нет никаких проблем с организацией удаленных служб. Вообще было бы не плохо, чтобы система могла пользоваться всеми ресурсами сети, конечно о безопасности тоже не стоит забывать.
   Сплю и вижу систему, которая работает для пользователя, а не для компьютера... Несчастным пользователям не приходится ждать пока откроется то или другое окно, пока загрузится система... То есть, первостепенный акцент на то, чтобы довести до пользователя информацию, достаточную ему для размышления над своими дальнейшими действиями. А мы (имеется ввиду компьютер) в это время успеем проинициализировать все, что нужно. За примерами далеко ходить не надо... Как KDE после старта старательно показывает прогресс своей инициализации, половина из которой вряд ли мне (пользователю) понадобиться вообще. Или какой нибудь Адоб, который перед стартом грузит модули которые я вообще не использую... (не художник я) и так далее и тому подобное. Не на том акцентируете внимание, товарищи программисты! Грустно.

Опишите текущее состояние проекта
   На данный момент ядро уже почти готово, не хватает интерфейса с прерываниями и портами ввода/вывода, немного слабоват менеджер памяти, а в остальном оно уже работает. Драйверов пока нету никаких. Помимо ядра есть еще несколько тестов (тест планировщика и тест межпроцессного взаимодействия), небольшая утилита, выдающая информацию по заполнению памяти, вот вообщем и все. И все это дело уже загружается с помощью бут менеджера GrUB.

Какие у вас планы на будущее?
   Сейчас я пока неторопливо собираюсь с силами для нового рывка. когда он начнется - пока не могу сказать, нужно разработать несколько вспомогательных инстрментов, меняется организация исходных текстов. Когда наконец соберусь с силами - первым делом планирую начать с простенького шелла, для которого понадобятся драйвер клавиатуры, драйвер монитора, Namer, возможно Logger (ну назначение ясно Ж). Кроме того для функционирования драйверов потребуетс доводка ядра (после чего ядро уже будет готово на 90%). Собираться все это будет под линуксом точно (не вижу смысла собирать под Windows), да и располагаться все это уже сейчас может на любом линуксовом разделе, как вариант паралельной загрузки. Ну а там - как пойдет. Я никуда не спешу. Программирование - это творческий процесс, здесь вдохновение нужно.

У проекта есть всё для того чтобы стать настоящией системой! Осталось только подождать...