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

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Мне трудно найти ресурсы / руководства, которые помогут вам не ограничиваться написанием простой операционной системы "Hello World".

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

Есть какие-нибудь предложения?

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

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

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

Обновлено 14.11.08

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

Обновлено 23.02.09

Рик Токио Рекомендуемые наноос в этом вопрос.Nanoos - это операционная система, написанная на C ++.

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

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

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

LB предоставила ссылку на Проект Pintos, образовательная операционная система, предназначенная для студентов, изучающих разработку операционной системы.

Обновлено 27.07.09 (Все еще набирает обороты!)

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

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

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

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

Обновлено 23.08.09

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

ОС/161 это академическая операционная система, написанная на языке си, которая работает на моделируемом оборудовании.Эта ОПЕРАЦИОННАЯ система аналогична Начос.Спасибо, Романо-Демократ!

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

Разработка ядра Linux автор: Роберт Лав, автор: Андерс.Это "широко известный взгляд инсайдера на ядро Linux".

Обновлено 18.09.2009

Спасибо , Тим С.Ван Харену за то, что рассказал нам о Космос, операционная система, полностью написанная на c #.

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

Обновление 24.09.2009

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

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

kerneltrap.org больше не доступен.Ядро Linux версии 0.01 доступно по адресу kernel.org

Обновлено 21.12.2012 Базовая разработка операционной системы Учебник разработан как проект на семестр.Он поможет вам создать операционную систему из базовых компонентов.Очень хороший старт для начинающих.Похожие бумага.Спасибо, Шруджан!

Обновлено 15.11.2013

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

Обновлено 8.12.2013

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

Обновлено 18.03.2014

ToaruOS - операционная система, созданная в основном с нуля, включая графический интерфейс

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

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

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

Написание простой операционной системы — с нуля (спасибо тебе, @Tyler C)

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

.

Напишите ОПЕРАЦИОННУЮ систему микроконтроллера.Я рекомендую микроконтроллер на базе x86.Современная ОПЕРАЦИОННАЯ СИСТЕМА - это просто Огромный.Сначала изучите основы.

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

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

Я второй раз выезжаю:"Операционные системы :Разработка и внедрение"

И если вы хотите разрабатывать на Windows, ознакомьтесь с сообщением Джолсона в блоге.

Редактировать:Для разработки в Windows с использованием Visual Studio ознакомьтесь с Путеводитель БрокенТорна или Вики osdev's wiki.

Отличным ресурсом являются материалы курса 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 - объясняет основные идеи проектирования операционной системы http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

Материал компактен:92 страницы исходного текста и 96 страниц комментариев.

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

возможно, вы также захотите взглянуть на Шарпос это операционная система, которую они пишут на c #.

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

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

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

Редактировать:

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

-Адам

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

Разработка ядра Linux Робертом Лавом показалась мне довольно интересной.В нем рассказывается о том, как различные подсистемы в ядре Linux работают очень простым способом.Поскольку исходный код доступен, Linux является основным кандидатом на то, чтобы что-то взломать.

Вот несколько других страниц с переполнением стека, которые стоит включить в это обсуждение:

Препятствия при создании пользовательской операционной системы
Разработка операционной системы для архитектуры x86

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

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

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

На моем курсе по операционным системам в старших классах мы создали ряд подсистем для ОС/161, простое ядро, похожее на BSD, которое обеспечивает некоторые основы, оставляя свободу для изучения различных решений в области проектирования при реализации сервисов более высокого уровня.

Возможно, вы захотите взглянуть на linuxfromscratch.

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

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

Я хотел бы включить это репо КаксоздатьОперационнуюсистемудлякомпьютера автор: Сэми Пессе.Это незавершенная работа.Очень интересно.

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

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

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

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

Загляните на этот сайт: http://osix.net/modules/article/?id=359

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

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

ИМХО, это чрезвычайно интересно, так как возвращает к Шепелявящая машина концепция на имеющемся в настоящее время оборудовании.Это провалилось с коммерческой точки зрения, но это не доказывает мне, что идея была плохой.

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

Вот статья под названием "Написание простой операционной системы С нуля".Он охватывает написание загрузчика, переход в защищенный режим x86-32 и написание базового ядра на C.Кажется, он хорошо справляется с объяснением всего в деталях.

Тот Самый JS-симулятор x86 и Имитатор РУКИ также может быть очень полезно понять, как работают различные аппаратные средства, и проводить тесты, не выходя из вашего любимого браузера.

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

  1. Вам нужно сосредоточиться на языке ассемблера, C и C ++.Вы должны быть экспертом в этих языках.
  2. Сначала прочтите хорошую книгу о том, как работает ОС [погуглите ее], затем прочитайте всю информацию из Операционная СИСТЕМА Wiki
  3. Найдите на YouTube "Как создать свою собственную операционную систему на языке ассемблера" и посмотрите видео, Например.Видео
  4. Загрузите исходный код операционной системы Linux и скомпилируйте его самостоятельно, а также попробуйте изменить код самостоятельно
  5. Теперь вы опытный редактор операционной системы, а теперь скачивайте Миникс и QNX и начните разрабатывать вместе с ними и получите их документы отсюда Миникс Док и QNX Док

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

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

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

Другой интересной операционной системой было бы Родословные.Это сделано Джеймсом (человеком, стоящим за Руководство по ядру jamesM.Хотя у него больше функций, чем у ToaruOS, он также больше и запутаннее.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top