[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12421] Re: 「 Java Concurrency in Practice 」を読 む会 第 1 回 議事録



高橋(徹)です。

吉本さん、議事録作成お疲れ様です。

   "yoshih0079@xxxxxxxxxxxxxxxx"さんは書きました:
> 遅くなりましたが、第1回 「Java Concurrency in Practice」を読む会の議事録を
投稿いたします。
> 
>  ○リナックスなどはN:Nスレッドだが、サンはSolaris9から1:1スレッド。
>   →Windowsは1:1スレッド?
>    →1:1スレッドの方がオーバーヘッドが少なく効率的。
>     →CPUの数によっても違うので、一概にどちらがよいとは言えない。

"N:N"は、"M:N"の誤記ですね。

Linuxは、カーネル2.6からNative Posix Thread Library for Linux(NPTL)を
搭載し、これは1:1スレッドモデルです。
http://www.itmedia.co.jp/enterprise/0306/27/epn36.html

それ以前の古いLinuxスレッドも1:1スレッドモデルですが、これは実装の簡便
さの理由で作られたPOSIXもどきの中途半端な代物です。

IBMがLinux向けに開発していたNext Generation Posix Threading(NGPT)は、
M:Nスレッドモデルですが、標準搭載されるに至っていないようです。

Sunの技術資料「Solarisオペレーティング環境におけるマルチスレッド技術」
http://sdc.sun.co.jp/solaris/solaris9/private/multithread.pdf
が参考になります。

M:Nはユーザレベルとカーネルレベルの2段階でスケジューリングが行われるた
め、実装が複雑なのとオーバーヘッドが増えます。一方カーネルもマルチスレ
ッドに対する効率化が昔に比べて改善され、また利用可能なメモリも増えたこ
とから1:1の欠点も解消され、現時点では1:1が優位になっているということの
ようです。

>  ○AtomicLongは、CPUのネイティブメソッドでどのように対応しているのか? →
【宿題】
[jfriends-ml 12415]をご参照下さい。


--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx