2012-04-09 2 views

答えて

6

このようなことを理解したい場合は、コードを使ってLinuxブートプロセスKernel Boot Processに従うことをお勧めします。たとえば、Linuxをx86アーキテクチャ上で実行しているとします。起動時に起こることは、BIOSがブートローダに制御権を与えることです。 ternのブートローダはカーネルを制御します。

その後、カーネルはブートプロセスを実行します。最初はほとんどのものがアセンブリ言語で書かれています - /arch/x86/boot/header.Sを参照してください。

次に、/arch/x86/boot/main.cに行きます。右のメイン関数の最後に、あなたは、あなたがカーネルをブート一度あなたが、

ので/arch/x86/boot/pm.cでその機能を見ることができ、それをgo_to_protected_mode()

への呼び出しが表示されますCPUのゲートウェイになり、コードはカーネルが提供する仮想マシンで実行されます。ユーザプログラムは、この仮想マシンを介してすべてを実行しなければならないという事実によって、他のモードで実行することはできません。

1

ユーザモードでは、何らかの割り込みを発生させるだけで特権モードを変更できます。割り込みの目的は、プログラムの特権モードを変更することです。結論:自分自身を中断することで、ユーザモードプログラムは特権を昇格させることができず、独自のコードを実行し続けることができません....これは、この素晴らしいセキュリティ機構が作動する。

ビリミック

関連する問題