FC2ブログ
メモ帳
メモ帳
スポンサーサイト
--年--月--日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
セマフォをつかう(その1)
2007年05月18日 (金) 10:53 | 編集
/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に入ると。
以上、セマフォの説明でした。
コメント
この記事へのコメント
コメントを投稿する
URL :
コメント :
パスワード :
秘密 : 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004 Powered By FC2 allrights reserved. / template: sukechan
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。