Какие ресурсы для начала работы в операционной системе?

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

Мне сложно найти ресурсы/руководства, которые заставляют вас писать простой "Hello World" OS.

Я знаю, что многие люди, вероятно, порекомендуют мне взглянуть на Linux или BSD; но база кода для таких систем (предположительно) настолько велика, что я не знаю, с чего начать.

Любые предложения?

Обновление. Чтобы облегчить людям, которые приземлились на этом посту через Google, приведены некоторые ресурсы для разработки ОС:

Другие ресурсы:

Я нашел хороший ресурс с именем MikeOS, "MikeOS - это инструмент обучения, демонстрирующий, как работают простые операционные системы. Он использует 16-разрядные реальный режим для доступа к BIOS, так что ему не нужны сложные драйверы"

Обновлено 11/14/08

Я нашел некоторые ресурсы в Freebyte Guide... бесплатные и несвободные операционные системы, которые ссылаются на комплекты, такие как OSKit и библиотека ExOS, Они кажутся очень полезными при начале разработки ОС.

Обновлено 2/23/09

Рик Токио рекомендовал nanoos в этом question. Nanoos - это ОС, написанная на С++.

Обновлено 3/9/09

Dinah предоставила некоторое полезное обсуждение для начинающих разработчиков ОС: Дорожные блоки при создании пользовательской операционной системы обсуждает, какие проблемы могут возникнуть при разработке ОС и Разработка ОС - более общая дискуссия.

Обновлено 7/9/09

LB предоставил ссылку на Pintos Project, образовательную ОС, предназначенную для студентов, изучающих разработку ОС.

Обновлено 7/27/09 (все еще сильно!)

Я наткнулся на курс онлайн OS из Беркли с 23 лекциями.

TomOS является fork MikeOS который включает в себя небольшой менеджер памяти и поддержку мыши. Как MikeOS, он предназначен для образовательного проекта. Он написан на ассемблере NASM.

Обновлено 8/4/09

Я нашел слайды и другие материалы, чтобы пойти вместе с лекциями в Беркли, перечисленными выше.

Обновлено 8/23/09

Все вопросы с тегами osdev в stackoverflow

OS/161 - это академическая ОС, написанная на c, которая работает на смоделированном оборудовании. Эта ОС аналогична в Nachos. Благодарю вас за новоделку!

tangurena рекомендует http://en.wikipedia.org/wiki/MicroC/OS-II - ОС, предназначенную для встроенных систем. Существует также сопутствующая книга.

Linux Kernel Development от Robert Love предлагается Андерсом. Это "широко известный инсайдерский взгляд на ядро ​​Linux".

Обновлено 9/18/2009

Спасибо Тиму С. Ван Харэну за рассказ о Cosmos, полностью написанную в С#.

tgiphil рассказывает нам о "Альянс управляемых операционных систем" (MOSA) Framework "," набор инструментов, спецификаций и исходного кода для содействия разработке управляемых операционных систем на основе распространенного промежуточного языка. "

Обновление 9/24/2009

Стив нашел пару ресурсов для разработки в Windows с помощью Visual Studio, проверьте Руководство по настройке BrokenThorn с VS 2005 или Раздел OSDev VS.

Обновлено 9/5/2012

kerneltrap.org больше не доступен. Ядро linux v0.01 доступно из kernel.org

Обновлено 12/21/2012 Базовая разработка ОС учебник, разработанный как семестровый проект. Это поможет вам создать ОС с базовыми компонентами. Очень хорошее начало для новичков. Связанный paper. Спасибо, Сруджан!

Обновлено 11/15/2013

Написание простой операционной системы из Scratch. Спасибо, Джеймс Мур!

Обновлено 12/8/2013

Как сделать компьютерную операционную систему Спасибо ddtoni!

Обновлено 3/18/2014

ToAruOS - ОС, построенная в основном с нуля, включая графический интерфейс пользователя

Обновлено 12 сентября 2016 года

Написание собственной операционной системы игрушек

Обновлено 10 декабря 2016 г.

Написание простой операционной системы - от царапины (спасибо @Tyler C)

Ответы

Ответ 1

После этого краткого обзора содержится много ссылок на то, что связано с написанием ОС для платформы X86.

Ссылка, которая представляется наиболее перспективной (www.nondot.org/sabre/os/articles), больше недоступна, поэтому вам нужно будет вытащить Archive.org version, чтобы прочитать его.

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

Затем ядро ​​выполняет весь тяжелый подъем, и я подозреваю, что это пример ядра, который вы хотите. Но есть много пути между ядром, которое говорит, что "Hello world" имеет ядро, которое загружает интерпретатор команд, предоставляет дисковые службы, а также загружает и управляет программами.

Возможно, вы захотите рассмотреть возможность подписки на ACM, чтобы получить доступ к их старой литературе - в конце 80-х и начале 90-х в журналах ранних компьютеров есть много статей о том, как создать альтернативные ОС. Похоже, что книги, которые тоже не печатаются с этой эпохи. Вы можете получить такую ​​же информацию бесплатно, просмотрев индексы этих журналов (которые доступны на этом сайте - нажмите" индекс" рядом с названием журнала), а затем попросите людей с копией.

Наконец, я знаю, что usenet мертв (так говорят пророки интернет-гибели), но вы обнаружите, что многие из скалистых старых экспертов той эпохи все еще живут там. Вам следует искать группы google (у них есть старый репозиторий dejanews), и я ожидаю, что вы найдете много людей, задающих те же вопросы в течение десятилетия или 1,5 назад, которые вы сейчас задаете. Вы даже можете столкнуться с многочисленными запросами Линуса Торвальдса, поскольку он разрабатывал linux изначально. Если поиски ничего не приносят, спросите в соответствующей группе новостей (возможно, она начинается с comp.arch, но ищет их с ОС в имени).

Ответ 2

Minix намного меньше и предназначен для учебных целей, и книга, чтобы пойти с ней, тоже хороша.

Обновление: я предполагаю, что Minix 3 немного отличается от цели, но Minix 2 (и, конечно, первая версия) предназначены для обучения целей.

Ответ 3

Как кто-то, кто написал в режиме реального времени многозадачную операционную систему с нуля...

клавиатура debounce, клавиатурный драйвер, драйвер диска, видеодрайвер, файловая система и, наконец, загрузочный загрузчик - и это просто для запуска в первый раз, когда вам нечего делать!

... Я не могу особо подчеркнуть, насколько важно познакомиться с оборудованием! Это особенно важно, если вы действительно хотите сделать все сами, вместо того, чтобы просто подбирать примитивную систему, которую кто-то еще уже выложил для вас. Например, обратитесь в Intel и попросите у них плату за процессор для вашего типа процессора! Это выложит для вас - "пин-ауты", прерывания, коды операций, вы называете это!

Помните, что оборудование делает все возможное. Изучите оборудование. Вы не пожалеете об этом.

.

Ответ 4

Напишите операционную систему микроконтроллера. Я рекомендую микроконтроллер на базе x86. Современная ОС просто огромная. Сначала изучите основы.

Ответ 5

Я хочу, чтобы было одно место, чтобы получить всю информацию о разработке собственной ОС. Ближе всего к этому относится ОС Dev Wiki и Форумы, Они предлагают массу полезной информации о настройке, разработке и информации об аппаратном обеспечении устройства.

Также есть несколько отличных уроков в BoneFide, я использовал учебник по началу работы Bran, и теперь я смотрю на более поздний, основанный на его названии Сверните свою игрушку UNIX-clone OS.

Вторая проверка: "Операционные системы: проектирование и реализация"

И если вы хотите разрабатывать в Windows, посмотрите сообщение jolson blog post.

Изменить: Для разработки в Windows с помощью Visual Studio зайдите в Руководство BrokenThorn или OSDev wiki.

Ответ 6

Отличным ресурсом является материал курса MIT 6.828: Разработка операционной системы.

XV6 - простая Unix-подобная обучающая ОС, написанная на ANSI C для x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html

Источник XV6 - в виде печатной брошюры с номерами строк http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

XV6 книга - объясняет основные идеи дизайна os http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

Материал компактный: 92-страничный источник и 96-страничный комментарий.

Мне нравится больше, чем книга Minix! Это настоящий камень!

Ответ 7

вы также можете взглянуть на SharpOS, который является операционной системой, которую они пишут в С#.

Ответ 8

В книге есть хорошие ресурсы для основы операционной системы. Поскольку нет необходимости создавать новую ОС с нуля, вы не найдете тонны информации типа хобби в Интернете.

Я рекомендую стандартный учебник "Современные операционные системы" Таненбаума. Вы также можете найти "Элементы операционной системы" по Calingaert полезными - это тонкий обзор книги, в которой дается приблизительный эскиз того, что ОС находится с дизайнерской точки зрения.

Если у вас есть интерес к системам реального времени (и вы должны хотя бы понять различия и причины для ОС реального времени), то я бы также рекомендовал "MicroC/OS-II" Labrosse.

Edit:

Можете ли вы указать, что вы подразумеваете под "более техническим"? В этих книгах представлены подробности реализации псевдокода, но вы ищете пример ОС или фрагменты кода для конкретной машины/языка?

-Adam

Ответ 9

Просто из другого вопроса. Я хотел бы упомянуть Pintos... Я вспомнил, что мой курс ОС с Nachos и Pintos, похоже, тот же, что может запустить на x86.

Ответ 10

Я нашел Robert Love Linux Kernel Development довольно интересным. Он рассказывает вам о том, как различные подсистемы в ядре Linux работают очень просто. Поскольку источник доступен, Linux является основным кандидатом на то, чтобы взломать.

Ответ 12

Начните взламывать Minix. Он намного меньше, чем Linux (очевидно), и он разработан с учетом целей обучения (некоторые, по крайней мере). Не Minix 3, хотя это совсем другая история.

Ответ 13

Уже ответ, но когда я взял операционные системы в колледже, мы начали с раннего ядра Linux и добавили упрощенные современные функции (базовые файловые системы, виртуальную память, многозадачность, мьютексы). Хорошо повеселиться. Вы можете пропустить некоторые из ДЕЙСТВИТЕЛЬНО сумасшедших сборочных сборок только для уничтожения w/защищенного режима и таблиц страниц, все еще изучая некоторые из кишок.

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

Ответ 14

Курс моих операционных систем в условиях недостаточной квалификации позволил нам создать ряд подсистем для OS/161, простого, BSD-подобного ядра, которое предоставляет некоторые основополагающих принципов, оставляя свободу исследовать различные решения в области дизайна при внедрении услуг более высокого уровня.

Ответ 15

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

Ответ 16

Я хотел бы включить этот репо How-to-Make-a-Computer-Operating-System Samy Pesse. Это незавершенное производство. Очень интересно.

Ответ 17

Возможно, вы захотите посмотреть linuxfromscratch.

Linux From Scratch (LFS) - это проект который предоставляет вам пошаговые инструкции инструкции по созданию собственных пользовательская система Linux, полностью из исходный код.

Ответ 18

Одной из разумно простых ОС для изучения будет μC/OS. В книге есть дискета с источником на нем.

http://en.wikipedia.org/wiki/MicroC/OS-II

Ответ 19

Просмотрите проект Альянс управляемых операционных систем (MOSA) www.mosa-project.org. Они разрабатывают компилятор AOT/JIT и полностью управляемую операционную систему на С#. Некоторые из разработчиков находятся в неактивном проекте SharpOS.

Ответ 20

Я играл с Cosmos, который представляет собой "проект операционной системы, полностью реализованный на языках, совместимых с CIL". Это написано на С#, так что это было прямо вверх по моей переулке. Для такого же, как я, который никогда не пытался создать операционную систему, на самом деле было довольно здорово получить операционную систему "Hello World" в кратчайшие сроки.

Ответ 22

Как уже упоминалось выше, OSDev Wiki (безусловно) является лучшим источником для разработки ОС. Для тех из вас, кто говорит по-немецки, lowlevel.eu Wiki тоже замечательный. Что-то относительно неизвестное Incitatus OS - простое ядро ​​с небольшим набором приложений для пользователей. Это здорово использовать для перехода в сложную тему разработки ОС.

Ответ 23

Movitz - это среда Lisp, написанная в Common Lisp и работающая "на металле". К сожалению, некоторые ссылки на главной странице Movitz запрещают доступ, но вы можете найти инструкции по загрузке и компиляции исходного кода из трассировка. Кроме того, готовый образ можно найти в архиве этой страницы.

IMHO это очень интересно, так как он возвращает концепцию Lisp machine на доступное в настоящее время оборудование. Это случилось коммерчески, но это не доказывает мне, что идея была плохая.

Справочник ненавистников Unix - это забавная книга, в которой полусерьезно пренебрегает концепцией Unix и ее производных. В большинстве разделов аргумент о том, насколько лучше была концепция машины Lisp.

Ответ 24

x86 JS simulator и симулятор ARM может также очень полезно понять, как работают различные аппаратные средства и выполнять тесты, не выходя из вашего любимого браузера.

Ответ 25

Интересный вопрос для программистов. Посмотрите, что для создания ОС, например Windows или Mac, потребуется много времени, но если вы хотите создать простые, тогда вы можете попробовать свои силы.

  • Вам нужно сосредоточиться на языке Assembly, C и С++. Вы должны быть экспертом на этих языках.
  • Сначала прочитайте хорошую книгу о том, как работает ОС [Google it], затем прочитайте всю информацию из Wiki OS
  • Поиск в youtube "Как создать свою собственную ОС на языке сборки" смотреть видео, Например, Видео
  • Загрузите исходный код ОС Linux и скомпилируйте его самостоятельно и попробуйте сами изменить код.
  • Теперь вы опытный редактор ОС теперь загружаете Minix и QNX и начинать с них и получать свои документы здесь Minix Doc и QNX Doc

Теперь вы получили магистерскую степень (не совсем немного больше, чтобы идти) в создании ОС теперь распространяют это известное на ваши freinds и с их помощью пытаются создать такую ​​мощную ОС, как Mac, Linux или Windows

Ответ 27

Когда вы создали базовую операционную систему, ее действительно сложно продолжить, потому что не так много ресурсов для создания графических интерфейсов или портирования библиотек. Но я думаю, что взглянуть на ToAruOS поможет много!

Код под поверхностью этой ОС настолько прост! но в то же время он портировал такие вещи, как cairo, python (еще не скоро) sdl, сделал общую память, и он также создал свой собственный инструментарий для виджета. Все это написано на C.

Еще одна интересная ОС - родословнаяOS. Это сделало JamesM (человек, стоящий за jamesM kernel tutorial. Хотя он имеет больше возможностей, чем ToaruOS, он также больше и запутаннее.

Но в любом случае эти 2 ОС помогут вам в значительной степени особенно ToAruOS.

Ответ 28

Когда я начал работать над базовыми операционными системами, мне понадобилось основное руководство, например Шаги для базовой операционной системы. Это помогло мне не потерять голову.

Что, если вы хотите сделать это абсолютно без ничего (чистый код сборки)