Чому ОС не можна написати на чистому C або C++?
Отже, теоретично ви можете написати ОС на чистому C або C++, але на практиці ви досить швидко натрапите на стіну.
Чому ОС не можна написати на чистому C або C++? Чому деякі частини кожної ОС написані в асемблері?
дозвольте мені розібрати це дуже простим способом.
перше. C/C++ є високорівневими (умовно кажучи)
- C і C++ є фантастичними, тому що вони дають вам великий контроль над пам’яттю та обладнанням. Але врешті-решт їм все одно потрібен рівень, який безпосередньо взаємодіє з процесором, регістрами та системним обладнанням. Ось де з’являється збірка.
друге. Бутстрапінг (Проблема курки та яйця)
- Перш ніж ваша ОС зможе запускати код C/C++, для налаштування потрібно вже запустити якийсь код . Коли ваш комп’ютер вмикається, процесор не розуміє C/C++. Він очікує необробленого машинного коду (у який перекладається збірка). Це означає:
- Завантажувач (крихітна програма, яка завантажує вашу ОС) зазвичай пишеться на асемблері .
- Рання ініціалізація (наприклад, налаштування стеку, регістрів і перемикання в захищений режим у x86) також потребує складання.
третє. Апаратне забезпечення потребує точності
- Не все в ОС є просто «логікою програмного забезпечення». Іноді потрібно поговорити безпосередньо з обладнанням:
- Коли пристрій (наприклад, клавіатура або жорсткий диск) потребує уваги, він надсилає сигнал переривання. Поводитися з цим швидше і чистіше при складанні.
- Перемикання контексту, коли ОС перемикається з одного процесу на інший, зберігає стан ЦП. Зробити це на C було б безладдям.
- Деякі операції центрального процесора не мають прямого еквівалента в C/C++ (наприклад, керування спеціальними регістрами), тому вам потрібна вбудована збірка.
Четверте. Продуктивність (оскільки швидкість має значення)
- Деякі низькорівневі частини ОС мають бути неймовірно швидкими. Збірка максимально наближена до металу, тому її часто використовують у:
- Процедури обслуговування переривань (ISR), вони мають бути блискавичними.
- Іноді для ефективного керування оперативною пам’яттю потрібна ручна настройка збірки.
- Оптимізовані системні виклики, міст між користувальницькими програмами та ядром ОС часто використовують збірку для мінімізації накладних витрат.
П'яте. Компілятори не ідеальні
- Компілятори C/C++ генерують хороший машинний код, але іноді вони додають непотрібних витрат. Коли ви пишете ОС, навіть кілька додаткових інструкцій можуть уповільнити роботу. Збірка дозволяє контролювати, що саме виконується.
Ви можете написати 99% ОС на C або C++, але вам все одно потрібна збірка для:
- Завантаження системи
- Спеціальні апаратні операції
- Високошвидкісний критичний код ( наприклад, переривання та керування пам'яттю )
- Пряме керування процесором
Мінімальна довжина коментаря 50 знаків.
Схожі новини:

Як Гугл боти обробляють JS?
Розуміння того, як пошукові системи вивчають, рендерують та індексують веб-сторінки, має вирішальне значення для оптимізації сайтів під пошукові системи. У міру змін у роботі пошукових систем

Як розпізнати відео, створене штучним інтелектом
Генеративний штучний інтелект заповнює Інтернет швидкими темпами, і поки ми зважуємо наслідки для освіти, енергії та людської творчості, це значно ускладнює довіру до всього, що з'являється в

Image Stack — інструмент CDN
Оптимізація зображень відіграє ключову роль у продуктивності веб-сайтів. Чим більше файлів, тим повільніше завантажується сторінка, а користувачам стає незручно з нею взаємодіяти. Як результат, у

ШІ навчений на штучному інтелекті, штампує сміття
Великі мовні моделі, такі як ті, що пропонують OpenAI та Google, як відомо, вимагають величезних запасів навчальних даних для роботи. Останні версії цих моделей вже прочісували більшу частину