Як я можу побудувати невелику операційну систему на старому настільному комп’ютері? [зачинено]


111

Це може бути марним, оскільки я знаю, що написання операційної системи нестерпно складне (особливо самотужки).

  • Я не сподіваюся створити наступний Linux або Windows.

  • Я знаю, що це буде жахливо, і баггі, і не буде працювати, але це добре.

Я хочу все написати самостійно, в Асамблеї , С та (деяких) С ++ .

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

Я хочу встановити один зі своїх старих настільних комп'ютерів з монітором, клавіатурою та мишкою і почати працювати на порожньому жорсткому диску.

Я хочу навчитися писати власний завантажувач (я знайшов багато ресурсів з цього приводу, але для повноти, будь ласка, додайте ще кілька хороших), власний USB-драйвер (якщо це необхідно), драйвер CD (якщо це потрібно) ) і т. д. Все, з нуля.

  • Як вставити код на комп'ютер? Краще це зробити з дискети? Чи може більшість комп'ютерів зробити це з USB-накопичувача?

  • Які драйвери мені потрібні, і чи можете ви запропонувати будь-які посилання на їх створення?

  • Після послідовності завантаження - тоді що? Як перейти в захищений режим і т.д.

  • Як керувати пам'яттю без допомоги операційної системи? Я просто використовую всі потрібні адреси? Не потрібна ініціалізація?

  • Що я, безперечно, натрапляю на це, що збентежить мене?

  • Як я можу зробити це командним рядком O / S та графічним?

  • На чому побудований графічний O / S? Мовляв, як би я зробив щось на зразок, командний рядок із шрифтом та малюнком вгорі?

  • Де можна прочитати про налаштування багатозадачного середовища? (тобто, має два графічно схожі командні рядки, що працюють поруч).

  • Як би я встановив якусь систему вікон? Як відображати графіку на екрані після встановлення простої багатозадачності?

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

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

Будь ласка, введіть одну "тему" на відповідь - наприклад, драйвери USB, а потім, можливо, список ресурсів, речі, на які слід звернути увагу тощо.

Крім того, не рекомендуйте створювати інший O / S або попередній код. Я знаю, що я прочитаю багато раніше існуючого коду (наприклад, ядро ​​Linux, або приклади ресурсів, наявні драйвери тощо), але в кінцевому підсумку я хочу все написати самостійно. Я знаю, що я повинен будувати щось інше, і є багато інших запитань, про те, що я можу прочитати, якщо передумаю і піти цим шляхом. Але це все про те, щоб зробити всю справу з нуля.

Будь-які пропозиції щодо того, як це зробити графічним? Різні режими відео і як з ними працювати тощо?


14
Це моя найбільша мета. Я хочу так погано написати операційну систему, просто заради розваги та вивчення її ... Мені просто не вдалося заощадити час за останні кілька років. Якщо ви коли-небудь шукаєте когось, щоб допомогти або просто поговорити з вами, ви можете надіслати електронною поштою на адресу schmeling88 на gmail.com
Max Schmeling

2
@Max та @Tom, я також отримав помилку. Я насправді
готуюсь

2
Просто не думайте про графіку зараз. Unix ніколи не підтримував графіку безпосередньо, і це не так вже й погано. :-) Але в основному немає простого і портативного способу вийти за межі 800x600 IIRC.
Бастієн Леонард

2
Голосування про закриття як занадто широке. Подібно до: stackoverflow.com/questions/254149/… || stackoverflow.com/questions/2800741 / ...
Чіро Сантіллі郝海东冠状病六四事件法轮功

1
Чому? Це питання давнє і вже не породжує жодної діяльності. Кого хвилює?
Карсон Майєрс

Відповіді:


51

Насамперед. Читати, читати, читати, читати, читати. Вам потрібно чітко розуміти, як працює ОС, перш ніж ви можете сподіватися на реалізацію власної.

Візьміть одну з книг Ендрю Таненбаума про операційні системи. Це ми використовували в моєму класі ОС в коледжі:

Сучасні операційні системи PDF

Сучасні операційні системи на Amazon

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

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

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

Якщо у вас є якісь електронні знання, можливо, простіше почати з написання операційної системи для вбудованого пристрою, який має достатню документацію, оскільки це, як правило, простіше, ніж ПК на x86. Я завжди хотів написати також свою власну ОС, і я починаю із написання мікрокореневої ОС для цієї ради розвитку від Digilent. Він може запускати програмний процесор MicroBlaze з програмним забезпеченням Xilinx, який має дуже ретельну документацію. Тут також є кілька оперативної пам’яті, флеш-накопичувач даних, світлодіоди, комутатори, кнопки, вихід VGA тощо. Багато всього, що можна пограти з написанням простих драйверів для.

Однією з переваг вбудованого пристрою є також те, що, можливо, ви зможете тривалий час уникати написання драйвера VGA. У моєму випадку на платі розробки Digilent є вбудований UART, тому я можу ефективно використовувати серійний вихід як мою консоль, щоб отримати всю справу та завантажувати командний рядок з мінімальною суєтою.

Просто переконайтеся, що все, що ви вирішите націлити, має легко доступний і добре перевірений компілятор. Ви не хочете одночасно писати ОС та компілятор.


2
+1, але я віддаю перевагу книзі Tanenbaum Minix (яка більше спрямована на реалізацію), і насправді не потрібно спочатку зосереджуватися лише на теорії. Він все одно не напише ОС з першої спроби. Він спочатку напише завантажувач, потім перейде в захищений режим, потім обробляє введення-виведення тощо.
Бастієн Леонард

2
+1 для написання ОС для вбудованого чіпа. Зрештою, ви відчуєте, що зробили щось унікальне, і це набагато простіше, ніж написати це для (скажімо) x86, зберігаючи ті самі основні поняття. Наприклад, подивіться на TinyOS (хоча технічно це не ОС, є такі речі, як планувальник і модулі завдань для цього ..)
Крістофер Мічінський

29

http://www.osdev.org/ та http://www.osdever.net/

Ласкаво просимо до світу розвитку ОС.

Дивіться також інші посилання на документацію x86 у розділі SO wiki тегів : посібники з Intel та AMD, документи з компілятора / асемблера та різні посібники.

Він також пропонує використовувати BOCHS або інше віртуальне середовище для налагодження, оскільки ви можете однокроковим завантажувачем і перевірити регістри.


1
І особливо wiki.osdev.org !
Матвій Іселін

Не забувайте forums.osdever.net :)
Бренден

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

@icktoofay Я думаю, що питання занадто широке, щоб відповісти належним чином.
користувач253751

15

Я б запропонував працювати, принаймні спочатку, на Bochs або якійсь іншій віртуальній машині, тому що ви можете взяти його з собою куди завгодно, простіше налагоджувати (ви можете побачити точний стан обладнання), і якщо ви Вам потрібна допомога з налагодження зовнішньої програми, вони можуть використовувати саме те саме «обладнання», що і ви.

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


Я зараз загляну в Боха, щоб пограти, але, врешті-решт, я хочу просто будувати це на якомусь ПК
Карсон Майєрс

Якщо він працює в BOCHS, він, як правило, працює на реальному ПК, за модульною різницею в їх BIOS. Більшість ваших помилок, ймовірно, будуть речами, які впливають на BOCHS та реальне обладнання, але різниця полягає в тому, що коли ваш код застряг у нескінченному циклі в BOCHS, ви можете використовувати вбудований відладчик BOCHS, щоб дізнатися, де і один крок, щоб знайти як / чому. На справжньому обладнанні все, що ви могли зробити, - це додати відладки відбитків. Використання налагоджувача допоможе заощадити години та дні від подряпин.
Пітер Кордес

14

На найнижчому рівні мінімум, який потрібно мати операційній системі, - це якось керувати апаратним забезпеченням системи і якось завантажувати виконувати якийсь "код користувача". Якщо ви збираєтеся розпочати роботу з ПК, то вам потрібно написати код, який можна завантажити з якогось іншого пристрою. Старіші ПК мають вбудовану програму BIOS, яка визначає, як апаратне забезпечення виконує певну ініціалізацію (принаймні відео, клавіатуру та якусь форму зберігання чи завантажувача). (Оновлення жовтня 2017 року: новіші комп’ютери мають вбудоване програмне забезпечення EFI або UEFI ... це значною мірою педантична різниця; служать тим же цілям, що і для цього обговорення).

Тож почніть з вивчення детальних відомостей про використання BIOS або іншої прошивки у вашій цільовій системі. Тобто, навчіться писати програму, яку BIOS може завантажувати та виконувати. Це з часом перетвориться на ваш завантажувач. Почніть з малого. Просто отримайте програму, яка друкує: "Здрастуйте, Лінусе" безпосередньо з завантажувального програмного забезпечення (на дискеті або USB-накопичувачі, це було б гарним початком ... або на жорсткому диску, якщо вам це подобається).

Звідти я рекомендую написати дуже простий послідовний драйвер ... оновіть завантажувач, щоб ініціалізувати якийсь послідовний порт, і почати завантаження з нього. Тоді він може виконати код, який він перетягує. Звідти напишіть трохи завантажувального інструменту, який може записувати на інший набір блоків (ми ще не реалізували файлову систему ... навіть не розбираємо таблицю розділів; тому ми спочатку просто розберемося з необробленими діапазонами блоків на диску ).

У цей момент ваш завантажувач повинен мати можливість перетягувати новий код через послідовну лінію, скидати його на розділ (так, реалізувати якесь обробку таблиці розділів ... чи відповідає це стандартним умовам ПК на даний момент. ), і виконати його.

Звідти ви повинні мати можливість працювати над значно складнішими функціями. З цієї бази ви можете написати та скомпілювати нове "ядро" ... перезавантажити тестовий блок, а нове ядро ​​розгорнути на ньому.

(Ваш завантажувач повинен сприймати якийсь сигнал, наприклад, BREAK над послідовними лініями рукостискання, як команда пропустити завантаження та просто завантажити існуюче зображення; він також повинен обробляти час очікування таким чином).

Звідси написати дуже простий термінальний шар і командну оболонку? Файлова система? Реалізуйте команди для завантаження нового виконуваного вмісту, відмінного від ядра (файлів або об'єктів певного роду). І так далі.

Природно, ви могли почати з драйвера консолі за допомогою клавіатури та відео ПК (BIOS INT 0x16h та INT 0x10H відповідно, якщо я правильно пам'ятаю). Однак я б запропонував почати з послідовного драйвера, оскільки потім ви можете автоматизувати цикл складання / розгортання / тестування з будь-якої іншої існуючої (функціональної) системи. Оскільки ваша нова ОС розпочнеться як проект, складений між собою, вам важливо мати спрощений спосіб вирішення цього питання.

Я не знаю, як далеко ви хочете зайняти свій проект. Досить вражаючою метою було б досягти "самоврядування". Якщо ви можете створити простий асемблер / компілятор, який може дозволити вам використовувати вашу нову ОС для (повторної) збірки, посилання та завантаження в робочу версію вашої нової ОС ... тоді ви досягли цієї мети. (Зверніть увагу, це не є вимогою. Багато вбудованих систем ніколи не будуть самостійними хостингами, і в цьому немає нічого поганого).


На сучасному обладнанні може бути складніше змусити працювати послідовний драйвер, ніж писати консольні (відео / клавіатурні) драйвери. За кілька років, як я написав це, звичайні старі послідовні роз'єми стали практично відсутні на сучасних настільних та ноутбуках. Деякі вбудовані та "прихильні" апаратні засоби все ще мають старомодні інтерфейси RS-232C, не потрібно проходити емуляцію через USB. Для іспиту: mpl.ch/t2600.html, здається, є.
Джим Денніс

12

Якщо ви не заперечуєте за допомогою апаратної віртуалізації, є курс (книга + лекції + програмне забезпечення), який перенесе вас "Від Нанда до тетрісу". Ви повністю створюєте повну комп'ютерну систему з (для цих цілей атомних та заданих) електричних NAND-воріт, аж до побудови ОС, мови та, нарешті, кодування простої гри на вашій персональній машині.

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

Посилання: http://www1.idc.ac.il/tecs/


Я думаю, що це посилання мертве. Хтось знає інший спосіб отримати доступ до цього?
Корай Тугай


10

Я б почав з малого і придбав б вбудований набір для розробки 8086 і розробив багатозадачну ОС для цього. Як тільки у вас з'явиться ядро ​​і ви ознайомитесь з роботою на апаратному рівні, ви будете готові зробити щось більш складне.

Створення навіть клона DOS-дисплея VGA - справа досить складна. Деталей величезна. :-)

конкретні теми.

Як вставити код на комп'ютер? Краще це зробити з дискети? Чи може більшість комп'ютерів зробити це з USB-накопичувача?

BIOS буде виконувати елементарну завантажувальну програму.


Які драйвери мені потрібні, і чи можете ви запропонувати будь-які посилання на їх створення?

все, що не є прямим операційним процесором / пам'яттю. Все, що безпосередньо не посилається на посібник з процесора.


Після послідовності завантаження - тоді що? Як перейти в захищений режим і т.д.

Захищений режим буде частиною завантажувальної послідовності.

тоді ви починаєте багатозадачність і з'ясовуєте, як запустити процеси.


Як керувати пам'яттю без допомоги операційної системи? Я просто використовую всі потрібні адреси? Не потрібна ініціалізація?

Правильно. Ви, ймовірно, захочете врешті розібратися у системі віртуальної пам'яті.


Що я, безперечно, натрапляю на це, що збентежить мене?

не маючи інструментів налагодження, не маючи IO


Як я можу зробити це командним рядком O / S та графічним?

З горем. Знайдіть Windows 3.1 та Linux, зокрема X windows.


На чому побудований графічний O / S? Мовляв, як би я зробив щось на зразок, командний рядок із шрифтом та малюнком вгорі?

Подивіться на X вікна.


остаточна порада: вивчити linux / x windows. Це не ідеально, але це дає розуміння одного підходу. Також вивчіть вбудовані системи.


чудова відповідь, у мене вже є зручне ядро ​​Linux, і я точно загляну в Windows 3.1.
Карсон Майєрс

8

Я бачу багато хороших посилань на сайти розробки ОС, тому опишу інший підхід:

Якщо ви хочете отримати досвід впровадження ОС з голого металу, є кращий вибір апаратного забезпечення, ніж старий ПК. За допомогою архітектури ПК ви витратите непомірну кількість свого часу на кодування навколо нецікавих артефактів 30-річної історії дизайну. Наприклад, саме частина завантажувача проекту, ймовірно, спалила багатьох сміливих програмістів.

Наприклад, вам знадобиться один набір драйверів, щоб прочитати ваше ядро ​​з диска та / або мережі. Тоді вам знадобиться код, щоб перейти в захищений режим. У цей момент вам потрібен ще один набір драйверів! Дуже мало роботи, яку ви робите, щоб перевести мікросхему в захищений режим, після цього буде передано. Ви хочете запустити його на іншому ПК + - 4 роки, і вам знадобиться ще один набір драйверів.

Погляньте на завантаження ARM або інший 32-розрядний "вбудований" чіп. Доступні недорогі дошки для розробки, або ви можете припаяти своє! Деякі мають вбудований ethernet та usb. Думаю, вам буде веселіше працювати над здоровою, неординарною архітектурою, і, можливо, в кінцевому підсумку ви зможете скористатися деякими навичками повторного використання.


не зовсім те, про що я просив, але +1 для того, щоб надіслати мені дотичну читання
Карсон Майєрс

Марш дає вам гарну пораду. Низькорівневі деталі архітектури x86 / BIOS є складними. Ви, ймовірно, зациклюєтесь на цих деталях, не виходячи з того, щоб не зосередитись на більших проблемах, таких як управління пам’яттю та планування процесів. Перейдіть на "чистішу" архітектуру з послідовним портом. Ви будете щасливішими з часом.
Баррі Браун

8

Якщо ви хочете, щоб це працювало на справжньому обладнання, вам абсолютно потрібна копія керівництва процесора. Інструкції Intel ( http://www.intel.com/products/processor/manuals/ ) є неоціненними. Вони переходять через все, від перемикання режимів (реального / захищеного) до управління віртуальною пам'яттю (якщо ви вирішили піти так далеко) до здійснення системних дзвінків (якщо ви коли-небудь переходите до режиму користувача). Найголовніше, вони пояснюють дуже детально ряд речей, які необхідно налаштувати для функціонування речей, як-от TSS та сегментні регістри, що більшість текстів ОС не обговорюють, тому що вони більше стосуються концепцій вищого рівня, ніж процесори, конкретні деталі.


І ви можете отримати паперові копії безкоштовно через Intel.
Матвій Іселін


8

Спробуйте прочитати код невеликої базової ОС з відкритим кодом, наприклад MikeOS.

Я також пропоную наступні кроки (повинні бути веселими!):

  1. Напишіть віртуальну машину. Визначте всі ваші інструкції процесора, щоб ви знали вашу систему всередині та зовні. Інтерфейс його з SDL для клавіатури, миші, екрана, аудіо доступу. Нехай це буде просто, щоб ви могли вмістити все в голові відразу. Це не обов'язково має бути найсучаснішою віртуальною машиною, лише тією, яка може імітувати функцію "справжнього" комп'ютера.
  2. Напишіть асемблер для процесора віртуальної машини. Пам'ятайте, що цей асемблер не повинен бути програмою, написаною мовою віртуальної машини, а все, що може перетворити вашу мову складання в машинний код.
  3. Визначте виконуваний формат і напишіть простий посилання.
  4. У вас є всі частини, щоб написати свою операційну систему зараз! Напишіть його мовою складання, зібрати її ... тощо. Вам не потрібен такий складний процес завантаження, просто спочатку заведіть машину для запуску ОС.

Наведені вище дії можуть здатися дурними для написання простої ОС, але ей, це чортово весело.


6

перевірити MikeOS . Його досить проста ОС написана читається (як у коментарях) збірка. Незважаючи на те, що він досить простий, він має графічний інтерфейс і підтримує деякі мережі та мультимедіа.

редагувати : MenuetOS графічний. Його також написано як прямий asm, але він більш досконалий, ніж MikeOS


6

У вас амбітна мета. Але виконання є ключовим.

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

Моя порада така: обмежте свої очікування і почніть з основного питання.

Що таке операційна система?

Комп'ютерний науковець (сподіваємось) ніколи не скаже, що ОС - це графічний інтерфейс користувача, веб-браузер, або спосіб підключення USB-пристроїв, або все, що користувач може насправді бачити чи торкатися. Натомість ОС на самому фундаментальному рівні - це ті речі, про які я згадував вище. Всі вони потрапляють під одну велику парасольку: управління ресурсами.

Операційна система - це не що інше, як програма, яка управляє апаратними ресурсами комп'ютера: пам'яттю, процесором та периферійними пристроями.

Ось проста операційна система: програма дозволяє користувачеві вводити програму (у шістнадцятковій чи двійковій) за допомогою послідовного з'єднання. Після введення програми вона запускає програму. Коли програма закінчена, контроль повертається користувачеві, де він може або запустити програму ще раз, або набрати нову.

Зробіть це на «чистій» архітектурі, такі як вбудований процесор ARM з 64 Кб пам'яті або близько того. Ви можете зашифрувати це в зборі після закінчення декількох днів, коли вивчаєте додаткові та додаткові засоби ARM. І вуаля!, у вас є операційна система.

Це все, що належить робити ОС:

  • Він управляє пам'яттю, не дозволяючи користувачеві перезаписати саму ОС.
  • Він планує запустити один процес.
  • Він обробляє введення-виведення до єдиної послідовної периферії.

Це дає вам будівельний блок для початку. Зараз у вас є багато варіантів. Можливо, однією з них було б дозволити завантаженню в пам'ять двох програм і дозволити користувачеві вирішити, яку з них виконувати наступну.

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

Ваш вибір необмежений, але кожен з них є кроком дитини від того, що ви мали раніше.

Це весело, якщо ви не встановите приціл занадто високо!



4

У багатьох школах є класи ОС, які роблять багато з того, що ви описуєте. Моя школа (CMU) викладала ОС на мові C, і ми написали ядро, файлову систему та оболонку та отримали код для завантажувача.

На жаль, мені не вдалося знайти жодного остаточного ресурсу для цього курсу (15-412) в Інтернеті, і він розвивався з часом. Але, можливо, люди можуть розміщувати посилання на джерела та завдання для шкіл, які мають хороші ресурси в Інтернеті.


3

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

Удачі.


1
Незважаючи на те, що мати такий поглиблений підручник є геніальним, у ньому багато помилок, з якими постійно стикаються початківці. Підручник чудовий, якщо і лише якщо ви також бажаєте відкрити такі речі, як Інструкції Intel, і подумайте, що ви робите (тобто не копіюйте та не вставляйте!).
Матвій Іселін

3

Вивчіть систему A2 (яка раніше називалась системою « Оберон» ) щодо ідей, які ви можете вкрасти. Це графічна ОС, побудована всього двома людьми, хоча, правда, одна - це Niklaus Wirth. Вперше випущений близько 1990 року, і швидкість вражаюче хороша. Є книга Гуткнехта.


3

Щодо графічного програмування низького рівня, це дасть вам багато інформації: http://www.osdever.net/FreeVGA/home.htm . (Це дуже цікаво і для текстового режиму.)

Що я, безперечно, натрапляю на це, що збентежить мене?

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

Не хвилюйтесь про дискету та інше, більшу частину часу ви будете використовувати емулятор, такий як Bochs або QEmu.


3

Ви можете розглянути поняття "Операційні системи", Авраам Сільбершац - Розуміння понять системного програмування - це основна вимога, заглянути в внутрішні ядра F / OSS ядер ОС OS Linux (BSD та GNU / Linux) , особливо більш ранні версії, які напевно, трохи більш задокументовані.alt текст alt текст


1
Сільбершац - це справді непоганий, але дуже високий рівень.
Пол Натан

Домовились; Однак я б сказав, що це принципово важливо. Документація там із сучасними операційними системами від Tanenbaum (згадана раніше)
amaterasu

2

Погляньте на Minix . Вивчіть вихідний код разом з " Проектування та впровадження операційних систем ". Подумайте про внесок у проект. Я думаю, що Minix - це справді хороша та перспективна ОС в процесі створення. Це також добре профінансований проект. Це означає, що ви можете навіть заплатити за свої внески!


1

Це дуже просто завдяки тому, що в BIOS вже вбудовано багато функцій вводу / виводу для зміни екранного режиму, зміни кольору пікселів, написання тексту на екран та багатьох інших речей. Однак він не включає підтримку файлових систем, що є однією з небагатьох речей, які потрібно включити у вашу ОС.

BIOS завантажує перший сектор на жорсткий диск і починає звідти виконувати код, тому ваша ОС повинна бути розміщена з першою інструкцією в першому секторі на жорсткому диску.

Ця стаття у Вікіпедії повинна почати переривання BIOS для запису тексту на екран, отримання клавіш від клавіатури та інших речей. https://en.wikipedia.org/wiki/BIOS_interrupt_call

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

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