0

§5.1.2.3.5

5 抽象マシンの処理がシグナルの受信によって中断された場合、浮動小数点環境の状態と同様に、ロックフリーのアトミック オブジェクトでも型 volatile sig_atomic_t でもないオブジェクトの値は指定されません。ハンドラーによって変更され、ロックフリーのアトミック オブジェクトでも型 volatile sig_atomic_t でもないオブジェクトの値は、ハンドラーによって変更され、復元されない場合の浮動小数点環境の状態と同様に、ハンドラーが終了すると不確定になります。元の状態に。

(私のものを強調)

これは、ハードウェア/ソフトウェア割り込みの場合、割り込みハンドラーが浮動小数点計算を実行すると (たとえば、ローカル スタック変数で)、中断されたプロセスが一貫性のない状態のままになり、浮動小数点計算を再開する必要があることを意味します。進行中だったこと。それはそれであり、その意味は何ですか?どのように「コンテキストを復元」しますか?

4

2 に答える 2

0

サイド カーネルで浮動小数点演算を実行できると思います。ただし、これ(コード)がkernel_fpu_begin()/kernel_fpu_end()で囲まれている場合、カーネルは特定の関数を呼び出すことでそれをサポートします。これらの関数は、fpu コンテキストの保存と復元を処理します。また、 preempt_disable()/preempt_enable()を呼び出します。これは、スリープやページ フォールトなどがないことを意味します。

割り込みが発生するたびに、現在実行中のプロセスの制御レジスタとその他の情報が保存されます。&カーネル割り込みが機能します。プロセスは現在の命令サイクルが完了した後にのみ中断されるため、現在実行中のプロセスがどの状態であったかは問題ではありません。次に、すべての情報を保存し、コンテキストの切り替えが発生します

コンテキストの復元中に、中断されたプロセスの保存された制御情報がスタックに復元され、次の命令が実行されます!!!

于 2013-04-29T06:57:30.503 に答える