プロセス
読み:プロセス
外語:process

 プログラマーからみた処理の一単位のこと。システム(OS)から見た処理の一単位であるタスクとほぼ同義である。
目次

概要
 プロセスは、PIDまたはプロセスIDと呼ばれる番号で識別され、管理されている。
 また、各プロセスはファイルと同様に所有者とグループがあり、そのプロセスが開くことができるファイルやデバイスを決定するために使われる。

特徴

機能
 プロセスは、固有の独立した仮想メモリー空間とスタックを持ち、ファイルハンドル、一つ以上のスレッドで構成される。
 固有の仮想メモリー空間を持つことで、他のプロセスからの干渉を防ぎ、これによって複数のプログラムを並列実行する「マルチプロセス」が実現される。
 各プロセスの独立性を維持するため、OSはメモリー保護機能を持っているが、つまりOSがメモリー保護する単位がプロセスである。

親子
 殆どのプロセスは、別のプロセスから呼び出され、実行を開始する。
 このとき、そのプロセスを呼んだプロセスを親プロセスといい、親プロセスから見て、呼び出したプロセスのことを子プロセスという。
 例えば、シェルからコマンドを実行した場合、コマンドにとってシェルが親プロセスということになる。
 また、子プロセスを生成することを、親が子供を生むことに喩えて「生む」といい、生成されたことを「生まれる」という。

生成方法
 UNIXではfork(2)システムコールMicrosoft WindowsではCreateProcess()システムコールでプロセスを生成する。
 しかしながら、プロセス生成は非常にオーバーヘッドの大きな処理である。子プロセスは親プロセスと同じプログラムを使用するので、プログラムのコピーをロードするため大量のメモリーを要し、更に各種の初期化処理を行なわねばならない。
 また、メモリー空間はプロセス毎に保護されることになるため、プロセス間で情報を共有するためには、OSのプロセス間通信機能を使用しなければならないなどアプリケーションにも負荷がかかり、またプロセス間通信は速度が遅いことから全体のパフォーマンスを低下させる。
 マルチプロセスは、メモリー空間を独立させてバグ等による互いの干渉を避けることによる安定性、安全性の向上等のメリットがあり、速度面やメモリー面でのデメリットがある。

再検索