Операционная система позволяет пользователю взаимодействовать с компьютерным оборудованием. Система состоит из сотен тысяч строк кода. Обычно операционная система создается с использованием языков программирования C #, C, C ++ и ассемблера. Операционная система позволяет вам просматривать ваш компьютер, сохраняя и выполняя команды. Не думайте, что создать операционную систему легко. Чтобы это сделать, нужно много знаний.
Шаг
Шаг 1. Прежде всего, узнайте о программировании
Язык ассемблера очень важен; Настоятельно рекомендуется изучить другой дополнительный язык высокого уровня, например язык C.
Шаг 2. Решите, какой носитель вы хотите использовать для загрузки ОС
Этот носитель может быть CD-приводом, DVD-приводом, флэш-накопителем, жестким диском, гибким диском или другим компьютером.
Шаг 3. Определите основную идею SO
Например, в Windows основная идея - это простой в использовании графический интерфейс и высокий уровень безопасности.
Шаг 4. Определите, какую платформу процессора будет поддерживать ваша операционная система
IA-32, ARM и x86_64 - наиболее распространенные платформы для персональных компьютеров. Итак, все они - ваш лучший выбор.
Шаг 5. Решите, предпочитаете ли вы делать все самостоятельно с нуля или уже доступно ядро, на котором вы хотели бы построить
Например, Linux с нуля - это проект для людей, которые хотят создать свой собственный дистрибутив Linux.
Шаг 6. Решите, будете ли вы использовать собственный загрузчик или заранее созданный, такой как Grand Unified Bootloader (GRUB)
Самостоятельное кодирование загрузчика потребует обширных знаний об оборудовании и BIOS. В результате этот шаг может помешать действительному расписанию программирования ядра.
Шаг 7. Решите, какой язык программирования использовать
Иметь операционную систему на таком языке, как Pascal или BASIC, - это нормально, но вы должны использовать C или Assembly. Сборка очень необходима, потому что этого требуют некоторые важные части операционной системы. С другой стороны, язык C ++ содержит ключевые слова, для выполнения которых требуется другой полный SO.
Чтобы скомпилировать операционную систему из кода C или C ++, вы, конечно, будете использовать тот или иной компилятор. Поэтому рекомендуется обратиться к руководству пользователя / руководству / документации по компилятору C / C ++ по вашему выбору, независимо от того, включен ли он в программное обеспечение или доступен на веб-сайте дистрибьютора. Вам нужно знать много сложных вещей о компиляторе, а для разработки на C ++ вам нужно знать о схеме изменения компилятора и его ABI. Ожидается, что вы разбираетесь в различных исполняемых форматах (ELF, PE, COFF, базовый двоичный код и т. Д.) И понимаете, что эксклюзивный формат Windows, PE (.exe), защищен авторскими правами
Шаг 8. Определите интерфейс прикладного программирования (API)
Один хороший API на выбор - это POSIX, поскольку он хорошо документирован. Все системы Unix имеют хотя бы частичную поддержку POSIX. Таким образом, подключение программ Unix к вашей ОС должно быть простым.
Шаг 9. Определитесь с вашим дизайном
Есть такое понятие, как монолитное ядро и микроядро. Монолитные ядра реализуют все службы в ядре, в то время как микроядра имеют небольшие ядра, связанные со службами развертывания пользовательских демонов. В целом, монолитные ядра быстрее, но микроядра лучше изолированы от сбоев и надежнее.
Шаг 10. Рассмотрите возможность развития и работы в команде
Таким образом, на решение большего количества проблем уйдет меньше времени, что, вероятно, ускорит создание лучшей ОС.
Шаг 11. Не протирайте жесткий диск полностью
Помните, что удаление диска приведет к безвозвратному удалению всех данных на нем! Используйте GRUB или другой менеджер загрузки для двойной загрузки вашей системы с другой ОС, пока ваша ОС не станет полностью функциональной.
Шаг 12. Начните с малого
Начните с небольших вещей, таких как отображение текста и пауза, прежде чем переходить к таким вещам, как управление памятью и сложная работа. Также убедитесь, что вы сделали 32-битную и 64-битную версии.
Шаг 13. Сохраните резервную копию последнего рабочего исходного кода
Этот шаг полезен в качестве меры предосторожности на случай, если что-то пойдет не так с текущей версией SO или разработкой. Если ваш компьютер выходит из строя и не загружается, рекомендуется иметь вторую копию для работы, чтобы вы могли решить проблему.
Шаг 14. Рассмотрите возможность тестирования вашей новой операционной системы на виртуальной машине
Вместо перезагрузки компьютера каждый раз, когда вы вносите изменения или после отправки файлов с компьютера разработки на тестовую машину, вы можете использовать приложение виртуальной машины для запуска вашей ОС во время работы вашей текущей ОС. Текущие приложения виртуальных машин включают: VMWare (у которого также есть серверный продукт, доступный бесплатно), альтернативы с открытым исходным кодом, Bochs, Microsoft Virtual PC (не совместим с Linux) и Oracle VirtualBox.
Шаг 15. Запустите «релиз-кандидат» или бета-версию
Этот шаг позволит пользователю уведомить вас о потенциальных проблемах с вашей операционной системой.
Шаг 16. Операционная система также должна быть удобной для пользователя
Убедитесь, что вы добавили удобные для пользователя функции, сделайте их неотъемлемой частью вашего дизайна.
подсказки
- Проверьте возможные взаимоблокировки и другие ошибки. Ошибки, взаимоблокировки и другие проблемы повлияют на ваш проект сборки операционной системы.
- Убедитесь, что вы реализуете функции безопасности как высший приоритет, если хотите, чтобы система работала правильно.
- Используйте такие веб-сайты, как OSDev и OSDever, чтобы помочь вам разработать собственную операционную систему. Пожалуйста, обратите внимание, что для большинства целей сообщество OSDev.org будет более чем счастливым, если вы воспользуетесь их вики, а не присоединитесь к форуму. Если вы решите присоединиться к форуму, есть предварительное условие: вам нужно действительно знать C или C ++ и язык ассемблера x86. Вы также должны понимать общие и сложные концепции программирования, такие как связанные списки, очереди и т. Д. Сообщество OSDev в своих правилах прямо заявляет, что его сообщество не создано для воспитания новых программистов.
- Не присоединяйся с форумом OSDev.org, а затем задайте очевидный вопрос. Вам будет предложено прочитать только руководство. Прочтите Википедию и инструкции для любого оборудования, которое вы хотите использовать.
- Если вы пытаетесь разработать операционную систему, вас определенно считают «богом» программирования.
- Вы также должны прочитать руководство по процессору для выбранной архитектуры процессора; будь то x86 (Intel), ARM, MIPS, PPC и т. д. Руководства по архитектурам процессоров легко найти с помощью поиска в Google («Руководство Intel», «Руководство по ARM» и т. Д.).
- После того, как вся работа по разработке будет завершена, решите, хотите ли вы выпустить код как открытый код или по авторскому праву.
- Не начинай проект операционной системы для начала обучения программированию. Если вы не знакомы с C, C ++, Pascal или каким-либо другим подходящим языком, включая манипуляции с указателями, низкоуровневые битовые манипуляции, сдвиг бит, встроенные языки ассемблера и т. Д., Вы не готовы к работе с операционной системой. разработка.
- Создание совершенно нового раздела для «расширения» SO может быть хорошим вариантом.
- Если вам нужен простой способ, рассмотрите такие дистрибутивы Linux, как Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD или SUSE Studio и SUSE KIWI. Однако созданная вами операционная система принадлежит компании, которая первой запустила службу (хотя вы имеете право свободно распространять ее, изменять и запускать по своему усмотрению под GPL).
Предупреждение
- Вы не получите полную операционную систему в течение двух недель. Начните с загрузочного SO, а затем переходите к более крутым вещам.
- Неосторожная запись операционной системы на жесткий диск может полностью повредить его. Будь осторожен.
- Если вы сделаете что-то, что не рекомендуется, например, напишите случайные байты на случайные порты ввода-вывода, вы сломаете вашу ОС и (теоретически) можете испортить ваше оборудование.
- Не ожидайте, что операционная система проста в сборке. Есть много сложных взаимозависимостей. Например, чтобы создать операционную систему, способную обрабатывать несколько процессоров, ваш диспетчер памяти должен иметь механизм «блокировки», чтобы предотвратить одновременный доступ нескольких процессоров к одному и тому же ресурсу. «Блокировка», используемая для этого, потребует, чтобы планировщик гарантировал, что только один процессор получает доступ к критическим ресурсам в любой момент времени, а все остальные должны ждать. Фактически, планировщик зависит от наличия диспетчера памяти. Это пример тупиковой зависимости. Не существует стандартного способа решения такого рода проблем; Ожидается, что каждый программист операционной системы будет достаточно опытным, чтобы знать свой собственный способ работы с ней.
Дополнительные ресурсы
- Рекомендации: Linux с нуля
- Загрузчик: GRUB
- Приложения виртуальных машин: Bochs, VM Ware, XM Virtual Box.
- Руководство процессора: руководство Intel
- Сайты разработки СО: OSDev, OSDever