Как стать автором
Обновить

Несколько советов молодым программистам, решившим написать свою операционную систему

Время на прочтение 3 мин
Количество просмотров 9.3K
Здравствуйте, уважаемые читатели!

Писали ли вы когда нибудь операционную систему? Вероятно, каждый десятый программист, заглянув лет на 10-20 назад и вспомнив начало своей карьеры, ответит — да. Господа, эта статья не для вас. Это статья для тех, кто верит в свои силы и полон надежд завоевать мир. Я постараюсь предостеречь вас от некоторых характерных ошибок.

Так повелось, что среди молодёжи считается крутым использовать ассемблер. Большинство молодых программистов, начавших изучать ассемблер, хотят попробовать свои силы в написании вируса или операционной системы. По статистике, более 90% проектов написания ОС на ассемблере, заканчиваются написанием начального загрузчика. Человек получает опыт, понимает, с чем ему предстоит столкнуться в будущем, и постепенно его интерес угасает. Что ж, отсутствие результата — тоже результат. Во всяком случае знание ассемблера может пригодиться в будущей жизни, например, в области встраиваемых решений. Мой совет будет простой: решили написать свою ОС — возьмите чужой загрузчик. Даже при худшем раскладе вы окажетесь впереди тех 90%, кто остановится на загрузчике.

Пойдём дальше. Загрузчик есть, пишем ядро. Опять же, не думая о проектировании, юные программисты вооружаются книжками о защищённом режиме процессора 80386 (подставьте Pentium Quad Core, смысл не изменится) и начинают играться с селекторами, дескрипторами, страницами виртуально памяти и т.д. и т.п. Как результат — их программа действительно работает в защищённом режиме и, возможно, переключает задачи по прерыванию от таймера. Хороший момент, чтобы набраться опыта и потерять интерес к проекту или запутаться в ассемблерном коде. Как быть? Хороший момент остановиться и пользуясь полученным опытом начать проектировать систему. Таким образом вы перейдёте на третий уровень.

Итак, вы получили бесценный опыт и поняли как работает железо. Что делать дальше? Мало знать как работает железо. Чтобы не изобретать велосипед, имеет смысл изучить как работают современные операционные системы. Книжки Эндрю Таненбаума вам в помощь.

Категорически не советую браться за реализацию графического оконного интерфейса — кнопка «Пуск» и окошки произведут впечатление лишь на неискушённого пользователя. Любой специалист знает, что главная задача операционной системы — управление памятью и процессами. Спроектируйте, каким образом будут создаваться, обслуживаться и (что немаловажно) освобождаться процессы. Не забывайте о памяти — продумайте, каким образом будет выделяться и освобождаться память. И только когда вы будете чётко представлять, каким образом будет реализовано управление процессами и памятью, можно приступать к кодированию.

Следующий этап, пожалуй, самый важный. Даже если вам удалось спроектировать систему, управляющую процессором и памятью, это не значит, что система представляет практический интерес. Есть небольшая вероятность, что вашей работой заинтересуются разработчики встраиваемых систем. Но много ли вам известно встраиваемых систем, основанных на архитектуре х86? Вот и я том. На этой стадии проекта вам опять безумно захочется написать красивый графический интерфейс. Рано. Ещё рано. Самое время реализовать файловую систему. Для любой операционной системы, какой бы новой и прогрессивной она не была, файловая система более важна чем графический интерфейс. Даже самая современная Windows выросла из надстройки, которая запускалась поверх текстовой MS-DOS.

Написав файловую систему, вы столкнётесь с новой проблемой — какой бы хорошей и инновационной не была бы ваша система, без программного обеспечения она не интересна ни одному человеку, кроме автора. Где же взять программы для вашей хорошей системы? Написать самому? Можете попробовать, если вы супермен. Попросить друзей и знакомых? Наивные мысли — каждый занят своими проблемами. Выход один — использовать уже написанное программное обеспечение. И очень хорошо, если еще на этапе проектирования вы подумали об этой возможности и заложили совместимость с каким либо из существующих стандартов.

Учитывать вышеприведённые советы необходимо, но это не значит, что следование им приведёт к успеху. Это лишь минимум, без которого не стоит браться за дело.
Теги:
Хабы:
+105
Комментарии 76
Комментарии Комментарии 76

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн