2016-09-16 7 views

答えて

3

これらの日、それはリアルタイム信号セマンティクス対通常信号の意味としてこれらのフレーズと良いかもしれません。

初期のUNIXシステムの中には、信号をブロックする機能(保留中)がないため、信号が「失われている」という意味で信頼性が低いものがありました。たとえば、信号ハンドラによってwake_up_flagが設定されていることを確認した後、pause()にコールするコードは、チェックの直後にのポーズ()の前に信号が到着した場合にウェイクアップ命令を逃す可能性があります。信号のブロッキングとsigpause()は、このような状況を確実に改善します。

signal()のセマンティクスは、ハンドラへの入力時にユーザー定義シグナルハンドラがSIG_DFLにリセットされたことを意味します。通常のテクニックは、シグナルハンドラの中にユーザ定義の配置を直ちに再インストールすることでした。しかし、シグナルをブロックすることはできないため、プログラムが再びシグナルを出し、SIG_DFLの結果を被る競合状態が発生しました。最新のシステムでは、sigaction()はこの状況を確実に解決します。

したがって、「信頼できる」信号は、最近の私たちのほとんどが通常の信号意味論と考えるものです。 、

POSIX realtime signalsは、例えば、通常の信号の上にいくつかの機能を追加する新しい範囲を(ここでは詳細については、私は、特に10.4「信頼できない信号を」§、スティーブンスとRagoによるUNIX環境に高度なプログラミングをお勧めします) (SIGRTMIN ... SIGRTMAX)、保留中の信号をキューに入れる能力、および信号を使用してデータの語を提供する能力を提供します。

関連する問題