Открытая операционная система с нуля.
Предлагаю написать операционную систему.
1. Задумка эта не коммерческая.
2. Пишется всё с нуля, без использования сторонних продуктов - на голом железе и собственных мозгах.
3. Все происходит прямо здесь, пока это не перестанет быть возможным.
Существует много проектов, но эта затея для тех кто хочет родить операционную систему и воспитывать ее с пеленок (а не содержать пенсионерку). Вот как раз сейчас мы ее зачали.
Надеюсь многому научиться, найти единомышленников, а также найти предел своих возможностей.
Стартовые условия таковы.
Железо: Процессор пень второй. Оператива 32М. Остальное может быть любым, а может и не быть вовсе.
Направление: Система должна в перспективе поддерживать все что угодно, работать с любым набором железа. Систему можно улучшать и это должна предусматривать ее архитектура.
Другими словами - система пишется с нуля и до бесконечности. При этом она все может но ничего не требует. По крайней мере к этому стремится.
Пишется все по порядку - шаг за шагом. Официальный язык - машинный код или то, что напишем на нем сами. Разумеется в мнемониках ассемблера или чего угодно другого, но без использования КОНКРЕТНОГО компилятора.
Главная идея - понимание каждого байта своей системы.
Я так понимаю, что сначала нужно создать ту часть, которая сидит в памяти и работает. Как она туда попадет - не важно. Не надо привязываться к дискетам, жестким дискам и сидюкам. Носители появятся новые и система не должна от них зависеть.
На этом этапе надо определить основные понятия: устройство, процесс, ... вобщем всё то, что будет ядром системы и в дальнейшем уже не изменится - идеология. Это ядро должно дать минимальную функциональность системе, но при этом не ограничивать возможности дальнейшего развития.
Идея подана.
Если она прижилась, то говорите что делать в первую очередь (разумеется не надо начинать с того, как будет выглядеть окно интернет-браузера и каким будет цвет рабочего стола :).
Что должна уметь система в самом фундаменте?
Наверное она должна запускать процессы и соединять их с ресурсами.
Какие могут быть процессы? Какие ресурсы?
Разумеется, система не имеет права зависнуть ни в каком случае по собственной вине или по вине программы.
Нужно придумать универсальные интерфейсы, чтобы система была модульной (универсальность за счет драйверов и т.п.).
Еще раз скажу, что этот велосипед изобретается в первую очередь для собственного развития участников. Поэтому не надо говорить что все уже кем-то создано.
Бог вот человека создал и ладно (раз работает, то ради бога ничего не трогай!), а тебе так - слабо? (я в том смысле, который тут уместен...)
Пэйджинг, подсистема управления памятью, драйвера клавиатуры, флопика, таймера, библиотека libc. Мало?
Нет не мало, просто я не могу понять, как ты можешь говорить о пэйджинге и подсистеме управления памятью, когда у тебя дыры и наложения по всему адресному пространству из-за проблем с адресацией... или с этим уже все в порядке?
Нет не мало, просто я не могу понять, как ты можешь говорить о пэйджинге и подсистеме управления памятью, когда у тебя дыры и наложения по всему адресному пространству из-за проблем с адресацией... или с этим уже все в порядке?
Там такого нет и быть не может. Физическая память выделяется при помощи битмапа (а значит не может выделиться дважды). В целом глюков в области ядра обнаружено не было. Единственная проблема находится не в ядре, а в загрузчике (loader.bin) в указанном мною месте и не может иметь никакого отношения к коду ядра (к его содержимому) так как до ядра дело не доходит.
Поэтому я еще сегодня новую книженцию "ASSEMBLER для Win UNIX" (может там чего найду).
Но вопрос, конечно, интересный...
PS: Под WMWare ядро получает управление.
Кто хочет узнать или наоборот рассказать о том, какие действия должна выполнить операционная система во время своей инициализации, пишите здесь.