Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> ペンディング信号と遮断信号

ペンディング信号と遮断信号

  

信号状態:信号'ペンディング'状態は、ある処理される前の信号に生成された信号にこの時間を参照し、信号'ブロッキング&'。信号が処理されないようにブロックすることを指すが、信号をブロックしないことを指す切り替えアクションです。ブロッキング'ここ容易と誤解される出口信号を遮断は、sigprocmask、睡眠、及びその後に睡眠中の出口信号を生成するが、終了信号が遮断され、このとき、(中国語&'と睡眠前APUE例状態は、実際には、スイッチの同様の動作、&'ように、スルー&'遮断;ではなく'遮断')は&'であるペンディング'状態、オフは、sigprocmaskと後睡眠出口は、出口信号は直ちに撤回&'、ブロッキングがオフに切り替えたとき、前の保留状態で生成されているので、信号切替遮断する。ペンディング'状態、これはは、sigprocmaskリターンを発生する前に、処理されます。要約:シグナルはブロックされて廃棄されませんが、処理されません。この状態を保留状態と呼びます。保留中の'ブロック解除した後、&'で信号が処理されます。

アクションが完了したブロッキングを解決するためにブロックされていないが、は、sigprocmaskリターンの前には、sigprocmaskを呼び出します。

関数は、sigprocmaskリターンをブロック解除する前に、それが保留中の信号を処理するために必要です。
INTは、sigprocmask(IN​​T方法、CONST sigset_t *セット、sigset_t * oset)
取得

INT sigpend(sigset_t *セット);. ---ペンディング信号> ----操作が完了する方法を決定する値は、のような

メモのブロックを解除、ブロック:保留中の信号が同じにすることはできません。信号は、


生成され、保留、および一度生成破棄されますされている場合。

もちろん、それがリアルタイムのシグナルであれば、それは別の問題です。リアルタイムシグナルは、同じ保留シグナルの倍数になる可能性があるためです。

信号のライフサイクル:信号の完全なライフサイクルのために(適切なハンドラに送信された信号が、完成している)、それは三つの重要な段階、4つの重要なイベントの3つの段階に分けることができます特性決定する:1つの信号出生; 2信号の登録がプロセスで完了し、完了のプロセスにおける3信号相殺4の信号処理関数が終了すると..... 2つの隣接するイベント間の時間間隔は、シグナルライフサイクルのフェーズを構成します。以下は、4つの事象の実際的意義を説明している。1.「出生」を知らせる。出生信号が発生する(ハードウェアの異常が検出されるような、タイマーが満了すると、呼出信号送信機能のkill()またはこのとき、sigqueue()など)イベントトリガを指します。ターゲット・プロセス"で

2信号、登録&ペンディング信号に関する本メンバーのプロセスにおいてtask_struct構造quotに;;プロセスデータ:保留中の構造体sigpending、構造体sigpending {構造体とき、sigqueue *ヘッド、**尾; sigset_t信号;};第1及び第2の部材は、鎖状構造のタイプとき、sigqueue向けられている(;情報信号チェーン"ペンディング;として"呼ぶ)エンドツーエンド、プロセスは第三の部材は、保留中のすべての信号であります次とき、sigqueue構造のセット、情報鎖構造の各々により運ば特定の情報信号を特徴づけるとき、sigqueue、及び点:構造体とき、sigqueue {次構造体のとき、sigqueue *;のsiginfo_t情報;};登録処理信号を参照信号値であります集中プロセスペンディング信号(第2部材sigpending構造sigset_t信号)に加え、信号によって搬送される情報は、構造とき、sigqueueペンディング信号情報鎖に予約されています。限り、信号などのプロセスは、これらの信号の存在を知っていたことを示す、信号を保留中のプロセスに焦点を当てたが、十分ではないに対処するための時間、または信号がブロックされているプロセスです。注意:信号をリアルタイムプロセスに送信されると、関係なく、シグナルがプロセスに登録されているかどうかの、もう一度、このため、信号が失われることはありませんので、リアルタイム信号とも呼ば"され登録されます。信頼性の高い信号"を;。これは、それが信号情報を登録するための構造を割り当て、構造が追加された信号は、それぞれのリアルタイム信号を受信し、同じリアルタイム保留工程複数とき、sigqueue構造を有する信号チェーン内の情報(プロセスを占めることができることを意味しその全ての信号は、ターゲット・プロセスの信号チェーン)の係属中の最後に登録され、リアルタイムで生まれ、信号がプロセスに登録されている場合、信号は、非リアルタイム処理に送られ、信号は、信号が得られ、破棄されますなくした。したがって、非リアルタイム信号は「信頼できない信号」とも呼ばれる。私たちは同じ信号がターゲット構造に登録されている見つけた場合、これは非リアルタイム情報保留中のシグナル・チェーン・プロセス中に、同じ信号を意味し、ほとんどのとき、sigqueueは、(1)、構造(非リアルタイムの誕生を知らせる占有しなくなりました保留中の信号処理は、同じ信号でない場合)、その後のプロセスに自身を登録し、(2);プロセスのためにサインアップし、同等のは、信号損失を、この信号の発生を知りません。

3.シグナルがプロセスに登録されていません。対象プロセスの実行中に、信号が保留されているかどうか(常にユーザ空間へのシステム空間から返された、このようなチェックを行う)を検出します。信号保留中の待ち時間が存在し、信号処理プロセスがブロックされていない場合、対応する操作信号処理関数の前に、それを除去し、信号チェーン構造内の保留中の信号占有を処理します。リアルタイムおよび非リアルタイム信号用の信号が保留信号とは異なる処理であるか否かを削除します。せいぜい信号情報・チェーンを保留中のとき、sigqueue構造がかかるため、その構造が解放された後、非リアルタイム信号の場合、信号は(信号キャンセルが完了した)プロセスを削除保留中の信号に焦点を当てるべきであるとのリアルタイム信号用すなわち、信号情報鎖ペンディング複数とき、sigqueue構造を占めることができるので、占有gqueue構造体の数との差のために扱われるべきである:それだけ(プロセスは一度だけ信号を受信する)とき、sigqueue構造をとる場合、信号は過程であるべきです保留中のシグナルセットの削除(シグナルログアウト完了)それ以外の場合、シグナルはプロセスの保留シグナルセット内で削除されません(シグナルログアウト完了)。シグナル対応処理機能を実行する前に、プロセスは最初にプロセス内のシグナルをログアウトしなければなりません。

4.信号の寿命が尽きます。プロセス信号の解除後、直ちに適切な信号処理機能を実行し、実装後に、この処理の影響は、完全なエンドに信号を送ります。注:1)シグナルを送信する機能(kill()やsigqueue()など)やシグナルのインストール機能(signal()やsigaction())に関係なく、シグナルが登録されているかどうか。最も一度登録信号、SIGRTMINとSIGRTMAX間の信号の信号値であれば処理を受けているとして登録されます)。プロセスを複数回とは、同じ信号、リアルタイムで、信号を受信した場合2)信号は、適切な信号処理機能をオフに書き込まれるが、この時間を終了し、プロセスに存在登録するたびに、非リアルタイム信号用彼は、信号が受信された回数に関係なく、唯一のプロセスで一度だけ登録し、信号を受信するとみなされると述べました。

Copyright © Windowsの知識 All Rights Reserved