Как операционная система представляет язык C для написания ядра - PullRequest
0 голосов
/ 18 августа 2011

Происходит ли это введение на этапе NTLDR, потому что оно должно быть введено, то есть ядро ​​не написано на C?Я думал, что компьютерным языком, который был известен только до этого, был язык ассемблера, который жестко закодирован в микрокоде процессора?

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

Первые операционные системы были написаны на ассемблере. Язык C был создан, потому что его первым вариантом использования было создание UNIX. Компилятор C был написан для обработки этого кода и создания сборки, понятной системе (конечно, компилятор был написан на ассемблере). Эффект снежки оттуда. Теперь у нас есть более мощная система для написания кода, поэтому мы, конечно, можем писать лучшие компиляторы и лучшее программное обеспечение с более высокоуровневым подходом и позволить компилятору сделать всю работу за нас.

Что касается Windows, то это была перезапись операционной системы под названием QDOS, написанная на языке C.

Sidenote: операционным системам по-прежнему требуется код сборки, чтобы функционировать, поскольку требуется много аппаратно-независимых фрагментов информации (например, чтение CR2 на странице сбоя в x86). Загрузчики и BIOS (более старые) написаны на ассемблере, потому что они очень специфичны для аппаратного обеспечения и необходимы для настройки таких вещей, как прерывания и указатель стека.

1 голос
/ 18 августа 2011

C - это скомпилированный язык, в отличие от интерпретируемого языка. Программы на C, а также библиотека времени выполнения C скомпилированы в машинный код, поэтому для их выполнения не требуется загрузка среды выполнения, такой как интерпретатор или виртуальная машина.

Точка входа скомпилированной программы (включая ядро) вызовет ее библиотеку времени выполнения и выполнит любую инициализацию, необходимую перед выполнением программы, но это весь машинный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...