注目の書籍

好評発売中!

知識ゼロから始めるLinuxサーバーの作り方

Linux初心者でも
本格 サーバーが“即席”で 完成!自宅サーバー
クラウド化も!

必聴講座ご紹介

Cloud Days Tokyo 2012
クラウド時代を勝ち抜く企業戦略を考える

エムオーテックス


Cloud Days Tokyo 2012
クラウド時代の企業インフラとユーザー環境の姿

ヴイエムウェア


Cloud Days Osaka 2012
クラウドでIT維新を〜ビジネスを加速させるベストプラクティス

アマゾン データ サービス ジャパン

オープンソース/Linux

Linuxキーワード

日経Linux

セマフォ

【Semaphore】

2006/06/05
麻生 二郎=日経Linux
図1 セマフォを用いた排他制御(プロセスAとプロセスBが同じ資源を利用している例)
図1 セマフォを用いた排他制御(プロセスAとプロセスBが同じ資源を利用している例)
[画像のクリックで拡大表示]

 Linuxで用いられる,一般的な排他制御の機構です。プロセスが利用する資源の排他処理などに利用されます。ちなみに「Semaphore」を日本語に訳すと,「腕木信号機」になります。

 セマフォは,資源の個数を管理するカウンタ(整数値)です。排他制御が必要な資源ごとに1つのセマフォ(カウンタ)を用意し,そのセマフォには,初期値として資源の個数をセットします。

 その資源を使った(獲得した)場合にはセマフォを「1」減らします。逆に資源を使い終わった(返却した)場合は,セマフォを「1」増やします。セマフォが「0」になった場合には,利用可能な資源がないことを示しています。

 例えば,プロセスが資源を要求したときに,その資源のセマフォが「1」以上であれば資源を割り当てます。もし,セマフォが「0」であれば,使える資源がないので,割り当てないようにします。別のプロセスが使っていた資源が返却されることで,割り当てられる状態(セマフォが「1」以上)になったら,割り当てを開始します。こうすることで,資源の排他制御を実現します(図1)。

 仕組みは簡単ですが,セマフォ自体に対しても排他制御が必要です。セマフォの値を増減できるのは,一度に1つの処理でなければなりません。

連載新着連載目次へ >>

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介