Як розробити операційну систему для комп`ютера

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

кроки

  1. Make a Computer Operating System Step 1
1. Для початку навчитеся програмування. Знання асемблера необхідно- настійно рекомендується також мати поняття про інших додаткових мовах програмування нижчого рівня, наприклад, С.
  • Make a Computer Operating System Step 2
    2. Визначтеся, на який пристрій ви хочете завантажити операційну систему. Це може бути CD-диск, DVD-диск, флеш-пам`ять, жорсткий диск або інший комп`ютер.
  • Make a Computer Operating System Step 3
    3. Вирішіть, який ви хочете бачити вашу операційну систему. Чи це має бути повна версія ОС з графічним інтерфейсом користувача (GUI) або, може бути, що-небудь більш мінімалістичне? Вам необхідно знати, в якому напрямку рухатися, ще перед початком процесу.
  • Make a Computer Operating System Step 4
    4. Уточніть, яку платформу процесора буде підтримувати ваша операційна система. AI-32 і x86_64 є двома найбільш поширеними версіями для персональних комп`ютерів, так що їх можна вважати найкращим вибором.
  • Make a Computer Operating System Step 5
    5. Визначтеся, чи віддаєте перевагу робити все самостійно з нуля, або ж є ядра, на основі яких ви б хотіли надбудувати систему. Linux з нуля - проект для тих, хто бажає, наприклад, створити свій власний дистрибутив Linux.
  • Make a Computer Operating System Step 6
    6. Виберіть, чи збираєтеся ви використовувати свій власний завантажувач або попередньо створений уніфікований системний завантажувач Grand Unified Bootloader (GRUB). Оскільки кодування своєї власної програми завантаження вимагає великих знань в області комп`ютерного забезпечення та BIOS, це може відсунути графік програмування чинного ядра.
  • Make a Computer Operating System Step 7
    7. Прийміть рішення з приводу мови програмування, який збираєтеся використовувати. Звичайно, цілком можливо розробити ОС такою мовою, як Pascal або BASIC, але краще писати на С або асемблері. Асемблер абсолютно необхідний, т. до. деякі важливі частини операційної системи вимагають знання саме цієї мови. C ++, з іншого боку, містить ключові слова, необхідні для запуску повної версії ОС.
  • Щоб зібрати ОС за допомогою кодів C або C ++, ви, звичайно, будете використовувати те один компілятор, то інший. Це означає, що ви повинні прочитати керівництво / інструкції / документацію для обраного компілятора C / C ++, що поставляється в комплекті з програмним забезпеченням або є на веб-сайті дистриб`ютора. Вам доведеться дізнатися безліч складних речей про компіляторі, крім того, для вдосконалення C ++ належить вивчити його схему і ABI. Ви, як очікується, зрозумієте різні формати виконавчих завдань (ELF, PE, COFF, звичайні бінарні і т.д.) І помітите, що власний формат Windows, PE (.exe) захищений авторським правом.
  • Make a Computer Operating System Step 8
    8. Виберіть інтерфейс програмування додатків (API). Однією з добірок хорошого API є POSIX, так як вона добре документований. Всі системи Unix мають, принаймні, часткову підтримку POSIX, так що було б тривіально пристроювати програми Unix на вашу операційну систему.
  • Make a Computer Operating System Step 9
    9. Визначтеся з дизайном. Існують монолітні ядра і мікроядра. Монолітні ядра виконують всі служби в ядрі, в той час як мікроядра мають маленьке ядро ​​в поєднанні з призначеної для користувача реалізацією сервісів. Загалом, монолітні ядра швидше, але мікроядра мають кращу ізоляцію і захист від можливих несправностей.
  • Make a Computer Operating System Step 10
    10. Розгляньте питання про розробку і роботі в команді. Таким чином, вам буде потрібно менше часу на дозвіл великих проблем, що дозволить створити операційну систему кращої якості за більш короткі терміни.
  • Make a Computer Operating System Step 11
    11. Не можна прати ваш жорсткий диск повністю. Пам`ятайте, форматування диска необоротно очистить всі ваші дані! Використовуйте GRUB або інший менеджер для дубльованої завантаження вашого комп`ютера з іншого ОС, поки ваша версія не буде повністю готова функціонально.
  • Make a Computer Operating System Step 12
    12. Почніть з малого. Зверніть увагу в першу чергу на дрібниці, такі як відображення тексту і переривання, перш ніж переходити до складних елементів, наприклад, до управління пам`яттю і багатозадачності.
  • Make a Computer Operating System Step 13
    13. Обов`язково зробіть резервні копії останньої робочої версії. Це дає певний спокій у випадку, якщо щось піде абсолютно неправильно в поточній версії вашої ОС або наступних доповненнях. У разі поломки вашого комп`ютера і неможливості завантаження, як ви і самі розумієте, відмінною можливістю стане наявність другої копії для роботи, так що ви зможете усунути наявні несправності.
  • Make a Computer Operating System Step 14
    14. Протестуйте вашу нову операційну систему на віртуальній машині. Замість перезавантаження комп`ютера кожен раз після внесення змін або передачі файлів з робочого комп`ютера тестовій машині ви можете використовувати додаток для запуску ОС на віртуальній машині, в той час як ваша поточна ОС продовжує працювати. Додатки VM включають в себе VMWare (яка також має сервер у вільному доступі), альтернативний відкритий вихідний код, Bochs, Microsoft Virtual PC (не сумісний з Linux), а також XVM VirtualBox.
  • Make a Computer Operating System Step 15
    15. Випустіть реліз-версію. Це дозволить користувачам розповісти вам про можливі недоліки у вашій операційній системі.
  • Make a Computer Operating System Step 16
    16. Операційна система також повинна бути зручною для користувача, так що не забудьте додати корисні функції, які стануть невід`ємною частиною вашого дизайну.
  • Поради

    • Коли розробка буде закінчена, подумайте, чи хочете ви уявити код у вільному доступі або ж встановити приватні права на нього.
    • Обов`язково зробіть функції безпеки вашим основним пріоритетом, якщо хочете, щоб ваша система була життєздатною.
    • Не починайте проект розробки операційної системи з метою навчання програмуванню. Якщо ви не знаєте C, C ++, Pascal або якісь інші відповідні мови і властивості, в тому числі типи покажчика, операції з битами низького рівня, перемикання бітів, вбудований асемблер і т.д., - значить, ще не готові для створення ОС.
    • Переглядайте такі портали, як OSDev і OSDever, які допоможуть вам поліпшити власну операційну систему. Зверніть особливу увагу на те, що по більшості питань співтовариство OSDev.org воліє, щоб ви самостійно зверталися до змісту сайту, а не приєднувалися до форуму. Якщо ви все ж вирішили примкнути до рядів форумчан, для цього повинні бути певні передумови. Ви зобов`язані досконально знати C або C ++ і мову x86 ассамблер. Ви також повинні розуміти загальні та комплексні поняття в програмуванні, такі як Linked Lists, Queues і т.д. Спільнота OSDev в своїх правилах прямо говорить про те, що ніхто не збирається няньчити нових програмістів. Якщо ви намагаєтеся розробити ОС, само собою зрозуміло, що ви «бог» в області програмування. Від вас також вимагається прочитати керівництво по роботі з процесором щодо його архітектури, обраної вами-наприклад, x86 (Intel), ARM, MIPS, PPC і т.д. Такий довідник по структурі процесора можна легко знайти за допомогою пошуку в Google ( «Intel Manuals», «ARM manuals» і т.д.). Чи не реєструйтеся на форумі OSDev.org, щоб задавати очевидні питання. Це просто призведе до відповідей на кшталт «Read the f *** ing Manual». Для початку ви повинні спробувати почитати Вікіпедію, посібники для різних інструментів, які збираєтеся використовувати.
    • Перевірте наявність потенційних мертвих точок і інших помилок. Недоліки, тупики та інші проблеми можуть вплинути на проект вашої операційної системи.
    • Якщо ви хочете спосіб простіше, уявіть дистрибутиви Linux - типу Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd або SUSE Studio і SUSE KIWI. Проте, створювана ОС належить компанії, яка першою представила цей сервіс (хоча у вас є права на її вільне поширення, зміна і запуск, як вам подобається, під GPL).
    • Хорошим рішенням буде створення абсолютно нового розділу для розроблюваної операційної системи.

    попередження

    • Недбале переписування ОС на жорсткий диск може пошкодити його повністю. Будьте уважні
    • У вас не вийде повністю готова система за два тижні. Почніть з завантажується операційної системи, а потім переходите на більш цікавий матеріал.
    • Якщо ви зробите щось необачне, як, наприклад, напишіть безладні байти в довільних портах I / O, то знищите вашу ОС і можете (в теорії) спалити ваше обладнання.
    • Не очікуйте, що буде легко побудувати якісну операційну систему. Існує безліч складних взаємозалежностей. Наприклад, для того, щоб ОС була здатна працювати з декількома процесорами, ваш диспетчер пам`яті повинен мати «блокуючі» механізми для запобігання доступу зайвих процесорів в один і той же ресурс одночасно. Використовувані «блоки» припускають наявність планувальника, щоб переконатися, що тільки один процесор звертається до критичного ресурсу в будь-який момент часу, а всі інші знаходяться в режимі очікування. Проте, робота планувальника залежить від присутності диспетчера пам`яті. Це приклад залежності від взаимоблокировки. Немає стандартного способу вирішити подібні проблеми-кожен творець операційної системи, як очікується, достатньо кваліфікований, щоб знайти свій власний варіант їх вирішення.

    Що вам знадобиться

    • комп`ютер
    • Процесор, на якому збираєтеся будувати
    • Достатня оперативна пам`ять (ОЗУ) для віртуальної машини
    • Основна ОС (використовується для розробки вихідного коду асемблера (і ін.), А також складання і упаковки на ранніх стадіях роботи-в кінцевому підсумку ваша власна ОС стане первинної)
    • Редактор кольорового коду Syntax (застосовується при відсутності Integrated Development Environment)
    • компілятор
    • CD / DVD привід
    Cхоже