3

私はかなりの数年間プログラミングをしていますが、正確に理解できなかったことが1つあります。

プログラミング言語には2種類あります。コンパイルされたものと解釈されたもの、コンパイルされたものは、実行する前にまず解釈された言語にコンパイルする必要があります。

たとえば、C/C++ は、実行する前にまず機械語にコンパイルする必要があります。

そしてここで私の質問があります: コンパイルされた C/C++ Windows/Linux プログラムを実際に実行するのは誰ですか? CPU によって直接解釈されますか、それとも OS カーネルがそれを実行してコマンドを CPU に渡しますか?

また、CPU が直接実行する場合、Windows カーネルはどのようにしていくつかの呼び出しを拒否できるのでしょうか? そうでなければ、カーネルが機械語も理解するということですか、それともカーネル以外の C/C++ プログラムは機械語にコンパイルされないということですか?

4

1 に答える 1

5

プログラムは CPU 上で実行されます。CPU にはさまざまなレベルの特権があり、いわゆる「特権命令」はカーネルによってのみ実行される可能性があります。これが、オペレーティング システムによってセキュリティが強化される方法です。

于 2014-04-28T10:34:50.157 に答える