プロセス
簡単に言えば動作中のプログラムのこと
1つのプログラムから複数のプロセスが作れるため、プロセスIDが必要 Processes are object code in execution: active, running programs.
単なるオブジェクトコードではなく、データ、リソース、状態、仮想コンピュータを持つ
具体的には以下の通り
実行可能オブジェクトコード: LinuxではELF メタデータ、複数のセクション、データを持つ
text section, data section, bss sectionが重要
text sectionは実行可能コードと読み取り専用データを含む
リソース: プロセスはカーネルによって管理されるシステムリソースと結びつく。それらはシステムコールで要求される
timers
pending signals
open files
network connections
hardware
IPC mechanisms
プロセスは仮想化の抽象である(?)
Linuxカーネルはpreemptiveマルチタスクと仮想メモリをサポートする。つまり、プロセスに仮想プロセッサと仮想メモリを与える
プロセスから見ると1つのマシンを占有しているかのように見える