2016-06-20 5 views
0

以下の操作のうちどれをカーネルモードでのみ実行するかを決定するのに役立ちます。私はSilberschatzの "Operating System Concepts"で答えを見つけようとしましたが、それはまだ私には不透明です。 ここで彼らは、カーネルモードやユーザーモードで実行する必要があるかどうかを決定するための操作のリストは、次のとおりです。オペレーティングシステム:カーネルモードの操作

(1) disable interrupts detection 
(2) clear memory 
(3) switch from the user mode to the kernel mode 
(4) read the state of the clock/timer 
(5) determine/program timer. 

答えて

2

常識です:

  • 無効に割り込みがで起こるべきではありません特権を持たないコンテキストなので、通常は許可しません。
  • メモリをクリアすることは特権操作ではないため、いずれのコンテキスト(メモリが解放されている場合は他のコンテキストからのアクセスを許可する前に内容が機密かどうかを判断する必要があります。常に内容をクリアすることは安全な賭けです)。
  • ユーザモードからカーネルモードへの切り替えは、明らかにユーザモードでのみ可能です。
  • クロックを読む:ハードウェアクロックについて言えば、メモリマップされたレジスタを提供する場合、マップされた領域に何も敏感でない限り、ユーザーモードから安全にアクセスできます(それは、ハードウェアによって異なります)。ソフトウェアなら、何でもできる。
  • タイマのプログラミングは、実装に応じていずれかのコンテキストで発生する可能性があります。たとえば、リアルタイムスケジューリングコンテキストは、ハードウェアタイマーをプログラミングして割り込みをルーティングすることによって、タイマを完全にユーザモードで実装できますカーネルモードが必要な場合でも1回)、またはソフトウェアですべてを実装します。リアルタイムでない場合、ユーザ空間で完全にプログラミングすることも可能であるが、実装はイベントをトリガするためにカーネル側のヘルパー(すなわち、リアルタイムタスクまたは割り込み)を必要とする。
関連する問題