Show page source of 1.2 プロセスとは? #15211

=== 1.2 プロセスとは?

 プログラムが動いている状態のことをプロセスと呼びます(タスクと呼んでいるOSもあります)。psコマンド
によって表示できるものがプロセスです。プログラムが1つであっても、そのプログラムを実行しているプロセ
スが複数存在することもあります。

[[Thumb(fig1-1.png, size=161x210, caption=図1-1 task_struct構造体, float=right)]]

 おのおののプロセスは、そのプロセス固有のコンテキストを持ちます。コンテキストとは、そのプロセスが動
作するためのプロセス空間、そのプロセスが動作するときのレジスタ値などです。これらの個々のプロセスに関
する情報は、task_struct構造体(task_t型)で管理されています(図1-1)。Linuxカーネルがプロセスを操作する
ときは、この構造体を操作することになります。

 また、Linuxカーネルではスレッドも一種のプロセスとして管理しています。スレッドどうしが同じプロセス
空間を共有していることを除けば、通常のプロセスと同じです。各スレッドにもtask_struct構造体が割り当てら
れています。プロセススケジューリングの点からは、どちらもまったく同じものとして扱われます。

 さらに、Linuxカーネルのコードのみを実行するカーネルスレッドも、プロセススケジューリングの視点から
は、プロセスと同じものです。固有のプロセス空間を持たないことを除けば、task_struct構造体が割り当てら
れ、プロセスと同様に管理されます。