テスト・アンド・セット命令

あるメモリ位置へ値をセットするコンピュータの(ハードウェア側?)の命令。
セットする前に値をテストする。
値をテストし、ダメだったら値を書き込まない。OKだったら値を書き込む。
これらの動作をアトミックに行う。
他のプロセサのメモリアクセスを排除した状態で行う???
(ここらの記述がググった限りちょこまか違ってよー分からん。)
wikipediaさんの記述だと、他のプロセサはテストアンドセットが実行できないとの記述だが、
他のメモリアクセスを行う命令は実行出来るんか?それだと意味なくね?みたいな。)


どんなー時に使うかというと、セマフォとかmutex。
クリティカルセクション実行中の札を立てようとも、
その札を複数のプロセスが同時に参照し、同時に立てては意味が無い。
そういったときは、このテスト・アンド・セット命令で、
ハード側の仕組みによって同時にメモリアクセスを行うのを防ぐ。


http://journal.mycom.co.jp/column/architecture/198/index.html
http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%BB%E3%83%83%E3%83%88