セマフォ
semaphore
排他制御を実現するしくみ
共有リソースにアクセス可能なプロセス数をカウントすることで制御する
セマフォを用いた排他制御の流れ:
プロセスはリソースへのアクセス直前でセマフォの値を1減らす
アクセスが終わったらセマフォの値を1増やす
セマフォが1以上でなければ(0のとき)プロセスはリソースに対してアクセスできない
カウンティングセマフォ
バイナリセマフォ
セマフォの値は0または1で、lockまたはunlockを表現する
ミューテックス
システムコール(System V セマフォ?)
セマフォ用メモリ領域の確保
semget 関数
初期設定
semctl 関数
操作
semop 関数
デッドロック
deadlock
処理の終了を待ち続けてしまう状態
複数のセマフォを利用する場合など
c.f. 食事する哲学者の問題
tips
エドガー・ダイクストラ考案
本来の語義は「視覚による通信・信号」全般を指し、腕木通信や、それから派生した鉄道の腕木信号(や自動車の方向指示器)、手旗信号などが含まれる。
セマフォ - Wikipedia