- [[Mutex]]の操作 Lockが満たすべき基準 [https://csis.pace.edu/~marchese/CS865/Papers/bershad00289730.pdf](https://csis.pace.edu/~marchese/CS865/Papers/bershad00289730.pdf) より (TODO: 読む(kekeho)) - ロックの取得は、関連するShared dataのすべての更新が完了した後にのみ取得できる - ロックへの排他的アクセスは、そのロックへの排他的または非排他的なアクセスを他のプロセスが持たない場合にのみ成功する - ロックを持つプロセスは常に1つ - ロックへの非排他的なアクセスは、ロックの関連データの更新を含む、以前の排他的アクセスが完了した場合にのみ許可される ## Lockの種類(モード) - [[共有ロック]]: Read Only. 共有ロックを取得したスレッドは、読むことはできるが書くことはできない - [[排他ロック]]: Read-Write. 共有ロックを取得したスレッドは、読み書き両方できる ## Lockの互換性 - $A, B$を任意のLockモードとする。トランザクション$T_i$がモード$A$のロックを要求し、そのLockに対してトランザクション$T_j$がモード$B$のロックを保持しているとする。$T_i$がモード$A$のLockを即時に取得できる場合、モード$A$と$B$は**互換性**(Compatibility)があるという - 共有-共有の組み合わせしか互換性がない(共存できない) - 互換性がない場合、解放されるまで待たないといけない | | Shared | Exclusive | | ---------- | ------ | --------- | | Shared | true | false | | Excluseive | false | false |