スレッド (コンピュータ)
ユーザ空間で実装されたスレッド機構をユーザースレッド、特に仮想機械上で動くものをグリーンスレッドと呼ぶ。ユーザースレッドの切り替えは、そのプロセスがユーザー空間で動作中にライブラリ内のスレッドスケジューラが行う。これは非常にオーバーヘッドが小さく、しかも実装が簡単と言える。しかし、ひとつのプロセス内の複数のスレッドは常に1つだけが動作していることになり、マルチプロセッサシステムの恩恵を受けられない。また、あるスレッドがカーネル内で入出力待ちでスリープしてしまうと、全スレッドが入出力待ちとなってしまうという問題があった。すなわち、ユーザースレッドはあくまでもプログラミングの手法としてのみ意味を持ち、性能向上に寄与するものではない。
カーネル空間で実装されたスレッド機構をカーネルスレッドと呼ぶ。カーネルスレッドの切り替えはカーネルが行うため、マルチプロセッサシステムであれば同じプロセス内の複数のスレッドを並行して実行することもでき、どれかひとつのスレッドがスリープしても別のスレッドは処理を続行できる。しかし、カーネルスレッドは単にユーザー空間などのリソースを共有しているだけで、プロセス管理から見ればプロセスとほとんど変わりないため、オーバーヘッド(コンテキストスイッチなど)もプロセス並みとなる。また、カーネルが全スレッドを管理するため、生成可能なスレッド数の制限がきつくなる。