K.Sasada's Home Page

Linux が POSIX Thread API を完全にサポートへ

主に、/.jp、当該記事から引いた結果を並べます。

情報源

簡単に言うと、1カーネルプロセス - 1スレッド の現在の方法を、もっとモダンな設計にやり直し、きちんとPOSIX Thread をサポートしたぜ、という話。

white paper より

まだ全部読んだわけではありませんが、まとめ。

現状の Linux Thread モデルの問題点は、次の通り。

この新しいスレッドライブラリの目標は次の通り。

方法の考察、比較については次の通り。

が、あげられている。

Linux 用 M-N モデルのスレッドライブラリ

Open source : Next Generation POSIX Threading project Web site

IBMの作った OpenSource の M-N モデルの POSIX スレッドAPIらしい。

M-N モデルって?

「スレッド」というものを作成するとき、「ユーザレベルスレッド」、「カーネルレベルスレッド」と表現される方法があります。このとき、「カーネルレベルスレッド」は「カーネルプロセス=スレッド」と対応付けるのが一般的(?)です。

「ユーザレベルスレッド」を実現するとき、「1カーネルスレッド=多ユーザスレッド」と対応付けるのが、1-N モデル。これだとプロセスが一個なので、SMPの恩恵を(各スレッドが)受けることができません。ここで、「多プロセス=多スレッド」、つまり M-N モデルが登場します。M個のプロセスでN個のスレッドを表現するため、M個のプロセッサを利用することが一般的にできます。

現在では、SMPに対応するため、スレッドライブラリはこの M-N モデルが一般的に利用・研究されているようです。そして、それを Linux に実装したのがこの IBM のスレッドライブラリ、ということになります。

Solaris9 は M-N モデルをやめた

Yahoo! eグループ : jvm-talk メッセージ :61件中 60件目を表示

結局、2段階でスケジューリングするオーバーヘッドのほうがでかい、ということか。

spin lock と adaptive lock

連載] Solarisカーネル研究:第25回 マルチプロセッシングと同期オブジェクト [http://www.idg.co.jp/sw/back/series/200005_02_kernel.html

NetBSD のスケジューラ

スレッドも含めたスケジューラの話。M-Nモデルを押してるらしい。

An Implementation of Scheduler Activations on the NetBSD Operating System

Slashdot 本家 新しい O(n) なスケジューラの話

/. Running 100,000 Parallel Threads

従来は15分かかっていた100,000個のスレッドの生成を、新型の O(1) なスケジューラは2秒でやってのけたらしい。速すぎる。

これの、生成以外の性能が激しく知りたい・・・。210個の英語のコメント全部読むのは辛すぎる。

Sasada Koichi / sasada@namikilab.tuat.ac.jp
$Date: 2002/09/27 08:37:11 $