ОС своими руками

На страницах “Мегабайта” уже не раз появлялись статьи про “альтернативные” операционные системы. Продолжая эту тему, хотелось бы поговорить о том, как сделать ОС самостоятельно, повторив таким образом подвиг Линуса Торвальдса.

История вопроса
Так как сам я уже довольно давно пишу Паскале (а последние пару лет на Delphi), я попытался найти на просторах Сети проек­ты, посвященные разработке ОС именно на этом языке. Кто-то сейчас громко крикнет: “Да он что, с катушек съехал, кто же будет писать ОС на Паскале, для этого нужен Assembler и Си!”.
Ага… Объясните это Микрософту, который писал первые версии Windows (вплоть до 3.11) на всем известном Turbo Pascal.
Но и в наше время есть еще умельцы, пытающиеся повторить этот успех (впрочем, как выяснилось, безрезультатно). В ходе “оперативно-розыскной работы” мне удалось обнаружить сайты нескольких проек­тов по разработке ОС именно на любимом мною Паскале. Познакомимся с этими проектами поближе.

BairOS
Архив с этой операционкой, скачанный с ее сайта, весит всего 30 Кбайт. Внутри удалось обнаружить несколько исполняемых файлов, а также исходники, написанные на смеси Паскаля и ассемблера.
Так как на сайте было написано, что у Байроса пока нет загрузчика, я попытался запустить ядро системы прямо под Windows — и это получилось! Правда, пока смотреть здесь не на что. Система имеет консольный интерфейс в стиле DOS, поддерживает десяток внутренних команд и умеет­ запускать программы, коих в архиве целых две: одна выводит в случайной позиции экрана не менее случайное число, а вторая запрашивает у вас два числа и подсчитывает их сумму. Кстати, система эта многозадачная, поэтому первый из примеров продолжает работать до самого выхода из системы и мигает циферками.
Несмотря на то, что эта ОС, в отличие от остальных, найденных мною, работает, ее разработка давно заброшена, так что…

Jurion
С этой системой (как, впрочем, и со всеми остальными, кроме Байроса), мне познакомиться лично не удалось — нормальных бинарных дистрибутивов у них не было. Этот проект является своеобразным экспериментом по написанию системы на Паскале. Судя по информации на сайте (а также по исходному коду), эта система (также как и Байрос) является многозадачной, поддерживает работу с файлами, умеет отображать графику и работать с мышкой. Правда, в настоящее время проект не развивается, так что…

PascalOS
Уже из названия видно, что система написана на Паскале. К сожалению, сайт этой системы не обновлялся уже три года, и скачать от туда удалось только фрагмент исходников. Причем эти исходники представляют собой нечто не совсем понятное, поэтому их работоспособность вызывает сомнения, так что…

И еще…
Также мне удалось обнаружить проект по написанию ОС на языке Oberon, который является по сути логическим продолже­нием Паскаля (его разработку начал когда-то сам Вирт). Впрочем, эта операционная система также является скорее теоретическим проектом, чем реальной средой.
Кроме того, в “Королевстве Delphi” (www.delphikingdom.ru) я натолкнулся на ветку форума, посвященный интересующему меня вопросу: “ОС на Паскале”. Там уже довольно давно ведется обсуждение в стиле “А можно ли написать…”. Но эта ветка находится в разделе “флейм, так что…

Выводы
Все вышесказанное, конечно, не очень вдохновляет, но, несмотря на это, можно утверждать, что написать ОС на Паскале все таки возможно! Давайте попробуем понять, как к этому можно подойти. Чтобы разобраться, я снова залез в Сеть и побродил по ресурсам, посвященным системному программированию вообще и разработке ОС в частности. После изучения всей найденной информации я сделал несколько выводов:
1. Прежде чем начинать работу над ОС нужно составить подробный план, в котором должна быть описана архитектура системы, ее назначение, общие принципы работы. Это позволит избежать лишних проблем при дальнейшем развитии системы, вызванных различными нестыковками в совместной работе ее компонентов. Особенно это важно, если над проектом работает несколько человек, каждый из которых занимается какой-либо одной частью.
2. Чтобы операционная система развивалась, для нее нужно сделать среду разработки. Писать компилятор “с нуля” — занятие довольно нудное. Вот тут-то и может помочь старина Паскаль. Как известно, для этого языка существует компилятор Free Pascal Compiler (www.freepascal.org), который является кроссплатформенным проектом с полностью открытым кодом, что позволяет без лишних усилий перекомпилировать под свежесделанную систему (уже сейчас есть версии почти для двух десятков разных платформ!). Более того, для FPC существует “надстройка”, называемая Lazarus (www.lazarus.freepascal.org) которая является своеобразным аналогом всем известной Delphi (подробнее см. «МБ» №1-2'2005). Таким образом, если разрабатывать ОС на Free Pascal, то в дальнейшем можно получить для этой ОС мощнейший инструмент (сопоставимый с Delphi).
3. C самого первого этапа разработки необходимо подробно документировать все функции ОС, а также служебный API. Это позволит разработчикам более полно использовать все возможности системы.
4. Интерфейсная часть системы должна легко адаптироваться под любой язык. То есть не должно быть ситуации, когда для смены языка пользователю в лучшем приходиться заменять половину системных файлов, а в худшем — переустанавливать систему.
Этот список можно продолжить и дальше, но, думаю, пока достаточно и этого. Как видите, создание ОС — не такая уж и простая задача. Хотя, с другой стороны, Линус смог сделать это в одиночку…
PS. Я намеренно не привожу ссылки на сайты описанных “ОС”, поскольку все эти сайты давно мертвы. Если кому-то интересен этот вопрос, то найти информацию можно, например, в каталоге на mail.ru.


Рекомендуем почитать: