背景
Linuxカーネルモードとユーザーモードに、カーネルモードユーザーモードは、システムコール(システムコール)によって行われます。
他の機能のサポートを提供しながら、Linuxカーネルのシステムへのユーザ空間ライブラリglibcパッケージには、GNU Cライブラリのライブラリファイルは、(ANSI&POSIX C言語の標準との互換性)を呼び出します。
アプリケーションは通常、直接Linuxカーネルのシステムコールインタフェースを呼び出すが、Linuxカーネルのシステムコールインタフェース間接的なglibcライブラリパッケージによって呼び出されますされていません。
セマフォメカニズム
セマフォメカニズムの原則上のLinuxは、私は「プログラミング環境のUnixアドバンスド」第10章を読んで、このブログはその原則だけの簡単な紹介ですお勧めします。
セマフォは、Linuxカーネルとアプリケーション間の非同期通信のために、ソフト割り込みです。
Linuxは、各セマフォは、4バイトの整数データで表され、セマフォ約380種類をサポートしています。あなたは男信号によって記載されているすべてのセマフォを表示することができます。セマフォのUnixから継承されている請求項32に第1号は、33〜64は、Linuxカーネルセマフォで定義されています。
信号処理機能の量は、アプリケーション内で定義することができますので、ノーカスタムの場合、セマフォリンクデフォルトのハンドラではglibc。また、アプリケーションは指定されたセマフォをブロックすることができます。
セマフォトリガー状況、3があります。
Linuxカーネルは、アプリケーションにアプリケーションに送信特定の信号の量を異常を検出する)1の後に、アプリケーションは、セマフォ、セマフォコールハンドラを捕捉します。
2)Linuxカーネルと有名なセグメンテーションフォールト、シグナルハンドラ関数を呼び出し、セマフォをキャプチャするアプリケーションとして、発生したイベントのためにアプリケーションに通知し、理由は内部イベントのアプリケーションに固有の信号を送信します。
3)Linuxカーネルは、アプリケーションがセマフォ、セマフォコールハンドラをキャプチャするアプリケーションに固有の信号を送信する、などのCtrl + Cは、Ctrl + Z、などの外部イベントを検出します。
共通のセマフォ紹介
コメントアクション標準信号
────────────────────────────────────────────── ──────────────────────────
SIGABRTの 中止からp1990コア信号ABORT(3) コールアボート()システム、通常はglibcライブラリによって生成SIGABRT信号アプリケーション例外を検出し、アクティブトリガ
SIGALRMの p1990用語からタイマ信号アラーム(2)
SIGBUS P2001コアバスエラー(不良メモリアクセス)SIGBUSアドレスが例えば奇数アドレスとして、リードと整列されていない通常ので、バスアクセスエラーを意味し、
SIGCHLD IGN p1990子供が停止したか、子スレッドが実行を終了するときに終了SIGCHLD信号がメイン処理の量に送られ
SIGCLDを - IGNの同義語SIGCHLD
SIGCONT P1990続き停止続行
SIGEMT -タームエミュレータトラップ
SIGFPEの p1990コア浮動小数点例外
SIGHUPの p1990用語ハングアップは、制御端子で検出
またはプロセス制御の死
SIGILLの 暴走または互換性のない場合であってもよいp1990コア不当命令SIGILL不正コマンドエラーをコード
SIGINFO -の同義語用SIGPWRの
SIGINT からp1990キーボード期割り込み
SIGIO -中期I / O今可能(4.2BSD)
SIGIOT -コアIOTトラップ。同義語SIGABRT
SIGKILL P1990用語キル信号SIGKILL通常是通过殺す-9 <PID>手动杀死进程时触发的信号量;
SIGLOSTは -タームファイルのロックが失われた(未使用)
SIGPIPE P1990用語ブロークンパイプは:なしでパイプに書き込む
リーダ; 参照パイプ(7)
SIGPOLL P2001用語ポーリング可能イベント(SYS V)。
同義語SIGIO
SIGPROF P2001用語プロファイリングタイマーが満了し
SIGPWR 用語停電(システムV) -
SIGQUITを P1990コアキーボードから終了
SIGSEGV 、p1990コア無効なメモリ参照SIGSEGV通常、スタックオーバーフロー、野生ポインタまたはヌルポインタ場合に、不正なメモリアクセスを意味
SIGSTKFLTを コプロセッサの長期スタックフォルト(未使用) -
SIGSTOP 停止停止プロセスp1990
SIGTSTP 停止p1990停止端末ATは、型付き
SIGSYS (SVr4のための)悪いシステムコールコアのP2001と、
関連項目(2)Seccompを
SIGTERMの 終端信号p1990用語
SIGTRAP P2001コアをトレース/ブレークポイントトラップSIGTRAPセマフォは、典型的には、同様に挿入されたGDBデバッガブレークポイントとして、デバッグのために計測されます
SIGTTIN バックグラウンド処理のためのP1990停止ターミナル入力
SIGTTOU バックグラウンド処理のためのP1990停止ターミナル出力
SIGUNUSED -と同義コアSIGSYS
SIGURG ソケットにP2001 IGN緊急条件(4.2BSD)
SIGUSR1 P1990用語ユーザー定義シグナル1
SIGUSR2 P1990用語ユーザ定義信号2
SIGVTALRM P2001用語仮想目覚まし時計(4.2BSD)
SIGXCPU P2001コアCPU時間制限を超過(4.2BSD)。
参照(2)はsetrlimitを
SIGXFSZ P2001コアファイルサイズの上限は(4.2BSD)を超え、
参照はsetrlimitを(2)
SIGWINCH - IGNウィンドウリサイズ信号(4.3BSD、日)
高度なセマフォ
カスタムLinuxでは、シグナルハンドラ関数を操作量指示信号を遮断、参照について「:シグナルシステムプログラミング」
セマフォ・ハンドラは、例外がアプリケーションを発生したとき、それは親関数のスタックを再利用しますので、信号の処理量は、通常の関数呼び出しではありませんので、基本的に修理やデバッグ機構であり、例外ハンドラセマフォ場合に発生しますシステムが対処する方法はありません、そのため、信号処理機能の量は、安全性と信頼性でなければなりません。
以来量として定義されるシグナルハンドラは、(デッドロックを防ぐために)セマフォ同期を行うことはできませんが、コール・フォークでgdbデバッガを再生したり、ディスクにログファイルを書き込むことができます。