Я программирую уже несколько лет, но есть одна вещь, которую я никогда не понимал точно:
Есть 2 типа языков программирования. Скомпилированные и интерпретированные, в то время как скомпилированные сначала должны быть скомпилированы на интерпретируемый язык, прежде чем они могут быть выполнены.
Например, C / C ++ необходимо сначала скомпилировать на машинном языке, прежде чем он сможет быть выполнен.
И тут возникает мой вопрос: кто на самом деле запускает скомпилированную программу C / C ++ для Windows / Linux? Это интерпретируется непосредственно процессором, или ядро ОС выполняет его и передает команды в процессор?
И если процессор выполняет его напрямую, как ядро Windows может отклонить некоторые вызовы? Иначе, означает ли это, что Ядро также понимает машинный язык или программы не на ядре C / C ++ не компилируются с машинным языком?
Программа работает на процессоре. Процессор имеет разные уровни привилегий, так называемые «привилегированные инструкции» могут выполняться только ядром — именно так безопасность обеспечивается операционной системой.