Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
下記、spin_lock(&val)が成功した後、ロック変数valで保護された資源を安全にアクセス可能となる。資源へのアクセスが終了したら、spin_unlock(&val)で資源のロックの開放を行う。この実装上、ロック時間は最低限の時間にしなければならない。
もし、複数CPU間で共有される資源が割り込みハンドラからも利用されるのであれば、ローカルCPUへ対する割り込みも禁止する必要がある。
もし、複数CPU間で共有される資源がソフト割り込みハンドラからも利用されるのであれば、ローカルCPU上でのソフト割り込み実行も禁止する必要がある。
また、readロック、writeロックのメカニズムも提供されている。一つの資源を複数のプロセスから同時にreadロックを行い、同時に資源を参照することが可能である。ただし、資源がwriteロックされている場合は、readロックはビジーウェイトさせられる。逆にreadロックをかけれれている資源に対しwriteロックを行おうとした場合もビジーウェイトさせられる。
参照頻度の高く、かつ更新を伴わない参照が多い資源に関しては、単純なspin_lock関数より複数のプロセスからの同時アクセスを許すこれらのロックメカニズムの方が効率が良い。割り込み禁止、ソフト割り込み禁止と組合せたreadロック、writeロック関数も用意されている。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:19:08, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members