ネイティブPOSIX スレッド ライブラリ( NPTL ) は、 Linuxオペレーティング システム 用のPOSIX スレッド仕様の実装です。
歴史
Linuxカーネルのバージョン2.6より前は、プロセスがスケジュール可能なエンティティであり、スレッドのための特別な機能はなかった。[ 1 ]しかし、呼び出し元プロセスのコピーを作成し、そのコピーが呼び出し元とアドレス空間を共有するシステムコール「clone 」 があった。LinuxThreadsプロジェクトはこのシステムコールを使用してカーネルレベルのスレッドを提供した(Linuxにおける以前のスレッド実装のほとんどは完全にユーザーランドで動作していた)。残念ながら、特にシグナル処理、スケジューリング、プロセス間同期プリミティブの領域において、POSIXに部分的にしか準拠していなかった。
LinuxThreadsを改良するには、カーネルサポートと新しいスレッドライブラリが必要であることは明らかでした。この要件に対応するため、2つの競合するプロジェクトが開始されました。1つはIBMの開発者を含むチームが開発したNGPT (Next Generation POSIX Threads)で、もう1つはRed Hatの開発者が開発したNPTLです。NGPTチームはNPTLチームと緊密に協力し、両方の実装の優れた機能をNPTLに統合しました。NGPTプロジェクトは、その優れた機能をNPTLに統合した後、2003年半ばに中止されました。
NPTLはRed Hat Linux 9で初めてリリースされました。旧式のLinux POSIXスレッド処理は、スレッドがシステムに譲り渡さないという問題を抱えることで知られています。これは、スレッドがシステムから譲り渡される機会を逃してしまうためです。これは、当時Windowsの方がより優れた処理能力を持っていたためです。Red Hatは、Javaウェブサイトに掲載されたRed Hat Linux 9上のJavaに関する記事で、NPTLによってこの問題が修正されたと主張しました。 [ 2 ]
NPTLはRed Hat Enterprise Linuxバージョン3以降、Linuxカーネルバージョン2.6以降に組み込まれています。現在ではGNU Cライブラリに完全に統合されています。[ 3 ]
NPTLには、 POSIX Thread Trace Tool ( PTT )と呼ばれるトレースツールが存在します。また、 NPTLライブラリをPOSIX標準に準拠しているかテストするために、 Open POSIX Test Suite ( OPTS )も作成されています。
デザイン
LinuxThreadsと同様に、NPTLは1:1のスレッドライブラリです。ライブラリによって(pthread_create経由で)作成されたスレッドは、カーネル内のスケジュール可能なエンティティ(Linuxの場合はプロセス)と1対1で対応します。 [ 4 ]:226 これは、3つのスレッドモデル(1:1、N:1、M:N)の中で最も単純なモデルです。[ 4 ]:215–216 新しいスレッドは、NPTLライブラリを通じて呼び出されるclone()システムコールによって作成されます。NPTLは、ユーザー空間ロックをより効率的に実装するために、カーネルのfutexサポートに依存しています。[ 4 ]:182
参照
参考文献
- ^ pthreads(7) — Linuxマニュアルページ
- ^ Red Hat Linux 9とJava 2 Platform, Standard Edition 1.4.2の組み合わせ
- ^ GNU C ライブラリ バージョン 2.3.3 リリース
- ^ a b cロバート・ラブ (2013). Linuxシステムプログラミング(第2版). O'Reilly Media, Incorporated. ISBN 978-1449339531。
外部リンク
- NPTL トレース ツールNPTL を使用してマルチスレッド アプリケーションをトレースおよびデバッグするためのオープンソース ツールです。