/procファイルを使うででてきたセマフォについてめもっておいてみる。
まずはセマフォの簡単な概念から。
簡単に言えばある処理を、一定の数以上の同時処理を防ぐということ。
まずはセマフォの簡単な概念から。
簡単に言えばある処理を、一定の数以上の同時処理を防ぐということ。
(セマフォ資源:○○○○○)
→(セマフォ確保)→処理A→(セマフォ解放)→
こんな処理があったとして、プロセス1が処理Aに入ると
(セマフォ資源:●○○○○)
→(セマフォ確保)→処理A→(セマフォ解放)→
○プロセス1(処理中)
こんな感じ。
プロセス1は(セマフォ確保)でセマフォ資源○をもらって、処理Aを開始します。
で、ここにさらにプロセス2〜5が入ります。
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
○プロセス1(処理中)
○プロセス2(処理中)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
こんな感じになる。
で、ここにさらにプロセス6がくると・・・
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス6(待ち)○プロセス1(処理中)
○プロセス2(処理中)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
プロセス6はセマフォを確保しようとしたけど、セマフォ資源が空っぽなので
待ちに入ります。ここにプロセス7がくると・・・
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス6(待ち)○プロセス1(処理中)
・プロセス7(待ち)○プロセス2(処理中)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
こうなります。
さて、プロセス1が処理Aを終えると、(セマフォ解放)にいきます。
(セマフォ資源:●●●●○)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス6(待ち)○プロセス2(処理中)・プロセス1(終了)
・プロセス7(待ち)○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
こうなります。
セマフォが解放されたので、プロセス6が確保できます。
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス7(待ち)○プロセス2(処理中)・プロセス1(終了)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
○プロセス6(処理中)
こうなるわけです。
もちろん、この後はプロセス2も処理が終わって、セマフォを解放して
プロセス7がセマフォを確保して、処理Aに入ると。
以上、セマフォの説明でした。
→(セマフォ確保)→処理A→(セマフォ解放)→
こんな処理があったとして、プロセス1が処理Aに入ると
(セマフォ資源:●○○○○)
→(セマフォ確保)→処理A→(セマフォ解放)→
○プロセス1(処理中)
こんな感じ。
プロセス1は(セマフォ確保)でセマフォ資源○をもらって、処理Aを開始します。
で、ここにさらにプロセス2〜5が入ります。
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
○プロセス1(処理中)
○プロセス2(処理中)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
こんな感じになる。
で、ここにさらにプロセス6がくると・・・
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス6(待ち)○プロセス1(処理中)
○プロセス2(処理中)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
プロセス6はセマフォを確保しようとしたけど、セマフォ資源が空っぽなので
待ちに入ります。ここにプロセス7がくると・・・
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス6(待ち)○プロセス1(処理中)
・プロセス7(待ち)○プロセス2(処理中)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
こうなります。
さて、プロセス1が処理Aを終えると、(セマフォ解放)にいきます。
(セマフォ資源:●●●●○)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス6(待ち)○プロセス2(処理中)・プロセス1(終了)
・プロセス7(待ち)○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
こうなります。
セマフォが解放されたので、プロセス6が確保できます。
(セマフォ資源:●●●●●)
→(セマフォ確保)→処理A→(セマフォ解放)→
・プロセス7(待ち)○プロセス2(処理中)・プロセス1(終了)
○プロセス3(処理中)
○プロセス4(処理中)
○プロセス5(処理中)
○プロセス6(処理中)
こうなるわけです。
もちろん、この後はプロセス2も処理が終わって、セマフォを解放して
プロセス7がセマフォを確保して、処理Aに入ると。
以上、セマフォの説明でした。
Trackbacks.
-
*スポンサーサイト*セマフォをつかう(その1)* のトラックバックURLはこちら
- http://rosara.blog4.fc2.com/tb.php/12-57914163
