Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Пишем свою операционную систему. Предисловие


Доброго времени суток!

В последнее время можно наблюдать некоторый спад интереса к osdev-тематике. На самом Subscribe.ru мне удалось найти лишь три рассылки, и все они не выпускаются уже больше года, а имеет более-менее большое количество интересного материала лишь одна. Можно подумать, что рассылки доходят до своего логического завершения и не выпускаются, потому что больше нечего писать, но это не так - все рассылки обрываются на середине разработки учебной операционной системы, так и не реализовав и десятой части необходимых функций. Возможно, пропал интерес разработчиков создавать новые проекты, но я надеюсь, что ещё не пропали желающие читать про всё это и принимать посильное участие в уже готовых проектах, иначе моя рассылка не имеет смысла (куда я без подписчиков?).

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

Для начала определимся с используемыми для разработки инструментами. В этом выпуске не будет строчек программ, это всего лишь вступление, предисловие.

  • flat assembler - компилятор для языка Ассемблера. Конечно, при желании вы можете использовать любой другой компилятор, но по личным соображениям я предпочитаю этот как наиболее функциональный и гибкий. Все примеры программ в рассылке будут ориентированы именно на него.
    Скачать последнюю версию для Windows или Linux вы всегда можете на официальном сайте: flatassembler.net
  • GCC - компилятор для языка программирования Си. Разрабатывать ядро и другие сложные компоненты системы полностью на Assembler было бы не рационально. Во-первых, теряется наглядность и внешняя простота кода. Во-вторых, перенос системы на другую платформу (встраиваемые системы, помните?) потребует практически полного переписывания системы с нуля. Мы будем использовать компилятор этого языка от GNU. Если вы используете ОС Linux, то он уже скорее всего уже у вас установлен, либо вы знаете как его установить из стандартных репозиториев. Пользователи же Windows могут скачать установщик MinGW с его официального сайта - www.mingw.org
  • Виртуальная машина Bochs - в наше время быстрых процессоров крайне не удобно перезагружаться ради каждой проверки новой операционной системы. С учётом того, что на первых этапах разработки она не будет способна выполнять никаких полезных функций. К тому же далеко не у каждого пользователя сейчас есть дисковод для гибких дисков (попросту говоря - дискет), а использовать для этого флешку - необходимо искать чистую, данные с которой не жалко потерять (запись образа нашей ОС уничтожит данные и потом флешку придётся заново форматировать). Да и работа с USB в ядре ОС гораздо более сложна. Почему именно Bochs? Он не отличается высокой производительностью, но она нам и не нужна, ведь на первых шагах, наша ОС будет мало что делать, зато он обладает по истине огромными возможностями для настройки эмулируемой среды и отладки кода системы, что очень важно для нас, как для разработчиков. Скачать последнюю версию можно по адресу bochs.sourceforge.net. Пользователи большинства дистрибутивов Linux могут установить и эту программу из своих репозиториев, либо собрать из исходников с этого же сайта.
  • Шестнадцатеричный редактор - иногда бывает необходимо просмотреть содержимое файлов естественном для компьютере представлении, а то и подредактировать его. Пользователям Windows могу посоветовать очень хороший бесплатный редактор HxD. С его же помощью вы сможете и записать загрузочный образ системы на флешку или дискету.

Ну вот и всё для начала, пожалуй. Все перечисленные выше программы совершенно бесплатны, поэтому у вас не должно возникнуть проблем с их получением и установкой. Для того, чтобы продолжить дальше необходимо иметь их все в наличии, потому что я не буду в будущем заострять внимание на инструментах. Также я уже предполагаю некоторое знание языка Assembler и не буду рассказывать основы, потому что тогда рассылка получится слишком большой и скучной для тех, кто уже что-то знает.

Все возникшие вопросы и предложения (кроме, пожалуй, "автор убейся - твоя ОС никому не нужна") вы можете отправлять в любое время дня и ночи на мой личный адрес электронной почты kiv.apple@gmail.com. Я постараюсь ответить как только смогу, только, пожалуйста, указывайте, что вы обратились ко мне именно в результате чтения моей рассылки.

Благодарю за внимание. До встречи ;-)

В избранное