Это файл о моей ОС.
Это будет принципиально новая ОС, ни на что не похожая.
Основные принципы моей ОС:
1. пох на загрузчик, я его писать не собираюсь. Использую какой-нибудь уже написанный, главное чтобы он мог запустить то что мне нужно.
Т.е. загрузчик не будет частью системы.
2. абсолютная переносимость на любую платформу. Сча расскажу как. Так вот, основная суть операционки в том, что она будет использовать виртуальную
машину.
Т.е. вот как выходит, загрузчик загрузит вирт. машину и другой загрузчик,
который работает уже в контексте этой вирутальной машины, загрузит ОСь.
Вируальная машина будет из себя представлять ничто иное, как интерпетатор некоторого языка программирования, который и будет системным.
Кароче, скокоб я букв не написал все равно ничерта
непонятно, поэтому я нарисую картинко.
Вот схема обычной, говняной архитектуры:
Код:
--------------------------------
| говняные бинарные приложения |
| (без исходников не понять) |
--------------------------------
^
|
----------------
| говняная ОСь |
----------------
^
|
------------------------------
| говняный загрузчик на асме |
| загружающий говняную ОСь |
------------------------------
^
|
----------------------------------
| говняная аппаратура |
| говняный, непонятный ассемблер |
----------------------------------
Что мы видим? Одно говно. С аппаратурай все ясно, т.е. приходится юзать такую какая есть, тут мы не в силах что-либо изменить. Загрузчик аналагично.
Под такой ОСью можно конечно юзать и не бинарные приложения, но это будет не по християнски, очень убого, некрасиво, и медленно будет работать, и нужен будет интерпретатор.
А теперь схема правильной, годной архитектуры:
Код:
-------------------------------------------
| годные приложения на годном языке, |
| которые выполняются прямо из исходника |
-------------------------------------------
^
|
-------------
| годня ОСь |
-------------
^
|
------------------------------------
| годный загрузчик на годном языке |
| загружающий годную ОСь |
------------------------------------
^
|
---------------------------------
| годная вирт. машина |
| (интерпретатор годного языка) |
---------------------------------
^
|
-----------------------------------
| говняный загрузчик на асме |
| загружающий годную вирт. машину |
-----------------------------------
^
|
----------------------------------
| говняная аппаратура |
| говняный, непонятный ассемблер |
----------------------------------
Что мы видим? Говна стало меньше, но оно не относится к ОСи!
Переносимость, как я и говорил, абсолютная.
3. минимализм и простота. Если исходники ядра весят больше 1.999 метров, то ну их в топку, пускай в этом дерьме разбирается кто нибудь другой, а я мозги ломать не хочу. Вот, например, OpenBSD 4.3. Ну скачал я исходники ихнего ядра, разархивировал, и получил 90 мегов хлама.
И это называется, бл*ть Open Source? Никакого толка. Бред. Разве можно 90 мегов исходников назвать ядром ОСи? Ни один нормальный человек не может держать в своих мозгах за раз 90 мегов. Какой отсюда можно сделать вывод?
А такой, что ни один из этих "разработчиков" не знает своего ядра досканально. Да выкинули бы всё лишнее и оформили в виде маленьких прикладных
программ, было бы совсем другое дело... Ладно чето я не о том.
Так вот, моя виртуальная машина будет очень маленькой и аккуратной, максимум 1.998 мега.
Файловая система меня не волнует. Она будет как отдельное приложение.
Многозадачность аналогично. Будет отдельное приложение ее реализующее.
Так, теперь подробнее про виртуальную машину. Как она будет выглядеть? Да очень просто: строка приглашение на ввод функции, вы вводите функцию на годном языке, ее аргументы, и вам возвращают результат. И вот, всё на этом будет зиждется.
Виртуальная машина будет поддерживать библиотеки функций. Например, для работы с HDD, звуком, видео, блутусом и прочей аппаратурой. Т.е. своего рода дрова. Которые не являются частью ядра и виртуальной машины.
Кстати, насчет блутуса. В принципе, на самой машине будет достаточно держать только виртуальную машину и дрова-библиотеки, а ОСь может грузиться хоть по блутусу за тридевять земель. Но это так, отступление, в общем не суть.
А, еще одну фишку забыл сообщить. Приложения не нужно будет компелировать.
Прям в исходниках на годном язычке и будут плясать. Ну разве это не прекрасно?
А что же тогда останется в ядре, если из него всё выкинуть?
А вот тут начинается самое интересное. Ядро - это просто прога, скрипт на годном языке.
Что в нем написано? Да что угодно, но желательно, чтобы он запускал необходимые юзеру программы: система безопасности, файловая система, реализация многозадачности, тетрис и т.д. Т.е. что админу будет нужно, то он там и напишет.
Единственное, что гарантирует разработчик, это то, что ядро будет обязательно запущено при загрузке, а что вы в нем напишете всем до лампочки.
А что же тогда называть ОСью и что в нее входит?
Ответ: ядро и прикладные программы. Т.е. конструктор лего. Не понравилась файловая система - выкинул, прикрутил новую. Не понравился гуй - к черту его. А заменять то будет проще простого: никакой установки, компеляции не требуется, все Проги по определению становятся открытыми! Это вам не линуксы, виндовсы и прочая шняга, где без 1000 грам не разберешься.
А что за "годный язык"? Ну уж точно не С\C++, JAVA, PHP, HTML, MS WORD, BrainFuck, etc.
Годный язык - это AST (абстрактное синтаксическое дерево), т.е. лисп.
Почему этот язык годный?
Потому что он от GOD'a (я не шучу). В любом высокоуровневом языке программирования зашито AST.
Делайте выводы, товарищи. А для тех, кто не может: из лиспа можно сделать любой ЯП.
Итак, окончательная архитектура:
Код:
-------
| ОСь |
-------
^
|
--------
| ядро |
--------
^
|
-------------------
| вирт. машина |
| (интерпретатор) |
-------------------
^
|
----------------------------
| загрузчик на асме |
| загружающий вирт. машину |
----------------------------
^
|
-------------------
| аппаратура, асм |
-------------------
ЗЫ. Никаких наработок пока нет, есть только идея.
Приветствуется любая критика и опровержение годности.
Все пожелания и эмоции отправляейте мне на hardreset@inbox.ru