スレッド (コンピュータ)
(ライトウェイトプロセス から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/26 16:08 UTC 版)
スレッド(thread)とは、コンピュータプログラムにおいて特定の処理を行うための一貫性のある命令の流れのことであり、プロセッサ利用の最小単位[1]。プロセスは少なくとも1つ以上のスレッドを含む。一般的に各プロセスには独立した仮想アドレス空間が割り当てられるが、プロセス内のスレッド群はアドレス空間を共有する。そのためプログラムを実行するときのコンテキスト情報が最小で済み、同じプロセス内でスレッドを切り替える際はアドレス空間の切り替えが不要となるので、切り替えが高速になる[2]。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。複数のスレッドを生成して個々に処理を割り当てて実行させることで、並行処理による応答性の向上などを実現でき、さらにマルチコアプロセッサを複数のスレッドによって活用することで、並列処理による実行時間の短縮などを実現できる(これらの手法をマルチスレッドプログラミングと呼ぶ)。
注釈
出典
- ^ “スレッドとは - IT用語辞典”. IT用語辞典 e-Words. 2022年6月15日閲覧。
- ^ マルチスレッドの基本概念 (マルチスレッドのプログラミング) | Oracle
- ^ 仮想アドレス(論理アドレス)とは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ CreateThread function (processthreadsapi.h) | Microsoft Docs
- ^ Virtual memory in 32-bit version of Windows - Windows Server | Microsoft Learn
- ^ Pushing the Limits of Windows: Processes and Threads - Microsoft Community Hub
- ^ スレッドサポートライブラリ - cppreference.com
ライトウェイトプロセス
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/05 08:22 UTC 版)
「プロセス制御ブロック」の記事における「ライトウェイトプロセス」の解説
ユーザープロセスのマルチスレッドをカーネルが認識して処理する場合(ライトウェイトプロセス)、各スレッドがカーネル内にコンテキストを持つ。従って、PCBはプロセス全体に関わる部分(アドレス空間関連やファイル関連)とコンテキストスイッチに関わる部分に分けられ、後者はスレッド(ライトウェイトプロセス)毎に作成される。これはある意味でプロセス管理のふたつの大きな機能(プロセス毎の資源割り当て管理とプロセスあるいはライトウェイトプロセスの状態管理)に対応している。 表 話 編 歴 オペレーティングシステム概要 歴史 一覧 カーネル 構造 モノリシックカーネル マイクロカーネル エクソカーネル(英語版) ハイブリッドカーネル 構成 アドレス空間 マイクロカーネル ローダブル・カーネル・モジュール デバイスドライバ プロセス管理 概念 プロセス プロセス制御ブロック 割り込み スレッド コンテキストスイッチ スケジューリングアルゴリズム マルチタスク プリエンプション ラウンドロビン 多段フィードバックキュー Shortest job next メモリ管理とリソース保護 セキュリティリング メモリ保護 仮想記憶 ページング方式 セグメンテーション違反 / バスエラー 一般保護違反(英語版) 実装例 AIX AmigaOS BeOS BSD Haiku HP-UX Linux Classic Mac OS macOS MorphOS MS-DOS Multics OS/2 OS2200 ReactOS Solaris UNIX Windows z/OS Redox その他 ブートローダー Live CD Live USB PXE API 仮想ファイルシステム 仮想テープライブラリ(英語版) コンピュータネットワーク OSシェル(CLI TUI GUI VUI(英語版)) HAL コンピュータ - カテゴリ
※この「ライトウェイトプロセス」の解説は、「プロセス制御ブロック」の解説の一部です。
「ライトウェイトプロセス」を含む「プロセス制御ブロック」の記事については、「プロセス制御ブロック」の概要を参照ください。
ライトウェイトプロセス
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/16 09:55 UTC 版)
「スレッド (コンピュータ)」の記事における「ライトウェイトプロセス」の解説
ライトウェイトプロセス(light-weight process、LWP)または軽量プロセスとは、スレッドを複数並行して実行するためのカーネル内の機構。マルチプロセッシングにおいて、ひとつのプロセス内のスレッドを複数個同時に実行する仕組みである。カーネルスレッドとLWPを総称してネイティブスレッドと呼ぶこともある。 LWPは上述の2つの方式を組み合わせたもので、SolarisやSVR4.2MPで導入されたスレッド機構である。プログラミング上いくつでもスレッドを生成できるとしても、並列実行できるのはプロセッサ数までである。従って、カーネルスレッド方式のように全スレッドをカーネルが制御するのは無駄が大きい。そこでカーネルはLWPというスレッドを実行するオブジェクトを管理し、LWPが適当なユーザースレッドを選択して実行する。LWPの個数はプロセス当たりの上限(全プロセッサ数+α)が設定されているため無駄が少なくなり、ユーザースレッドはメモリなどが許す限り生成可能となる。また、ユーザースレッド間の切り替えをユーザー空間で行うため、オーバーヘッドはユーザースレッドとカーネルスレッドの中間になる。 LWPはCライブラリ内でスレッド作成の延長で必要に応じて作成される。Cライブラリ内のスレッドスケジューラが、ユーザースレッドとLWPのマッピングを行う。このマッピングを指して、LWP方式を「M対Nスレッド」と呼ぶことがある。つまり、ユーザープロセス内のM個のスレッドとカーネル内のN個のLWPがマッピングを切り換えながら実行されることを意味している。 カーネルはLWPに関するシステムコールを提供しており、Cライブラリがそれを使用する(ユーザーにも公開されているが、一般に直接使うことはほとんどない)。LWPはコンテキストスイッチの対象として扱われるため、LWP方式のオペレーティングシステムではプロセス制御ブロックの一部がLWP毎のデータ構造になっている。 また、LWPとユーザースレッドを固定的に結びつけることもでき、これを「結合スレッド」と呼ぶ(一般のスレッドは「非結合スレッド」)。
※この「ライトウェイトプロセス」の解説は、「スレッド (コンピュータ)」の解説の一部です。
「ライトウェイトプロセス」を含む「スレッド (コンピュータ)」の記事については、「スレッド (コンピュータ)」の概要を参照ください。
- ライトウェイトプロセスのページへのリンク