Операционная система LunaOS (Самописное ядро)
Всем доброго времени суток. Однажды я решил узнать, как же создать операционную систему в OpenComputers, однако создавать вторую OpenOS я не хотел. Потому пытался придумать "изюминку" своей ОС. Тут пришла мысль о том, чего очень не хватает в ядре OpenOS - многопоточность. Я уже читал на форумах, что данная особенность "не нужна", "нет смысла" и т. п. Однако данная возможность добавит несколько особенностей в OpenComputers:
SSH клиент. Подключение к компьютеру;
Удаленный рабочий стол;
Система пользователей;
Сервера;
Кластер.
Само собой это не полный список возможных программ, которые можно написать в многопоточной системе. Однако это уже большой аргумент, для ее создания. Начал я с реализации многопоточности. Я надеялся, что в Lua есть удобные потоки, через которые данный процесс не вызовет проблем, однако такой возможности не оказалось. Я уже думал забросить создание многопоточности и просто создать операционную систему, а вскоре и совсем забросить создание операционки. Спустя неделю, я все же придумал как реализовать многопоточность и все благодарю моему другу, который не дал мне "опустить руки". Идея пришла не сразу и как и все идеи - в дУше (на самом деле в уборной). На помощь мне пришли coroutine. Среди читающих наверняка есть 3 типа:
те кто понял, как все это работает;
те кто знает, что такое coroutine, но не знает как на их основе создать псведо-многопоточность;
те кто в танке.
Настоящая операционная система является многопоточной, хотя процессор - однопоточный. Но как? На самом деле, все достаточно просто. Операционная система переключается с одного процесса на другое через определенные промежутки. Это зоны являются атомарными (неделимыми). Так же я решил поступить и с OpenComputers. Многие думают, что это невозможно, но тут к нам приходят на помощь coroutine'ы. Через некоторое время мне удалось проработать ядро операционной системы. Вот структура операционной системы:
Вот диаграмма жизни операционной системы:
На данный момент ядро уже почти готово. Уже скоро я начну работать над самой операционной системой. Как только мне будет что показать (помимо исходного кода) я выложу это в этой теме. На данной момент у меня есть к вам несколько вопросов и предложений:
[Вопрос] Будет ли иметь смысл данная операционная система?
[Вопрос] Какие еще возможности вы хотите предложить?
[Вопрос] Из-за многопоточности, прямая работа с компонентами должна быть недоступна. Как вы думаете, стоит ли программно запрещать это.
Так же я уже придумал реализацию и буду писать следующие программы:
apt-get
ssh client and server
ftp client and server
teamviewer
cluster
software raid
sudo
Спасибо за внимание и ждите обновлений! Обновления: Обновление 25.08.2016 (не известно) ==================== Теперь в этой области будут появляться все обновления системы.
Обновление 26.08.2016 (22:40)
====================
Реализованы модули control, hardware и signals в ядре.
В процессе - исправление ошибок и недочетов. Разработка модуля filesystem.
Обновление 27.08.2016 (1:50)
====================
Написана текстовая документация на 50%
После завершения и доработок - будет выложен для совместной доработки.
P.S. В нем будет виден принцип работы ядра, но я думаю это не столь так важно, ибо отыскать к нему доступ смогут лишь только опытные пользователи OpenComputers.
Обновление 29.08.2016 (12:10)
====================
Ядро реализовано.
Написание API.
Решение проблем с удобством написания программ при работе по SSH.