IT用語-トランザクション関連

ロックベース同期制御における代表的な用語

ミューテックス

ミューテックス(Mutex)とは、クリティカルセクションでアトミック性を確保するための同期機構の一種。Mutexという語はMUTual EXclusion(相互排他)の略である。セマフォクリティカルセクション排他制御に用いる時、セマフォでは(初期値が1でなければ)複数のタスクがクリティカルセクションへ入ることを許可するのに対し、ミューテックスでは同時に一つのタスクしかクリティカルセクションに入ることを許されない(ここで言うタスクとは、スレッドまたはプロセスを指す)。挙動はセマフォ変数の初期値を1にする事と等価。

セマフォ

セマフォ(Semaphore)は、コンピュータにおいて、古典的でかつ現在も利用される同期機構の一種。

 Mutexでは、資源利用可能なタスクは1つのみに限定されるが、セマフォの場合は資源利用可能なタスク数をセマフォ変数として任意に設定できる。

ロックベース同期制御の問題点

  • ロックベース同期制御では、資源を獲得しようとするタスクが多ければ多いほど待ちが発生し性能が劣化してしまう。
  • デッドロックを考慮して処理を実装する必要がある。実装、テストにコストがかかる。


上記の性能問題を解決するひとつの手段として「ソフトウェアトランザクショナルメモリ」がある。

ソフトウェアトランザクショナルメモリ

データベーストランザクションに似た並行性制御機構であり、並列計算を行う際の共有メモリへのアクセス法である。この機構はロックベースの同期の代替手段として機能し、普通はロックフリーな方法で実装される。


以下のような流れで処理される。楽観ロックみたいなもんだ。

http://d.hatena.ne.jp/hayamiz/20080529/1212043766
transactional memoryにおけるトランザクション

  1. トランザクション開始
  2. 共有資源の読み書き
  3. トランザクション中で操作したメモリが、
     トランザクション開始時点から
     (他のトランザクションによって)更新されているかチェック
          * 更新なし:コミット&トランザクション成功
          * 更新あり:ロールバック&トランザクション失敗

ソフトウェアトランザクショナルメモリ方式の問題点

 このようなアルゴリズムは False Positive(偽陽性)という問題(あるいは ABA問題)に対処しなければならない。古い値を読み取った後、CAS命令を実行するまでの間に、そのメモリ位置の内容が複数回書き換えられて偶然もとの古い値と同じビットパターンになっている可能性がある。

→比較するデータに一意性を持たせることによって判別は可能。