8000 GitHub - RusFjord/os-tutorial: How to create an OS from scratch
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

RusFjord/os-tutorial

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Руководство по написанию ОС

Напишем ОС с нуля!

Я всегда хотел узнать как создать операционную систему с нуля. В колледже меня учили как включать продвинутые возможности (сегментация, семафоры, управление памятью и т.д.) но:

  • Я никогда не начинал со своего собственного загрузочного сектора
  • В колледже большая нагрузка, поэтому я не помню большую часть из того, что преподавали.
  • Я сыт по горло людьми, которые думают что чтение уже существующего ядра, даже если оно маленькое, хорошая идея для изучения операционных систем.

Вдохновленный статьей "Написание простой операционной системы с нуля" Ника Блюндела и проектом OSDev wiki я буду пытаться создать короткие пошаговые README и примеры кода для любого последователя. Честно говоря, этот учебник простой документ, разбитый на маленькие кусочки и без теории.

Также можно обратиться к ресурсу "Маленькая книга по разработке ОС" и к руководству Джеймса Моллоя "Руководство по разработке ядра."

Особенности Features

  • Этот курс является руководством по коду, ориентированном на людей, которым нравится заниматься компьютером на низком уровне. Например, программистам, интересующимся тем, как работает ядро, но не имеющим достаточно времени или сил
    изучать ядро линукса с начала до конца.
  • Совсем немного теории. Да, это особенность. Google ваш лектор. Однажды вы закончите колледж, чрезмерно теории хуже, чем совсем без теории, потому что она делает вещи более сложными, чем они есть на самом деле.
  • Уроки очень маленькие, на них требуется от 5 до 15 минут. Верьте мне и поверьте в себя. Вы можете это сделать.

Как использовать это руководство

  1. Начинайте с первой папки и двигайтесь вниз по порядку. Порядок очень важен, и если вы перейдете сразу к 5 папке, то не сможете понять почему здесь mov ah, 0x0e, так как пропустили 2 папку.

  2. Откройте README и прочитайте первые строки. Там расположены детали концепции, которые надо знать перед прочтением кода. Google поможет изучить незнакомые вам понятия. На следующих строках находятся цели каждого урока. Прочитайте их! Они объяснят почему мы делаем то, что делаем. "Почему" и "как" два самых важных слова.

  3. Прочитайте оставшуюся часть README. Там все написано достаточно кратко.

  4. (Опционально) Попытайтесь написать код самостоятельно после прочтения README.

  5. Изучите примеры кода. Они максимально комментированы.

  6. (Опционально) Экспериментируйте с ними, пытайтесь их сломать. Единственный способ убедиться, что вы что-то поняли, это пытаясь сломать его или воспроизвести с помощью других команд.

А теперь кратко. Читайте README прежде файлов с кодом и, если чувствуете в себе смелось, пробуйте написать самостоятельно.

Стратегия

Я хотел бы сделать многое с нашей ОС:

  • Загрузка с нуля без GRUB - Готово
  • Подключение 32-битного режима - Готово
  • Переход с ассемблера на си - Готово
  • Обработка прерываний - Готово
  • Вывод на экран и ввод с клавиатуры - Готово
  • Базовая библиотека libc, которая будет расти при росте потребностей - Готово
  • Управление памятью
  • Написание файловой системы для хранения файлов
  • Созданиеочень простой командной оболочки
  • Пользовательский режим
  • Может быть мы напишем простой текстовый редактор
  • Несколько процессов и планирование

Вероятно, мы пройдем их в таком порядке, однако скоро это увидим.

Если почувствуем себя достаточно смелыми, то:

  • Интерпретатор языка Бейсик, как в 70-х годах
  • Графический интерфейс
  • Работа с сетью

Содействие

Это персональный учебный проект и, хотя он давно не обновлялся, у меня есть надежда вернуться к нему.

Благодарю всех тех, кто указал на ошибки и отправил пулл реквесты. Мне нужно некоторое время для просмотра и я не гарантирую, что это будет сейчас

Свободно форкайте этот репозиторий. Если многие из вас заинтересуются в продолжении проекта, дайте мне знать и я оставлю ссылку на ваш репозиторий, как на главный форк.

About

How to create an OS from scratch

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 51.4%
  • Assembly 41.2%
  • Makefile 7.0%
  • C++ 0.4%
0