現在、カーネルコードが実行中であることをハードウェアがどのように認識しているのか理解できません。いくつかのレジスタにメモリアドレス範囲を設定する必要があるかどうかは、これらのメモリアドレスの間のCPU、それがカーネルを実行していることを示します。x86プロセッサでハードウェア特権レベルを操作する方法
答えて
x86アーキテクチャでは、これはディスクリプタテーブルで実現されます。起動コードは、どのメモリ領域にどの特権があるかをCPUに知らせるテーブルをインストールします。メモリがアクセスされると、ハードウェアは、命令および/またはアクセス方法がアドレスの所定の記述子に対して有効であるかどうかをチェックする。
これは非常に基本的な説明です。これはかなり広い質問です。
いくつかの投稿とリンクはあなたが始めるために:
What are Ring 0 and Ring 3 in OS
http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/
を私はまた、これはそこにも詳細に記載されているように(無料で)インテルのマニュアルをダウンロードすることをお勧めします。
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
短い答えが好きだった。 –
CPUは、例外や割り込みのいずれかを介して上位モードに入ることができます。 CPUは、割り込みからの復帰命令を使用して下位モードに戻ります。
CPUは、プロセスステータスレジスタから実行中のモードを認識します。 オペレーティングシステムは、例外または割り込みのハンドラを実行しているときにカーネルモードであることを認識します。
オペレーティングシステムは、カーネルのアドレス範囲を定義するためにページテーブルを設定します。これらのテーブルは、CPUがカーネルモードでないときにアクセスから保護されるように設定されています。
- 1. php:各レベルで異なるレベルのアクセス権を持つ115レベルの階層を作る方法。
- 2. asp.netのWebサイトでユーザーの特権を作成する方法
- 3. プロセスの特権レベルを決めるのは何ですか?
- 4. x86ハードウェア割り込みがqemuで動作しません
- 5. Eclipse RCP:特定のページでOpenPreferencesActionを操作する方法は?
- 6. 異なるプロセッサ(x86アセンブリ)でコードを実行する
- 7. RavenDB:特定のドキュメントの操作を実行したいユーザの権限をチェックする方法
- 8. 特権レベルを "requireAdministrator"に設定するQt
- 9. x86プロセッサの整数除算アルゴリズム
- 10. Perlでファイルポインタを操作する方法
- 11. Mootoolsでフォームを操作する方法
- 12. GitHubでフォークを操作する方法
- 13. SparcとSolaris x86プロセッサのL2キャッシュサイズを取得するコマンド
- 14. Pythonの特定の操作に対するroot権限の削除
- 15. Berkeley DBは1つのプロセッサ操作のみをサポートします
- 16. プロセッサのモード、CPUの状態、CPUの特権レベルを変更するにはどうすればよいですか?
- 17. Symfony2でユーザ認証、権限、ユーザロールを操作するには?
- 18. 電話ハードウェアのosの制御レベル
- 19. 特定のユーザー操作を待つ方法
- 20. TFS:セキュリティ設定の操作権限
- 21. x86プロセッサで必要なフレームの最小数
- 22. tempdbトランザクションログファイルを操作する方法は?
- 23. .docファイルを操作する方法
- 24. DataSetを操作する方法
- 25. iPhone SDK:txtFieldを操作する方法
- 26. gSOAP操作を停止する方法
- 27. Androidクラスを操作する方法
- 28. Doctrine:コレクションを操作する方法は?
- 29. 特定のハードウェアをターゲットとするWindows CEオペレーティングシステムのエミュレータを作成する方法
- 30. Androidでレベル2のアクセス権を取得
どのCPU /アーキテクチャですか?それはハードウェア関連の問題です。 – Devolus
正確なタイトルを検索すると、「約206,000件の検索結果」が表示されます。 –
stackoverflowの質問をグーグルで検索すると、多くの結果が得られます。@MartinJames –