Ласкаво просимо на unix.stackexchange.com!
На ваше запитання немає простого відповіді, і набагато кращі люди, ніж я, написали цілі книги на тему ядра Linux та операційних систем загалом.
Про сферу проекту: написання операційної системи - непросте завдання! Навіть цілеспрямовано мінімальна ОС на зразок Minix - це досить складна річ! Щоб дати вам уявлення про Linux, подумайте про програми C, про які ви писали до цього часу. Середня курсова робота в університеті має становити щонайменше кілька тисяч ліній С. Я думаю, що мій проект на останній рік склав близько 30–35 000 рядків С ++. Ядро Linux становить приблизно 13000000 рядків коду С.
Чому це все в окремих файлах? Значні проекти зберігаються в окремих файлах з логістичних та практичних причин. Просто подумайте про завантаження 13.000.000 рядкового файлу в редактор! Перш ніж вирішувати такий величезний проект, як Linux, вам слід обов'язково відточити свої навички C до того моменту, коли на питання "чому декілька файлів" відповідає сам. Ви також повинні мати можливість читати код C , а не просто писати його. (важче, ніж здається спочатку)
Ви, безумовно, повинні бути дуже досвідченими в C. Ядро підтримують тисячі людей, і вас покликають зрозуміти особисті ідіоми C кожної з них (надано, у рамках досить жорстких стандартів кодування ядра, але все-таки - у кожного є власний стиль вирішення проблем).
Отримавши свій C fu, переконайтеся, що ви розумієте операційні системи. Це допоможе вам зрозуміти код. Не весь Linux є важливим. Ядро власне досить мало! Що це цвіте:
- Тисячі драйверів апаратних засобів для різних пристроїв.
- Шари абстракції для різних класів пристроїв для спрощення API та запису драйверів. Наприклад, у нас є VFS для файлових систем, рівень подій для пристроїв введення тощо.
- Шокуюча кількість умовно складеного коду та файлів, що обслуговують різні архітектури, що працюють під управлінням Linux (не кожна машина Linux є ПК ПК Intel, а деякі неймовірно відрізняються від того, що ви могли очікувати). Ядро має вирішити ці відмінності, а це означає більше коду.
Одна з проблем, яку ви відразу знайдете, - відключити, змінити та підключити знову ці компоненти не так просто. Існують численні взаємозв'язки. Словом, зміна бітів ядра є складним.
Причина, по якій люди запропонували вам Minix, проста: це повноцінна операційна система, але вона не обтяжена потребами системи, такої складної, як Linux. Код невеликий, але все ж забезпечує повну функціональність. Адже перші версії Linux були натхненні Minix.
Звичайно, у Minix є менша технічна підтримка в наші дні. І що? Це добро! Сучасні комп’ютери дуже добре віртуалізуються. Використовуйте це на свою користь: VM для запуску Minix настільки легкий, що може зробити проблему розвитку.
Якщо ваш проект полягає в створенні операційної системи, ви можете зробити гірше, ніж почати з вивчення Minix. Ви також можете придбати та прочитати книгу, яку Мінікс написав у супроводі " Сучасні операційні системи Ендрю Таненбаума ".
Ви також повинні встановити цілі та точно визначити свої умови . Якщо ваше власне визначення ОС - це Microsoft (ОС з графічним інтерфейсом та повним набором програмного забезпечення), можливо, ви будете дуже довгим проектом! Сотні тисяч людей працювали з 1960-х років, щоб звести нас там, де ми зараз є.
Нарешті, згадайте бойовий вигук комп'ютерного вченого: " ніколи не винаходити колесо! '(ми, звичайно, любимо робити винятки під час навчання. І для розваги :))