linuxにおけるスレッドの扱い

先日、2005-08-28 - reroの日記で「linuxではプロセスとスレッドの違いをカーネルは理解していない」と発言したが、今になって思うと根拠があやふやなので調べなおしてみた。
http://mowamowa.p.utmc.or.jp/~amedama/cgi-bin/wiki/wiki.cgi?action=SEARCH&word=Kernel%A5%E1%A5%E2+%A5%D7%A5%ED%A5%BB%A5%B9%CA%D4によるとやはり、プロセスとスレッドはひとまとめでtaskとして管理されていて、違いはtask生成時のパラメーターのみということだ。
NPTL対応のものだとどう実装が変わるのかは分からない。ていうか2.6以降ってもしかしてNPTLに最初から対応してる?glibcを入れ替えるだけ?

ついでに書いとくと、システム全体での最大プロセス数は次のコマンドで分かる。正確にはこのコマンドでそれに関係するカーネルパラメーターを見ることが出来る。

cat /proc/sys/kernel/threads-max

1ユーザーが使えるプロセス数にも制限があってたいてい前述のシステム全体の制限の半分だが次のコマンドで確認できる。このコマンドの出力にある「max user processes」というのがそう。

ulimit -Sa

これは実はrootなら変更できる。

しかしプロセス数の最大値が固定だったのは2.2あたりまでで、2.4以降はリソースが確保できる限り,動的に上限値が変更される仕様になっているらしい。