(*1) Scheduler activations: effective kernel support for the user-level management of parallelism Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, and Henry M. Levy ACM Transactions on Computer Systems (TOCS) Volume 10, Issue 1 (February 1992), Pages: 53 - 79
"proposal"ってことはまだ未実装? (スコア:0)
別の言い方をすれば、perlやrubyのようなスクリプト言語の処理なんかでも使えそうな気がする。昨今の軽量言語や中間言語で構築されたアプリケーションだと効果高そうですね。
で、これって実装されているんでしょうか? "proposal"だからまだ発表しただけ、な感じですけど。
# IT Mediaの記事は意味がよくわからんかった。私が馬鹿なのか記事の書き方が悪いのか……
# 後者だと信じたい(^^;
Re:"proposal"ってことはまだ未実装? (スコア:5, 参考になる)
OSがデータを活用してくれるだけでそれなりの効果があるのでしょうが、アプリケーションの側でも、そのような処理を前提にリクエストを出したり「今プロセッサが2つ空くよ」「じゃあこれお願い」みたいなやりくりをしてやるとより効果的で、そういうやりくりは.NETなどのフレームワークにやってもらうとラクだよね、ということのようです。
そういう意味で、フレームワークやインタプリタをかまして実行するプログラムの方が恩恵が大きいのだと思いますが、BSD系のマルチスレッド処理などではOSがその辺まで踏み込む傾向がある(のだと思う、多分)ので、素のCプログラムなどもご利益にあずかれるかもしれません。
Re:"proposal"ってことはまだ未実装? (スコア:4, 興味深い)
Hipervisor への言及も観られるので、VMM 上の OS すべてに恩恵があれば、間接的に C で書かれたようなプログラムも恩恵にあずかれる可能性はありそうです。
Re:"proposal"ってことはまだ未実装? (スコア:4, 興味深い)
*BSDではScheduler Activations (*1) (以下、SA) を使っていることが多いということでしょうか。
自分が知る範囲ではFreeBSD、NetBSDがSAを使っていて (*2,*3)、DragonFly BSDもAPIとして同じのを使っている (*4) という時点でSAを使っている可能性が高そうです。
ちなみに、SAは効率的なM:Nスレッドの実装方法で、各々のアプリケーションが幾つプロセッサを使えるかを知り、どのスレッドをそれらのプロセッサで動かすかを完全に制御できるようにするため、アプリケーションに影響を与えるカーネルイベントをカーネルからアプリケーションに通知 (upcall) します。例えば、あるスレッドを実行していてブロックが起きた場合は、それを通知して他のスレッドを実行できるようにします。
(*1)
Scheduler activations: effective kernel support for the user-level management of parallelism
Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, and Henry M. Levy
ACM Transactions on Computer Systems (TOCS)
Volume 10, Issue 1 (February 1992), Pages: 53 - 79
(*2) http://www.freebsd.org/features.html [freebsd.org]
(*3) http://www.netbsd.org/changes/changes-2.0.html#pthreads [netbsd.org]
(*4) http://leaf.dragonflybsd.org/mailarchive/kernel/2005-02/msg00048.html [dragonflybsd.org]