Linux本 8章

シグナルとは、カーネルやプロセスがプ
ロセスに対し、プロセス内外で起きた同
期/非同期事象をプロセスに通知する仕組
み
プロセスに配送されると、動作を一旦中
断し、指定したシグナルハンドラが実行
同期シグナルはメモリ保護例外や不正命
令実行など
シグナル配送待ちかどうかかどうか調
べ、配送待ちであればシグナル配送処理
を行う
シグナル番号から小さいものから取り出
す
非同期シグナルはインターバルタイ
マー、非同期I/O完了通知など
シグナル配送フラグのチェック
シグナルは用途によって複数種あり、シ
グナル番号とシグナル名が割り当てられ
ている
配送待ちシグナルの取得
同期シグナルはその事象を引き起こした
スレッドに配送
シグナル配送処理
シグナル配送手順
シグナルハンドラ呼出用スタックフレー
ムを作成
実行再開箇所をシグナルハンドラに、ス
タック位置を作成したスタックフレーム
に
Linux本 8章 - シグナル処理
シグナル機構の実装
シグナル配送先
非同期シグナルはスレッドグループに配
送
カーネルスタックに退避されているプロ
セスのレジスタ情報を書き換え
シグナル配送を抑制するための仕組み
シグナルのマスク
実行再開
シグナルマスク時に複数回シグナルが生
成されても、一度しか配送されない
シグナルマスクはスレッドごとに設定
スレッドとシグナルハンドラ/マスク
シグナルハンドラはスレッドグループに
対して設定
現状のシグナルの欠点を解決するための
仕組み
リアルタイムシグナル
シグナル生成とシグナル配送の回数を同
じに出来るなど