=== 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構造体が割り当てら れ、プロセスと同様に管理されます。