プログラム実行の流れ
WikipediaのThreadのページの画像をGPT-4.iconに解説してもらった
https://gyazo.com/e2547e5771632ab90fdabf91fb1efd6f https://en.wikipedia.org/wiki/Thread_(computing)
GPT-4.icon
この図は、プログラムの実行プロセスとCPUスケジューリングの流れを示しています。以下にそれぞれの部分について説明します。
1. プログラムのロードとプロセスの生成
Program (Disk)
プログラムはディスク上に保存されており、一連の命令(Instruction #1, #2, …, #N)として存在しています。
Instantiate
プログラムが実行される際、ディスクからRAM(メモリ)にロードされます。 この過程でプログラムは「プロセス」に変換され、メモリ上に配置されます。 Process (RAM)
プロセスは、メモリ上で実行可能な状態となり、CPUによって実行される準備が整います。 2. CPUとスケジューラーの役割
CPU
CPUは、プログラムの命令を実行するハードウェアであり、プロセス内のスレッドを実行します。
Scheduler (Part of OS)
スケジューラはオペレーティングシステムの一部で、CPUでどのスレッドを実行するかを決定します。 スレッドは各プロセス内にあり、スケジューラーはスレッドの優先度に基づいて実行順序を決定します。 Context Switch
スケジューラーが異なるスレッドに実行を切り替える際に「コンテキストスイッチ」が発生します。
これにより、CPUはあるスレッドから別のスレッドに切り替わります。
3. スレッドとプロセスの管理
Thread (in Process)
各プロセスには複数のスレッドが含まれており、それぞれ異なる優先度(高、中、低など)を持っています。
スレッドは、プロセスの一部として実行される独立した実行単位です。
Collect pointers
スケジューラーはスレッドのポインタを集めて管理し、適切なタイミングでそれぞれのスレッドを実行します。
4. RAM内のプロセス
RAM (Abstraction)
メモリ上では、複数のプロセスが存在し、それぞれが独立して動作しています。
図の右側では、プロセス#1、プロセス#2、プロセス#Mの例が示されています。