> man operating_systems
Интервью с разработчиком Constructor OS
на вопросы OSRC.info отвечает mzprog
на Среда, 01 Июнь 2005, 21:42
добавил: ddc список авторов
категория Статьи > Write Your Own OS
просмотров: 1294

Проект Constructor OS недавно достаточно громко заявил о своём существовании выпуском COS (Constructor OS) 0.2. Для того, чтобы все читатели могли ознакомиться с идеологией COS и планами разработчиков, мы попросили одного из разработчиков проекта - mzprog - рассказать немного о COS.


Интервью брал Дмитрий Царьков aka Czarker, на вопросы отвечал mzprog - один из разработчиков проекта Constructor OS и разработчик Mz C++ Constructor.
<BR>
<BR>
<BR>
<b></b>: Что сподвигло тебя на разработку новой ОС?
<BR>
<BR>
<b>mzprog</b>: Вообще-то, меня давно интересовал вопрос написания операционной системы. Из всех проектов, мне более всего импонировал проект операционной системы 3OS. Где-то месяц назад у меня появилось свободное время и я мог бы посильно поучаствовать в этом проекте. Однако, проект загнулся (говорят временно). После этого, я наткнулся на сайт http://rosdev.narod.ru, на котором только начался новый проект оси ROS (Российской Операционной Системы), и вычитал на нём следующее:
<BR>
<BR>
"Как обычно, в очередной раз сидя перед интернетом (попивая волшебное от холода пиво), до меня вдруг дошло: в России, да и на территории бывшего СССР, никто ещё не написал даже какой-нибудь простенькой операционной системы! Значит, надо браться самому!!!"
<BR>
<BR>
Но прельстило меня не это, а последовательноть разработки, предложенная автором сайта:
1. компилятор Ассемблера;
2. компилятор С++;
3. ядро и т.д.
<BR>
<BR>
И я влился в команду, так как написание компиляторов - тоже интересное занятие!
<BR>
<BR>
<BR>
<b></b>: Изложи, пожалуйста, базовую концепцию и основные идеи COS по состоянию на
настоящий момент.
<BR>
<BR>
<b>mzprog</b>: Взявшиь за компилятор, я предложил использовать средство разработки Mz C++ Constructor!!! (http://mzc.narod.ru)
<BR>
<BR>
Данное средство я начал разрабатывать уже давно, правда сам процесс написания затянулся. Краткий смысл конструктора: визуальная разработка, завершающаяся генерированием C++ файлов для какого-нибудь компилятора. Теперь компилятор должен быть свой! developer - (это ещё один наш разработчик), изучив концепцию Mz C++ Constructor предложил мне написать концепцию оси. Я так и сделал.
<BR>
<BR>
Суть концепции заключается в следующем: код Mz C++ Constructor загружается в память и на него передаётся управление. Таким образом, Mz C++ Constructor является не только средством разработки, но и операционной системой одновременно! Поэтому, операционку переименовали из ROS в COS (Constructor OS).
<BR>
<BR>
Конечно, далеко не всё так просто. Нужно закончить компилятор С++ (Ассемблер с грехом пополам уже работает), адаптировать библиотеки, на которых написан конструктор, ведь они используют функции Windows или VCL-классы (пока что конструктор написан на Borland C++ Builder)...
<BR>
<BR>
<BR>
<b></b>: Собираетесь ли вы использовать уже готовые элементы других ОС (glibc, например)?
<BR>
<BR>
<b>mzprog</b>: Использование чужих элементов предполагает полнейшее их изучение. Таким образом, необходимо будет изучить чужой код. Не проще ли написать его самому? Да и потом, например, glibc (GNU C Library) предполагает свою концепцию, отличную от нашей. Тем более, что у нас всё изначально построено на классах и у нас своя структура классов! В общем, на данный момент, вопрос использования готовых элементов на повестке дня не стоит.
<BR>
<BR>
Хотя, уже, Mz C++ Constructor позволяет импортировать классы из файлов. Но эта возможность необходима для того, чтобы импортировать в Mz C++ Constructor классы самого Mz C++ Constructor!!!
<BR>
<BR>
<BR>
<b></b>: А вообще, что уже сделано?
<BR>
<BR>
<b>mzprog</b>: Конечно, разработка COS началась ещё только 5 мая 2005, то есть меньше месяца назад. Однако, Mz C++ Constructor, на котором строится COS, начал разрабатываться уже давненько. Поэтому, библиотека классов, на базе которой будет строится COS, в какой-то степени уже написана. Также написан на 80% компилятор ассемблера. Кстати, COS 0.2 (загружаемся с дискеты по адресу 10000H, выводим надпись и обрабатываем PS/2 мышку) полностью написана на этом ассемблере!
<BR>
<BR>
<BR>
<b></b>: Каково будущее вашей ОС? Поясню: существует классификация операционных систем, которая разделяет все ОС на прикладные (ОС для решения каких-то прикладных задач), учебные (для обучения системному программировани), академические (для разработки новых концепций и решений) и энтузиастские (просто захотелось написать). К какой из этих категорий относится COS?
<BR>
<BR>
<b>mzprog</b>: Будущее COS? Сможет ли она вытеснить Windows или Unix-Linux? Конечно, нет. Но занять свою нишу - возможно. Я бы ориентировал COS на ближайшее будущее, как операционка для программистов. По сути, для программиста, не будет существовать особой разницы, в какой операционке программироватьна Mz C++ Constructor, под Windows, Linux или под COS.
<BR>
<BR>
<BR>
<b></b>: Среди UNIX'истов блуждает анекдот про операционную систему в виде [текстового редактора] EMACS с его надстройками. Похоже, это можно отнести и к COS. Что на это скажешь? ;-]
<BR>
<BR>
<b>mzprog</b>: Как я понимаю, EMACS запускается из-под UNIX. В концепции COS предполагается, что она работает с различными объектами, представляя возможность их редактирования, хранения на диске в виде древовидной структуры и т.д, а также возможность написания приложений и запуска их из под COSа! При этом, под самой COSой (косинусом называл, а косой в первый раз ) ), нет другой операционки, только BIOS и чистое железо. Ну можно, в принципе, COS называть не операционной системой, а безопасным средством разработки .
<BR>
<BR>
<BR>
<b></b>: Как планируется реализовывать эти разработческие функции? На какой платформе будет работать код, написанный из-под COS'а? Что потребуется для его исполнения под Windows, под GNU, под BSD?
<BR>
<BR>
<b>mzprog</b>: В COS программы будут писаться на средстве разработки Mz C++ Constructor. Само это средство, как планируется, будет работать и под Windows и под Linux. Написав программу в COSе, переписываем её исходник в Windows. Что получаем? Класс CApp, содержащийся в любом приложении, написанном на Mz C++ Constructor, для COSa выполнит следующую строчку:
<BR>
<BR>
CCanvas *canvas = new CCosCanvas();
<BR>
<BR>
а для Windows:
<BR>
<BR>
CCanvas *canvas = new СWinCanvas();
<BR>
<BR>
Классы отображения окошек, кнопочек и других графических элементов используют функции вывода линий, текста (и так далее) абстрактного класса CCanvas, конкретная реализация, например, для Windows находиться в классе CWinCanvas().
<BR>
<BR>
Возможно, что те кто читают эту статью, не все хорошо разбираются в программировани и не поняли вышеизложенное. Просто, для реализации поддержки многоплатформености применяется один из инструментов объектно-ориентированног подхода.
<BR>
<BR>
<BR>
<b></b>: Будет ли у COS собственный *драйвер файловой системы* для FAT, NTFS, ext2/3, ReiserFS и т.п.? Как разработчик сможет перенести свой код из COS в другую ОС?
<BR>
<BR>
<b>mzprog</b>: На ближайшее время поддержка чужих файловых систем не планируется. Да и честно говоря, нет желания тратить на это время. Первый этап предполагает работу только с дискетой. Если мы работаем в Windows, то компилируем свой проект
вместе с COS и необходимыми файлами в img-файл (с помощью Mz C++ Constructor), переносим его на дискету, загружаемся с неё. Причём, img-файл строится так, чтобы дискета была отформатированав свою файловую систему.
Обратный процесс переноса файлов: снимаем под Windows img-файл с дискеты и расшифровываем его с помощью Mz C++ Constructor.
<BR>
<BR>
Казалось бы, всё зачем-то усложняется, не проще ли ввести поддержку FATа?
Попробую защитись такой подход.
<BR>
<BR>
Во-первых, для меня так было проще написать загрузчик. Находясь в нулевом секторе дискеты (первые 512 байт), он загружает по адресу 10000H ОЗУ остальные сектора, причём их количество указано в загрузчике.
<BR>
<BR>
Во-вторых, файловая система COS очень проста! (см. её описание на сайте)
<BR>
<BR>
В-третьих, есть идея хранения не файлов как таковых, а объектов (что-то отдалённо напоминающее концепцию ЕПД в 3OS).
То есть файл - это объект, а каталог - это тоже объект, содержащий в себе группу подобъектов. Такое дерево объектов
можно увидеть в Mz C++ Constructor. Но пока всё это на стадии проработки...
<BR>
<BR>
<BR>
<b></b>: Каковы перспективы сосуществования COS и других ОС на одном компьютере? Предполагается ли какое-либо взаимодействие.
<BR>
<BR>
<b>mzprog</b>: Windows и Linux могут же сосуществовать на одном компьютере, ну думаю и здесь особых проблем не возникнет. Тем более, что на данный момент, предполагает только загрузка с дискеты.
<BR>
<BR>
Кстати COS, являясь по сути тем же Mz C++ Constructor, может запускаться как отдельно, так и, например, поверх Windows (как, в своё время, Windows поверх MS-DOS). Полное взаимодействие Если имелась в виду работы COS в сети, выход в интернет и т.д., то это вопрос написание драйвера сетевой карточки, написание TCP/IP и HTTP протоколов. Пожалуй, это слишком далёкая перспектива, хотя, как же без этого в современном мире!
<BR>
<BR>
<BR>
<b></b>: А как вы планируете организовать работу с драйверами в COS?
<BR>
<BR>
<b>mzprog</b>: Любая новая операционная система проигрывает той же Windows отсутствием драйверов. Поддержка FAT - этот вопрос лишнего времени, наверное, не многим сложнее будет поддержка NTFS. А вот поддержка сетевых, звуковых или видеокарт - для меня это сложный вопрос, ведь их бесконечное множество и они постоянно развиваются.
Я постоянно представляю, как я ищу в инете информацию о своей видеокарте NVIDIA GeForce, как пишу для неё драйвер и т.д.. Меня охватывает ужас! Вижу для себя лишь один выход: перелопачивать исходники Linux
<BR>
<BR>
<BR>
<b></b>: Планируется ли (в более поздних версиях) какая-либо пользовательска инфраструктура: аудио- и видеопрогрыватеи, игры и т.п. Как они будут реализованы?
<BR>
<BR>
<b>mzprog</b>: Думаю, что разработчики WinAmp воспримут за честь адаптацию его под COS )
А если серьёзно, то невозможно объять необъятное. Плохо когда солдат (COS) не мечтает стать генералом (Windows). Но это невозможно чисто физически, когда проектом занимается один-два программиста. Другое дело, задаться целью написать одну, но хорошую 3D-игрушку. Есть такая задумка! Вообще, планируется, что библиотеку классов Mz C++ Constructor можно будет рассматривать и с точки зрения 3D игрового движка! Для Windows и даже Linux - пожалуйста, для COS - мечта далёкого будущего...
<BR>
<BR>
<BR>
<b></b>: mzprog, спасибо тебе за ответы.
<BR>
<BR>
<b>mzprog</b>: Спасибо за вопросы. Они позволили мне самому лучше понять, что мне надо от COS и Mz C++ Constructor...




P.S.: обсуждаем здесь.



© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.