カーネルがすべてのハードウェアへの無制限のアクセスを許可する特権モードで実行されることが言及されている Linux デバイス ドライバーについて読んでいます。ユーザープログラムがこのモードで CPU を設定できないようにするにはどうすればよいですか?
1625 次
2 に答える
6
このことを理解したい場合、それにアプローチするための最良の方法の 1 つは、Linux ブート プロセスのカーネル ブート プロセスに従ってコードを実行することです。たとえば、x86 アーキテクチャで実行されている Linux があるとします。ブート時に何が起こるかというと、BIOS がブート ローダーに制御を渡します。tern のブートローダーは、カーネルに制御を渡します。
次に、カーネルはプロセスを経て起動します。最初は、ほとんどのものはアセンブリ言語で書かれています - /arch/x86/boot/header.S を参照してください
次に、/arch/x86/boot/main.c に移動します。メイン関数の最後に呼び出しが表示されますgo_to_protected_mode()
その機能は /arch/x86/boot/pm.c で確認できます
したがって、カーネルを起動すると、それが CPU のゲートウェイになり、カーネルが提供する仮想マシンでコードが実行されます。ユーザー プログラムは、この仮想マシンを介してすべてを実行する必要があるため、他のモードで実行することはできません。
于 2012-07-05T15:18:06.113 に答える