アカウント名:
パスワード:
うーん、語法とか前提が違うのかな?
dispatch queueみたいな複雑なのはともかく、 単純なlock の queue なんかは、 read-modify-write cycle な命令 (atomicな swapとか compare and swapとか)や load linked(load locked) + store conditionalな coherent cacheを利用した命令とかをうまく使って spin することなくenqueue & dequeueする ことができます。
そういうqueueを使ってプロセッサごとの 領域で spin させるのが queueing spin lockです。 一番有名なのがおそらく Mellor-Crummey とScott のMCS lockと呼ばれるもの。これはFIFO queueです。 MCS lock 以外では queueとアルゴリズムの工夫で 優先度順 lock を実現したものもありますし、 それらをさらに優先度継承拡張したものもあります。
私の出身研究室で行われた、別の人の研究は、いくつかpaperになってるのでご参考まで。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
Re:OSを作ってる立場からすると (スコア:2)
うーん、語法とか前提が違うのかな?
dispatch queueみたいな複雑なのはともかく、 単純なlock の queue なんかは、 read-modify-write cycle な命令 (atomicな swapとか compare and swapとか)や load linked(load locked) + store conditionalな coherent cacheを利用した命令とかをうまく使って spin することなくenqueue & dequeueする ことができます。
そういうqueueを使ってプロセッサごとの 領域で spin させるのが queueing spin lockです。 一番有名なのがおそらく Mellor-Crummey とScott のMCS lockと呼ばれるもの。これはFIFO queueです。 MCS lock 以外では queueとアルゴリズムの工夫で 優先度順 lock を実現したものもありますし、 それらをさらに優先度継承拡張したものもあります。
私の出身研究室で行われた、別の人の研究は、いくつかpaperになってるのでご参考まで。