dragonfly bsd どうよat UNIX
dragonfly bsd どうよ - 暇つぶし2ch121:名無しさん@お腹いっぱい。
04/08/12 14:21.net
同期トークン

同期トークンはいくつものスレッドが同時につかめます。トークンをつかんでいる
スレッドは、同一のトークンをつかんでいる他のスレッドが同時には実行しない
ことが保証されます。

一つのスレッドは同期トークンをいくつでもつかむことができます。

あるスレッドは、イールドまたはブロック条件を通じて同期トークンを
つかむことがありますが、そのスレッドが(ブロックあるいはイールドされて)
実行中でない間、それらのトークンをつかんでいる他のスレッドが実行する
可能性があることを考慮に入れる必要があります。

理論上、同期トークンの機構から起きるデッドロック状態で解決できないものは
ありません。しかし、初期の実装ではトークンを同時につかんだ場合にライブロック
の問題が起きる可能性があります。

同期トークンは、同一のトークンをつかもうとする割り込みが他のスレッドを
プリエンプトしてしまうことから保護するのにも使われます。これはBig Giant Lock
(BGL; MPロックともいう)とは若干違った作用があります。BGLは同一CPUの割り込みを
インターロックすることはありません。重要なことは、プリエンプションによって
一時的に他のスレッドへのスイッチが起きることがあるとしても、トークンの原子性
(?atomicity)プリエンプティブ条件によって維持されるということです。トークンの
原子性(?atomicity)を維持するためにspl()レベルやクリティカルセクションに入る
必要はありません。

同期トークンはプリエンプティブは割り込みが起きるのをさまたげることはありません
が、割込みをブロックして再スケジュールさせることがあります。スレッド化されて
いない高速割り込みやIPIメッセージング割り込みはトークンをつかうことが
できません。それは処理に必要なスレッドコンテキストを持っていないからです。
そのかわり、これらのサブシステムはクリティカルセクションを使うことで
排他制御をします。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch