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