パーソナルツール
現在の場所: ホーム LTS 並行システムの表現手法 クリティカルセクション
文書操作

パターン2: クリティカルセクション

作成者 takeuchi 最終変更日時 2008年11月24日 20時10分

このパターンは,クリティカルセクションを扱うモデルをわかりやすく表現します.クリティカルセクションとは,計算機上において単一のリソースに対して,複数の処理が同時期に実行されると破綻をきたす部分を指します.

このパターンで表せる例として,"複数人がリソースを共有する問題"や,"Mutex" などがあげられます.

サンプル

太郎と花子が1台のプリンタを共有する,という問題の FSP と LTS を以下に表します.

RESOURCE = (acquire->release->RESOURCE).
USER = (acquire->use->release->USER).
||RESOURCE_SHARE = (tarou:USER || hanako:USER || {tarou,hanako}::RESOURCE).

流れは以下のとおり.

  1. USER が資源を要求する.
  2. 使用する.
  3. 資源を解放する.

しかし,上の LTS ではどこがクリティカルセクションなのかがわかりにくい.よって,以下の図のように配置しなおすことによって,リソースを共有するアクション,開放するアクション,クリティカルセクション部のアクションをわかりやすくなる.