Nothing Special   »   [go: up one dir, main page]

セマフォ 【semaphore】

概要

セマフォ(semaphore)とは、コンピュータ並列処理う際、同時に実行されているプログラム間で資源(リソース)の排他制御同期う仕組みの一つ。当該資源のうち現在利用可能な数を表すのこと。

セマフォはコンピュータ上の共有資源について、利用可能な資源の数を指し示している。プログラムが資源を占有するときはセマフォのから1を減じ、処理が終わって解放する際には1を加える。セマフォが0のときは空いている資源がないため正のになるまで待機する。セマフォのを同じ資源に同時にアクセスできるプロセスの数として扱う場合もある。

資源を獲得しセマフォを減じる処理を「P操作」、資源を解放しセマフォを加える処理を「V操作」という。関数名などではP操作を「down」「wait」「acquire」「pend」などの語で、V操作を「up」「signal」「release」「post」などの語で表すことが多い。

セマフォによる同期

セマフォのの増減はどのプログラムからも常に可能であるため、同期処理に用いることもできる。例えば、一方のプロセスが共有資源に書き込んだデータをもう一方が読み込む処理について、書き込み側がセマフォを減じておくことで、書き込み処理が完了するまで読み込み側を待たせておくといった処理が可能となる。

セマフォとミューテックス

資源が複数ある場合を「計数セマフォ」あるいは「カウンティングセマフォ」と呼び、資源が一つの場合(が0と1に限られる)を「2進セマフォ」あるいは「バイナリセマフォ」という。バイナリセマフォは当該資源が利用可能か不可能かを表すと考えられ、特定の資源の競合を防止する「ミューテックス」(mutex)とほぼ同じ機能となる。

歴史

セマフォは1960年代に著名なコンピュータ科学者のエドガー・ダイクストラ(Edsger W. Dijkstra)氏が考案した手法で、英単語の “semaphore” の原義は鉄道の腕木式信号機である(「手旗信号」などの意味もある)。同じ線路に同時に複数の列車が侵入することを防ぐ信号の役割を排他制御になぞらえた名称となっている。

(2024.3.28更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる