Які є ресурси для початку роботи з розробки операційної системи? [зачинено]


589

Я завжди хотів зробити це розробити власну власну операційну систему (не обов'язково фантастичну, як Linux чи Windows, але краще, ніж простий завантажувач, який я вже робив).

Мені важко знайти ресурси / довідники, які переносять вас, коли ви пишете просту ОС "Hello World".

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

Будь-які пропозиції?

Оновлення. Щоб полегшити людям, які перебувають на цій посаді через Google, ось деякі ресурси для розробки ОС:

Інші ресурси:

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

Оновлено 14.11.08

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

Оновлено 23.02.99

Рік Токіо рекомендував наноос у цьому питанні . Nanoos - це ОС, написана на C ++.

Оновлено 9.09.99

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

Оновлено 9.09.99

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

Оновлено 27.07.09 (все ще сильно!)

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

TomOS - це вилка MikeOS, яка включає в себе трохи менеджера пам'яті та підтримки миші. Як MikeOS, він розроблений як навчальний проект. Це написано в ассемблері NASM.

Оновлено 8.4.2009

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

Оновлено 23.08.99

Усі питання позначені osdev on stackoverflow

OS / 161 - це академічна ОС, написана c, яка працює на модельованому апаратному забезпеченні. Ця ОС схожа в Nachos. Дякую Новелократу!

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.05.2012

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

Оновлено 21.12.2012 Основний підручник з розробки ОС, розроблений для проекту семестру. Він допоможе вам створити ОС з базовими компонентами. Дуже вдалий старт для початківців. Супутній папір . Дякую, Срюян!

Оновлено 15.11.2013

Написання простої операційної системи з нуля . Дякую Джеймсу Муру!

Оновлено 8.12.2013

Як зробити операційну систему комп'ютера Спасибі ddtoni!

Оновлено 18.03.2014

ToAruOS - ОС, побудована в основному з нуля, включаючи GUI

Оновлено 12 вересня 2016 року

Написання власної іграшкової операційної системи

Оновлено 10 грудня 2016 року

Написання простої операційної системи - від нуля (спасибі @ Tyler C)


5
Не забудьте forums.osdever.net
Бренден

15
Чому ці питання хорошого загального призначення завжди закриті на ЗП?
Пратік Сінгал

30
Це запитання має 370 оновлень, оновлено 422 рази і вже існує з моменту запуску StackOverflow. Громаді, здається, це сподобалось, але чомусь жменьці людей доводиться погубити це для всіх. Ось чому я починаю по-справжньому не любити ТАК
Джованні Гальбо

1
У Unikernels є дуже цікава тенденція (зробіть лише одне і зробіть це добре), де ці зусилля дуже актуальні. Зазвичай ви можете холодно завантажувати unikernel у віртуальній машині, а код користувача працює менше ніж за секунду. Я бачив рішення, коли саме пошук DNS для такої послуги змушує сервер DNS запускати "завантажувальну віртуальну машину", тому він буде готовий, коли надійде фактичний запит на послугу.
Thorbjørn Ravn Andersen

Відповіді:


95

Після цього короткого огляду, що стосується написання ОС для платформи X86 , існує багато посилань .

Посилання, яке, як видається, є найбільш перспективним (www.nondot.org/sabre/os/articles) більше не доступне, тому для його читання вам потрібно буде переглядати версію Archive.org .

Наприкінці дня завантажувач завантажує машинний код ядра, поміщає його в пам'ять і переходить до нього. Ви можете помістити будь-який машинний код у потрібне ядро, але більшість програм C очікує на операційну систему, тому вам потрібно буде сказати вашому компілятору, що у нього цього не буде, або завантажувач повинен створити його частину.

Потім ядро ​​робить все важке підняття, і я підозрюю, що це приклад ядра, яке ви хочете. Але існує довгий шлях між наявністю ядра, яке говорить: "Hello world", до наявності ядра, яке завантажує інтерпретатор команд, надає дискові послуги та завантажує та керує програмами.

Можливо, ви хочете розглянути можливість підписки на ACM, щоб отримати доступ до їх старої літератури - в журналах ранньої обчислювальної техніки є багато статей наприкінці 80-х - початку 90-х років про створення альтернативних ОС . Ймовірно, книги з цієї епохи також не надруковані. Можливо, ви зможете отримати ту саму інформацію безкоштовно, переглянувши покажчики тих журналів (які доступні на цьому веб-сайті - натисніть «індекс» біля назви журналу), а потім попросіть людей із копією.

Нарешті, я знаю, що Usenet мертвий (бо так говорять пророки інтернет-приреченості), але ви виявите, що багато хто з дотепних старих експертів тієї епохи досі живуть там. Вам слід шукати google групи (вони мають старе сховище dejanews), і я думаю, що ви знайдете багато людей, які задають ті самі запитання десятиліття чи 1,5 тому, що ви запитуєте зараз. Ви навіть можете наштовхнутися на багато запитів про допомогу Лінуса Торвальда, оскільки він розробляв Linux раніше. Якщо пошук нічого не підводить, запитайте у відповідній групі новин (можливо, починається з comp.arch, але шукайте тих, хто має ОС у назві).


ей сер, чи хороший інструмент для розвитку операційної системи COSMOS?
Вікас Верма

@VikasVerma Я не використовував його, тому не знаю.
Адам Девіс

@AdamDavis Перша посилання розірвана (а інші, здається, є). Будь ласка, виправте їх!
nbro

35

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

Оновлення: я думаю, що Minix 3 трохи інша мета, але Minix 2 (і звичайно перша версія) були для навчальних цілей.


У мене є остання книга Tanenbaum, але вихідний код minix3 виглядає досить чортово величезним! У мене є така ж мета, як OP, хоча я не хочу створювати ядро ​​з нуля, я дуже хочу зрозуміти, як працює ядро ​​і що воно робить. Чи Tanenbaum book and minix3допоможе мені дотримуватися достатньо внести зміни до minix3, щоб врешті-решт мені сприяти ядра Linux?
Гедеон

32

Як хтось, хто написав багаторазову операційну систему в реальному часі з нуля ...

розпорядження клавіатури, драйвер клавіатури, драйвер диска, відеодрайвер, файлова система та нарешті завантажувач - і це просто для того, щоб запустити його вперше, нічого спільного!

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

Пам'ятайте, апаратне забезпечення робить це все можливим. Вивчіть обладнання. Ви не пошкодуєте про це.

.


18

Напишіть ОС мікроконтролера. Я рекомендую мікроконтролер на основі x86. Сучасна ОС просто величезна . Вивчіть основи спочатку.


2
якісь ідеї з чого почати з цього? Мені дуже цікаво? який комплект купити .. книги, щоб почати вас і т. д.
Джуліо

@Uncle: На сьогоднішній день я ще не стикався з першокласною системою вбудованих систем. Або вони занадто високого рівня і припускають ОС, або вони спрямовані на електротехніку та ігнорують код. Щодо наборів, google знаходить " bifferos.bizhat.com ". Також є набори ARM. Мені особисто не подобається архіварна архітектура, тому мене не цікавить ардуїно, але вона є найпопулярнішою. Для більш екзотичної роботи XC-1A теж приємний.
Пол Натан

@Paul буде вдячний, якщо ви можете розширити свою відповідь. Я заглянув у AVR та Arduino, але нещодавно побачив .NET micro. Я занадто великий хлопець з більш високою абстракцією, але я хочу почати ходити по стеку. Де ви рекомендуєте починати?
gideon

@giddy: AVR - це поточна примха. Вони невеликі і дешеві, але архітектуру мені не дуже подобається. Я рекомендую придбати комплект ARM для розробників (вартість приблизно 100). Вони популярні в комерційних програмах.
Пол Натан

@Paul дякую! Не багато чув про ARM. Що з .net micro? Я трохи переживаю, щоб щось спалити. Більшість комплектів поставляться з якимись інструкціями, правда? знову дякую.
Гедеон

16

Я хотів би, щоб було одне місце, де можна отримати всю інформацію про розробку власної ОС. Найближчим до цього є OS Dev Wiki та Форуми . Вони пропонують багато корисної інформації щодо налаштування, розробки та інформації про апаратне забезпечення пристрою.

Також у BoneFide є декілька чудових навчальних посібників , я використовував підручник з початківців роботи від Bran , і зараз переглядаю найсвіжіший, заснований на тому, що він називається " Згорніть власну іграшку UNIX-клонів ОС" .

Я вдруге перевіряю: "Операційні системи: Проектування та впровадження"

А якщо ви хочете розвиватися в Windows, перегляньте допис блогу jolson .

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


1
Пов’язано: wiki тегів x86 тегів має посилання на посібники з Intel / AMD та багато корисних матеріалів.
Пітер Кордес

15

Відмінним ресурсом є матеріал курсу 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! Це справжній дорогоцінний камінь!


11

ви також можете поглянути на SharpOS, що є операційною системою, яку вони пишуть на c #.


9

У книгах є хороші ресурси для основ операційної системи. Оскільки не так багато закликів до створення нових ОС з нуля, ви не знайдете в Інтернеті тонни інформації про типів любителів.

Я рекомендую стандартну книгу з текстом «Сучасні операційні системи» від Tanenbaum. Можливо, ви також зможете знайти «Елементи операційної системи» від Calingaert корисними - це тонкий огляд книги, який дає приблизний ескіз того, що таке ОС з точки зору дизайнера.

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

Редагувати:

Чи можете ви вказати, що ви маєте на увазі під "більш технічним"? У цих книгах наведено деталі реалізації псевдокоду, але ви шукаєте приклад ОС або фрагменти коду для певної машини / мови?

-Адам


7

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


7

Я вважав, що розробка ядра Linux Linux Роберта Лава досить цікава. Він розповідає про те, як різні підсистеми в ядрі Linux працюють дуже наземним чином. Оскільки джерело доступне, Linux є головним кандидатом на те, що потрібно зламати.



6

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


6

Почніть злому в Minix. Це набагато менше, ніж Linux (очевидно), і він розроблений з метою викладання (хоча б деякі). Не Minix 3, однак це зовсім інша історія.


5

Вже відповідь, але коли я взяв Операційні системи в коледжі, ми почали з раннього ядра Linux і додали сучасні спрощені функції (основні файлові системи, віртуальна пам'ять, багатозадачність, мютекси). Весело. Ви можете пропустити деякі дійсно божевільні монтажі лише низького рівня лише для вимкнення w / захищеного режиму та таблиць сторінок, поки все ще вивчили деякі кишки.

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


4

Ви можете подивитися на linuxfromscratch .

Linux From Scratch (LFS) - це проект, який надає вам покрокові інструкції зі створення власної власної системи Linux, повністю з вихідного коду.


32
Складання операційної системи - це далеко не написання.
duskwuff -inactive-

7
@duskwuff Ти маєш рацію, але багато чого навчишся з цього. Тоді ви можете піти вперед і написати своє.
jfs

4

Простий і базовий посібник з розробки ОС, розроблений як проект семестру. Він допоможе вам створити ОС з базовими компонентами. Дуже вдалий старт для початківців. Пов’язаний документ тут .


Великі ресурси. У статті йдеться про Nachos (2500 рядків коду), OS / 161 (11000), MINIX (30000), GeekOS. Перейдіть на кожну офіційну сторінку університету, і ви знайдете вихідний код, тренажер та інструменти, а також завдання на рік.
обмежувач



3

Перегляньте проект «Альянс керованої операційної системи» (MOSA) на веб- сайті www.mosa-project.org . Вони розробляють компілятор AOT / JIT і повністю керовану операційну систему в C #. Деякі з розробників - з неактивного проекту SharpOS.


3

Я грав з Cosmos , який є "проектом операційної системи, повністю реалізованим на мовах, сумісних з CIL". Це написано на C #, так що це було прямо на моїй алеї. Для когось, як я, хто ніколи не намагався побудувати операційну систему, насправді було досить круто, що можна було швидко отримати операційну систему "Hello World".



3

Як було сказано вище, OSDev Wiki є (на сьогоднішній день) найкращим джерелом для розробки ОС. Для тих із вас, хто розмовляє німецькою мовою, низький рівень.eu Wiki також чудовий. Щось відносно невідоме Incitatus OS , просте ядро ​​з крихітним набором програм для користувачів. Це чудово використовувати для потрапляння у складну тему розробки ОС.


2

Movitz - середовище Lisp, написане загальним Lisp і працює "на металі". На жаль, деякі посилання на головній сторінці Movitz забороняють доступ, але ви можете знайти інструкції щодо завантаження та компіляції вихідного коду зі сторінки trac . Також готове зображення можна знайти в архіві цієї сторінки .

IMHO це надзвичайно цікаво, оскільки він повертає концепцію машини Lisp щодо наявного на сьогодні обладнання. Не вдалося комерційно, але це не доводить мені, що ідея була поганою.

Посібник з ненависниками Unix - це весела книга, яка напівсерйозно підкорює концепцію Unix та його похідних. Багато розділів міркують про те, наскільки краща концепція машини Lisp.


2

Ось стаття під назвою " Написання простої операційної системи з нуля ". Він охоплює написання завантажувача, введення захищеного режиму x86-32 та написання базового ядра в C. Це, здається, добре зробить детальну інформацію.


Я стежив за цією книгою і розвивався на основі її коду. Чудово починати з такої книги.
user3405291


1

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

  1. Вам потрібно зосередитись на мові збірки, C та C ++. Ви повинні володіти цими мовами.
  2. Спочатку прочитайте хорошу книгу про те, як працює ОС [Google it], потім прочитайте всю інформацію з Вікі ОС
  3. Шукайте у ютубі "Як створити власну ОС у мові складання", дивіться відео, напр. Відео
  4. Завантажте вихідний код ОС Linux і складіть його самостійно і спробуйте змінити код самостійно
  5. Тепер ви досвідчений редактор ОС, тепер завантажте Minix і QNX і почніть розробляти разом з ними і отримуйте свої документи звідси Minix Doc і QNX Doc

Тепер ви здобули ступінь магістра (не зовсім просто трохи більше), коли зараз створюєте ОС, розповсюджуйте цю відому вашій друзі і за їх допомогою намагайтеся створити ОС настільки потужну, як Mac, Linux або Windows


Редактори, будь ласка, відредагуйте мою відповідь та видаліть простір між http: and www, оскільки я новий учасник, тому я не маю такої високої репутації, plz робити це для мене
BharatKhanna

1

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

Код під поверхнею цієї ОС настільки чортовий простий! але в той же час він переніс такі речі, як Каїр, Пітон, (ще ​​не скоро) sdl, створив спільну пам'ять, а також створив власний інструментарій віджетів. Все написано в С.

Ще однією цікавою ОС буде родовід . Це зроблено JamesM (людиною, що стоїть під посібником з ядра jamesM . Хоча він має більше функцій, ніж ToaruOS, він також більший і заплутаніший.

Але все одно ці 2 ОС допоможуть вам дуже багато, особливо ToAruOS.


1

Коли я почав працювати над основними операційними системами, мені знадобився базовий посібник, на кшталт « Східні камені» для базової операційної системи . Це допомогло мені не розпустити голову.

Що якщо ви хочете зробити це з абсолютно нічого (чистий код складання)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.