技術

[xv6 #33] Chapter 3 – Locking

テキストの43ページ

本文

xv6は、マルチプロセッサ上で実行され、コンピュータは複数のCPUで独立してコードを実行する。
それらの複数のCPUは、ひとつの物理アドレス上で動き、データ構造を共有する。
xv6は、複数のCPUがお互いに干渉しあわないようにする為の協調機構を提供しなければならない。
ユニプロセッサ上でも、xv6は、割り込みハンドラが非割り込みコードからの干渉を避けれるようにするためにいくつかの仕組みを使わなければならない。
xv6は、その両方の場合のために、同じ低層のコンセプトを用いる。
それはロック(lock)である。
ロックは、排他的な機能を提供し、一度に一つのCPUだけがロックを保持出来る事を確実にする。
個別のロックを保持している間、データ構造にアクセスだけする場合、xv6は、一度に一つのCPUだけがそのデータ構造にアクセスすることを確実にすることが出来る。
この場合、我々は、「そのロックはそのデータ構造を保護している」と言う。
この章では、なぜxv6がロックを必要とするか、どうやってxv6はロックを実装してるのか、そしてどうやってロックを使うのかについて説明する。

感想

新たな章です。
ロックについてですね。

ユーザ空間のプログラミングでも、マルチスレッドとかマルチプロセスとかになるとロックが必要になってきますので、ある程度馴染みはあるかなと思います。
ただここではカーネル空間における話になるので、もっと難しいのかもしれません。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示