Прежде чем начинать разработку ОС, вы должны ответить себе на
множество вопросов, среди которых есть как философские (например "зачем
писать собственную систему, ведь их существует оооооочень много"?), так и
практические. Мы с вами поговорим о вопросах второго типа. Здесь я
написал вопросы и мои собственные ответы на них (связанные с моим
проектом). Вероятно что ваши ответы будут другими в зависимости от ваших
нужд. Подумайте, подумайте и еще раз подумайте, прежде чем начинать
программировать ОС.
Итак, вопросы для разработчика ОС: 1. Какова первичная цель моей ОС? Кто будет ее использовать:
- Если это обычная десктоп-система для людей без особых технических
знаний, вы должны предоставить хорошую совместимость с различным
программным и аппаратным обеспечением, множество драйверов и т.п.
- Если это hi-end система для дизайнеров CAD/CAM, то подумайте о
производительности, качестве ввода/вывода информации.
- Если это система реального времени для профессиональных программистов,
подумайте об определенном времени ответа на запросы, легкой
расширяемости, хорошо документированных исходниках (если вы хотите
распространять исходники системы)
Для моего проекта я решил написать небольшую ОС для экспериментов и
лучшего понимания принципов работы ОС (наиболее близко к варианту 3 в
вышеприведенном списке). Так что я попытаюсь задокументировать исходники
так хорошо, настолько это возможно. Проект является open-source и
freeware (а также enjoy- и study-ware ;0) ).
2 Какие платформы собирается поддерживать ваша ОС?:
- На какие типы платформ она нацелена: настольные или встроенные
системы?
- Будет ли она мультиплатформенной?
- Будет ли поддерживать мультипроцессирование?
- Будет ли работать наверху других ОС?
Мой проект нацелен на платформу Intel с одним процессором (нет
поддержки мультипроцессирования)
3 На какой платформе я буду разрабатывать ОС? Какие инструменты мне
нужны?:
- Где я буду разрабатывать ОС? На компьютере какого типа? С какой ОС?
- Могу ли я использовать существующие компиляторы и компоновщики? Или
нужно будет писать все с нуля?
- Сколько мне придется заплатить за эти инструменты?
- Могу ли я получить исходные коды для используемых компиляторов и
компоновщиков?
- Должен ли я буду писать какие-то инструменты самостоятельно? Какие
именно?
4 Могу ли я использовать уже написанный код?
- Могу ли я использовать код написанный другими? Работает ли он хотя бы
частично?
- Существуют ли похожие проекты?
- Где я смогу получить документацию и помощь?
5 Как точно будет выглядеть моя ОС?
- Как она будет загружаться?
- Будет ли она многозадачной?
- Как будут распределяться ресурсы между приложениями?
- Какая модель памяти будет использоваться?
- Какая файловая система будет использоваться?