軽量プロセスはどのように機能し、ユーザー スレッドをカーネル スレッドにマップする必要があるのはなぜですか?
また、軽量プロセスはカーネルスレッドをサポートする OS でしか思い浮かびませんか?
軽量プロセスはどのように機能し、ユーザー スレッドをカーネル スレッドにマップする必要があるのはなぜですか?
また、軽量プロセスはカーネルスレッドをサポートする OS でしか思い浮かびませんか?
実際Light Weight Processes
(lwp) は単一のカーネル スレッド上のユーザー空間で実行され、そのアドレス空間とシステム リソースを同じプロセス内の他の LWP と共有します。スレッド ライブラリによって管理される複数のユーザー レベル スレッドは、1 つまたは複数の LWP の上に配置できるため、マルチタスクをユーザー レベルで実行できます。
その背後にある理由はLWPs are slower and more expensive
、ユーザースレッドよりも作成することです。LWP が作成されるたびに、最初に対応するカーネル スレッドを作成するためのシステム コールを作成する必要があります。これにより、カーネル モードに切り替わります。したがって、同じスペースに複数のユーザー レベルのスレッドを作成すると、システム コールとプリエンプションがなく、マルチタスクが提供されるため、より高速に動作します。