2014-12-08 1 views
0

Ну, я думаю, что я задал этот вопрос раньше, но я хочу быть 100% уверен, что я получил это право,Ядро ввода/вывода

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

Кроме того, ядро ​​рассматривается как виртуальная машина?

+0

Сначала прочитайте ответы на похожие вопросы [Что происходит, когда компьютерная программа работает?] (Http://stackoverflow.com/questions/5162580/what-happens-when-a-computer-program-runs) и [Что происходит когда вы запускаете программу?] (http://stackoverflow.com/questions/1204078/what-happens-when-you-run-a-program) и [Как выполняется программа? Где операционные системы вступают в игру?] (Http://stackoverflow.com/questions/1599434/how-does-program-execute-where-does-the-operating-systems-come-into-play), а затем уточнить ваш собственный вопрос, чтобы сделать его менее широким (и устранить те части, которые вы уже понимаете) – xmojmr

ответ

1

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

Ядро - это ядро ​​операционной системы. В традиционном дизайне он отвечает за управление памятью, ввод-вывод, обработку прерываний и многое другое. Чтобы реализовать свои функциональные возможности, библиотека C должна вызывать функции ядра. Все это управляется самим компилятором, хотя он может внутренне взаимодействовать с ядром. Следовательно, существует большая роль компилятора.

Составленный код может быть в виде объектного кода или бинарных исполняемых файлов, то есть, program.obj на древней ОС Windows и a.out на древних * NIX машин или исполняемого файла, как в текущей ОС Windows, Linux и т.д.

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

Кроме того, ядро ​​рассматривается как av irtual machine?

Кроме того, ваше ядро ​​является основным компонентом настоящей машины! Итак, как это может быть сама виртуальная машина?

Итак, ясно ответ --- NO!

1

Нет, это не так. Короче говоря: единственными заданиями ядра являются создание новой структуры блока управления, которая представляет новый процесс, и которая внутренне будет вставлена ​​в планировщик, который должен быть запланирован в соответствии с определенными политиками.

После этого происходит активация двоичного изображения: ядро ​​создает новое виртуальное пространство для процесса, создает некоторые исполняемые страницы для хранения двоичного кода исполняемого файла, некоторые другие страницы для данных и начинает выполнение основного(). Он выполнит любой двоичный код в исполняемом файле без каких-либо проверок.

Учтите, что это не так просто, есть еще много операций относительно этого процесса активации бинарного изображения. Я советую вам прочитать некоторую книгу операционной системы, которая является вводной для этих концепций, а затем книгу о внутренних функциях операционной системы, чтобы лучше понять, что на самом деле происходит. Вы также можете прочитать исходный код ядра, если он доступен.

Ядро НЕ виртуальная машина, это две совершенно разные концепции.

Смежные вопросы