Одна вещь, которую я всегда хотел сделать, - это разработать собственную операционную систему (не обязательно такую шикарную, как Linux или Windows, но лучше, чем простой загрузчик, который я уже сделал).
Мне трудно найти ресурсы / руководства, которые помогут вам написать простую ОС "Hello World".
Я знаю, что многие люди, вероятно, порекомендуют мне посмотреть Linux или BSD; но кодовая база для подобных систем (по-видимому) настолько велика, что я не знаю, с чего начать.
Какие-либо предложения?
Обновление: для того, чтобы людям, которые попадают в этот пост через Google, было несколько ресурсов для разработки ОС:
Написание вашей собственной операционной системы (спасибо Адам)
Linux с нуля (спасибо Джон)
SharpOS (операционная система C #) (спасибо lomaxx)
OS Dev Wiki и форумы (спасибо, Стив)
BonaFide (спасибо Стив)
Бран (спасибо Стив)
Скатайте свою игрушечную ОС UNIX-клон (спасибо Стиву)
Другие источники:
Я нашел хороший ресурс под названием MikeOS : «MikeOS - это обучающий инструмент, демонстрирующий работу простых ОС. Он использует 16-битный реальный режим для доступа к BIOS, поэтому ему не нужны сложные драйверы»
Обновлено 14.11.08
Я нашел некоторые ресурсы в Руководстве Freebyte по ... Свободным и несвободным операционным системам, которые ссылаются на такие наборы, как библиотека OSKit и ExOS. Это кажется очень полезным для начала разработки ОС.
Обновлено 23.02.09
Рик Токио рекомендовал Нано в этом вопросе . Nanoos - это ОС, написанная на C ++.
Обновлено 3/9/09
Дина предоставила несколько полезных рассуждений о переполнении стека для начинающих разработчиков ОС. На пути создания собственной операционной системы обсуждаются проблемы, с которыми вы можете столкнуться при разработке ОС, а разработка ОС - это более общее обсуждение.
Обновлено 7/9/09
LB предоставил ссылку на проект Pintos , образовательную ОС, предназначенную для студентов, изучающих разработку ОС.
Обновлено 27/07/09 (все еще идет сильный!)
Я наткнулся на онлайн-курс по ОС от Беркли, включающий 23 лекции.
TomOS - это форк MikeOS, который включает в себя небольшой менеджер памяти и поддержку мыши. Как и MikeOS, он предназначен для образовательного проекта. Это написано на ассемблере NASM.
Обновлено 8/4/09
Я нашел слайды и другие материалы, которые можно использовать вместе с онлайн-лекциями по Беркли, перечисленными выше.
Обновлено 23.08.09
Все вопросы с тегами osdev на stackoverflow
OS / 161 - академическая ОС, написанная на языке c, которая работает на смоделированном оборудовании. Эта ОС похожа на Начос. Спасибо Новелократ!
tangurena рекомендует http://en.wikipedia.org/wiki/MicroC/OS-II , ОС, предназначенную для встроенных систем. Также есть книга-компаньон .
Разработка ядра Linux Робертом Лавом предложена Андерсом. Это «широко известный инсайдерский взгляд на ядро Linux».
Обновлено 18.09.2009
Спасибо Тиму С. Ван Харену за то, что он рассказал нам о Cosmos , ОС, написанной полностью на c #.
tgiphil рассказывает нам о среде управляемых операционных систем (MOSA) , «наборе инструментов, спецификаций и исходного кода для ускорения разработки управляемых операционных систем на основе общего промежуточного языка».
Обновление 24.09.2009
Стив нашел пару ресурсов для разработки под Windows с использованием Visual Studio, ознакомьтесь с руководством по установке BrokenThorn с VS 2005 или с разделом VS OSDev .
Обновлено 5/5/2012
kerneltrap.org больше не доступен. Ядро linux v0.01 доступно на kernel.org
Обновлено 21/12/2012 Базовое руководство по разработке ОС, предназначенное для семестрового проекта. Он поможет вам создать ОС с базовыми компонентами. Очень хорошее начало для начинающих. Связанная бумага . Спасибо, Сружан!
Обновлено 15.11.2013
Написание простой операционной системы с нуля . Спасибо Джеймс Мур!
Обновлено 8/12/2013
Как сделать операционную систему компьютера Спасибо ddtoni!
Обновлено 18.03.2014
ToAruOS ОС, построенная в основном с нуля, включая графический интерфейс
Обновлено 12 сентября 2016
Написание вашей собственной игрушечной операционной системы
Обновлено 10 декабря 2016
Написание простой операционной системы - с нуля (спасибо @Tyler C)
источник
Ответы:
После краткого обзора того, что связано с написанием ОС для платформы X86 , есть много ссылок .
Ссылка, которая представляется наиболее перспективной (www.nondot.org/sabre/os/articles), больше недоступна, поэтому вам нужно просмотреть версию Archive.org, чтобы прочитать ее.
В конце дня загрузчик берет машинный код ядра, помещает его в память и переходит к нему. Вы можете поместить любой желаемый машинный код в ядро, но большинство программ на Си ожидают ОС, поэтому вам нужно сообщить компилятору, что у него не будет всего этого, или загрузчик должен создать ее.
Затем ядро выполняет всю тяжелую работу, и я подозреваю, что это пример ядра, которое вам нужно. Но между ядром, которое говорит «Hello world», и ядром, которое загружает интерпретатор команд, предоставляет службы диска, а также загружает и управляет программами, нужно пройти долгий путь.
Возможно, вы захотите подписаться на ACM, чтобы получить доступ к их более старой литературе - в конце 80-х и начале 90-х годов в журналах ранних вычислений было много статей о том, как создавать альтернативные ОС . Вероятно, есть книги, которые вышли из печати еще с этой эпохи. Вы можете получить ту же информацию бесплатно, просмотрев индексы этих журналов (которые доступны на этом сайте - нажмите «индекс» рядом с названием журнала), а затем спросите людей с копией.
Наконец, я знаю, что usenet мёртв (так говорят пророки интернет-гибели), но вы обнаружите, что многие из старых скалистых экспертов той эпохи до сих пор живут там. Вы должны искать в группах Google (у них есть старый репозиторий dejanews), и я ожидаю, что вы найдете много людей, задающих те же вопросы десятилетие или 1,5 назад, что вы задаете сейчас. Вы можете даже столкнуться с многочисленными запросами Линуса Торвальдса о помощи, поскольку он изначально разрабатывал Linux. Если при поиске ничего не появляется, спросите в соответствующей группе новостей (возможно, начинается с comp.arch, но ищите те, в названии которых указана ОС).
источник
Minix намного меньше и предназначен для учебных целей, и книга с ним тоже хороша.
Обновление: я думаю, что Minix 3 - это немного другая цель, но Minix 2 (и, конечно, первая версия) были для учебных целей.
источник
Tanenbaum book and minix3
, чтобы внести изменения в minix3, в конечном итоге я смогу внести свой вклад в ядро linux?Как тот, кто написал многозадачную операционную систему в реальном времени с нуля ...
подпрограмма отладки клавиатуры, драйвер клавиатуры, драйвер диска, видеодрайвер, файловая система и, наконец, загрузчик - и это только для запуска в первый раз, когда делать нечего!
... Я не могу не подчеркнуть, насколько важно ознакомиться с оборудованием! Это особенно важно, если вы действительно хотите сделать все самостоятельно, вместо того, чтобы просто выбрать примитивную систему, которую кто-то другой уже разработал для вас. Например, обратитесь в Intel и попросите у них плату процессора для вашего типа процессора! Это выложит это для вас - "распиновки", прерывания, коды операций, вы называете это!
Помните, что оборудование делает все это возможным. Изучите аппаратное обеспечение. Вы не пожалеете об этом.
,
источник
Напишите микроконтроллер ОС. Я рекомендую микроконтроллер на базе x86. Современная ОС просто огромна . Изучите основы в первую очередь.
источник
Хотелось бы, чтобы в одном месте была вся информация о разработке вашей собственной ОС. Наиболее близким к этому является OS Dev Wiki и Forums . Они предлагают массу полезной информации о настройке, разработке и информации об оборудовании устройства.
Кроме того, в BoneFide есть несколько отличных учебных пособий , я использовал учебное пособие Брана по началу работы и сейчас смотрю на более свежее, основанное на его названии Roll your your toy UNIX-clone OS .
Я второй проверяю: «Операционные системы: проектирование и внедрение»
И если вы хотите разрабатывать на Windows, посмотрите сообщение в блоге Джолсона.Изменить: Для разработки на окнах с использованием Visual Studio, посмотрите руководство BrokenThorn или вики OSDev .
источник
Отличным ресурсом является материал курса 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! Это настоящая жемчужина!
источник
Вы также можете взглянуть на SharpOS - операционную систему, которую они пишут на c #.
источник
В книгах есть хорошие ресурсы для основ операционной системы. Поскольку для создания новых ОС с нуля не требуется много информации, вы не найдете в интернете тонны информации типа любителей.
Я рекомендую стандартный учебник "Современные операционные системы" Таненбаума. Вы также можете найти полезными «Элементы операционной системы» от Calingaert - это краткий обзор книги, в которой дается приблизительный обзор операционной системы с точки зрения дизайнера.
Если у вас есть интерес к системам реального времени (и вы должны хотя бы понять различия и причины для ОС реального времени), то я бы также порекомендовал «MicroC / OS-II» от Labrosse.
Редактировать:
Можете ли вы указать, что вы подразумеваете под «более техническим»? В этих книгах приводятся подробности реализации псевдокода, но вы ищете пример ОС или фрагменты кода для конкретной машины / языка?
-Адам
источник
Просто исходя из другого вопроса. Я хотел бы упомянуть о Pintos ... Я вспомнил, что мой курс по ОС с Nachos и Pintos, похоже, такой же способ, что и на x86.
источник
Разработка ядра Linux от Роберта Лава показалась мне довольно интересной. В нем рассказывается о том, как различные подсистемы в ядре Linux работают очень практично. Поскольку исходный код доступен, Linux является главным кандидатом на то, что можно взломать.
источник
Вот некоторые другие страницы переполнения стека, которые стоит включить в это обсуждение:
Проблемы на пути создания собственной операционной системы
Разработка операционной системы для архитектуры x86
источник
Мой курс по операционным системам в старших классах заставил нас создать несколько подсистем для OS / 161 , простого BSD-подобного ядра, которое предоставляет некоторые основы, оставляя свободу исследовать различные решения пространства проектирования при реализации сервисов более высокого уровня.
источник
Начните взламывать Minix. Это намного меньше, чем Linux (очевидно), и он разработан с учетом учебных целей (некоторые, по крайней мере). Не Minix 3, это совсем другая история.
источник
Уже отвечаю, но когда я взял операционные системы в колледже, мы начали с раннего ядра Linux и добавили упрощенные современные функции (базовые файловые системы, виртуальная память, многозадачность, мьютексы). Хорошо повеселиться. Вы можете пропустить некоторые ДЕЙСТВИТЕЛЬНО сумасшедшие низкоуровневые ассемблерные вещи только для хулиганства с защищенным режимом и таблицами страниц, в то же время изучив некоторые смелости.
http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2
источник
Возможно, вы захотите взглянуть на linuxfromscratch .
источник
Простое и базовое руководство по разработке ОС, предназначенное для семестрового проекта. Он поможет вам создать ОС с базовыми компонентами. Очень хорошее начало для начинающих. Связанная статья здесь .
источник
Я хотел бы включить репозиторий « Как сделать компьютерную операционную систему» от Samy Pesse. Является незавершенным. Очень интересно.
источник
Одной из достаточно простых ОС для изучения будет микроСи / ОС. У книги есть дискета с источником.
http://en.wikipedia.org/wiki/MicroC/OS-II
источник
Ознакомьтесь с проектом Альянса управляемых операционных систем (MOSA) на сайте www.mosa-project.org . Они разрабатывают компилятор AOT / JIT и полностью управляемую операционную систему на C #. Некоторые разработчики из неактивного проекта SharpOS.
источник
Я играл с Cosmos , который является «проектом операционной системы, полностью реализованным на языках, совместимых с CIL». Это написано на C #, так что это было прямо в моем переулке. Для кого-то вроде меня, который никогда не пытался создать операционную систему, было действительно здорово иметь возможность запустить операционную систему «Hello World» в кратчайшие сроки.
источник
Проверьте этот сайт: http://osix.net/modules/article/?id=359
источник
Как упоминалось выше, OSDev Wiki (безусловно) является лучшим источником для разработки ОС. Для тех из вас, кто говорит по-немецки, lowlevel.eu Wiki также подойдет. Что-то относительно неизвестное Incitatus OS , простое ядро с крошечным набором пользовательских приложений. Это здорово использовать, чтобы попасть в сложную тему разработки ОС.
источник
Movitz - это среда Lisp, написанная на Common Lisp и работающая «на металле». К сожалению, некоторые ссылки на главной странице Movitz запрещают доступ, но вы можете найти инструкции о том, как загрузить и скомпилировать исходный код со страницы trac . Также готовое изображение можно найти в архиве этой страницы .
ИМХО, это крайне интересно, так как возвращает концепцию машины Лисп на имеющемся в настоящее время оборудовании. Это провалилось коммерчески, но это не доказывает мне, что идея была плохой.
Руководство по ненавистникам Unix - это забавная книга, которая полусерьезно ругает концепцию Unix и ее производных. Многие разделы рассуждают о том, как лучше была концепция машины Lisp.
источник
Вот статья под названием « Написание простой операционной системы с нуля ». Он охватывает написание загрузчика, переход в защищенный режим x86-32 и написание базового ядра на C. Похоже, он хорошо объясняет все подробно.
источник
X86 JS симулятор и ARM тренажер также может быть очень полезно , чтобы понять , как различные части аппаратных средств работы и сделать тесты , не выходя из вашего любимого браузера.
источник
Интересный вопрос для программистов. Понимаете, сборка ОС, такой как Windows или Mac, займет очень много времени, но если вы хотите создать простую, вы можете попробовать свои силы
Теперь вы получили степень магистра (не совсем чуть-чуть больше) в создании ОС, теперь распространяйте эту известность среди своих друзей и с их помощью пытайтесь создать такую мощную ОС, как Mac, Linux или Windows.
источник
Когда вы создали базовую операционную систему, на самом деле трудно продолжать, потому что не так много ресурсов для создания графического интерфейса или переноса библиотек. Но я думаю, что взглянуть на ToAruOS очень поможет!
Код под поверхностью этой ОС чертовски прост! но в то же время он портировал такие вещи, как cairo, python, (пока не скоро) sdl, сделал общий доступ к памяти и также создал свой собственный набор инструментов для виджетов. Это все написано на C.
Другой интересной ОС будет родословная OS . Он сделан Джеймсом ( автором учебника по ядру jamesM) . Хотя у него больше возможностей, чем у ToaruOS, он также больше и запутаннее.
Но в любом случае эти 2 ОС вам очень помогут, особенно ToAruOS.
источник
Когда я начал работать над моими основными операционными системами, мне нужно было базовое руководство, например « Ступени» для базовой операционной системы . Это помогло мне не потерять голову.
Это если вы хотите сделать это из абсолютно ничего (чистый ассемблерный код)
источник