TL;DR

実行中のプログラムのインスタンス。メモリ上に独立した領域を持ち、他のプロセスのメモリ空間にはアクセスできない。

仕組み

プロセスは大きく次の要素で構成されている。

  • プログラムのコード(コードセグメントで管理する)
  • プログラムで使う変数(データセグメント、ヒープ、スタックで管理する)
  • レジスタと、そこで管理する実行状態(プログラムカウンタ、命令ポインタなど)

プロセスはメモリ内に独立した領域を持ち、他のプロセスのメモリ空間にはアクセスできない。 プロセス間で情報をやり取りするときは、プロセス間通信(IPC)を使う。

プログラムが終了するか、処理できないエラーが起きると、プロセスは終了する。プロセスが終了すると、OS はそのプロセスが使っていたメモリ領域、開いているファイルハンドル、ネットワーク接続などの資源をすべて回収する。回収した資源は、他のプロセスが使えるようになる。

1 つのプロセスは 1 つ以上のスレッドを持ち、メモリ空間をスレッドどうしで共有する。

注意点

Unix や Windows では、親プロセスが終了しても、子プロセスは自動では終了しない。

関連