プロセス

プロセス

  • プロセスとは、プログラムを実行する単位。
  • プロセスには親子関係が存在し、子プロセスは親プロセスのコピーとして動作する。
  • UNIXオペレーティングシステムにおいてはシステムコールfork()によりプロセスを生成する。
  • システムコールfork()の戻り値として、
    • 親プロセスでは、生成した子プロセスのプロセスIDを返す。
    • 子プロセスでは、0を返す。
    • fork()の実行が出来ない場合は、-1を返す。
  • プロセスの生成には、コピーオンライト(COW)の機能を用いて、処理の最適化が行われる。
コピーオンライト
forkを実行した段階では親プロセスの内容を子プロセスにコピーせず、暫定的に親プロセスと内容を共有し、書き換え要求のあった段階で内容のコピーを行うものである。

タスク

  • プログラムの実行に必要なリソース全てを指し示すもの。
  • 1タスク1スレッドのプログラム実行単位が、いわゆる”プロセス”である。

スレッド

  • 一つのタスク内において計算資源を共有し、CPU資源のみ別々に持つプログラムの処理単位。
  • データを共有しながら別処理を行うため、排他制御を行う必要がある。
  • スレッドは実装される空間の違いにより、ユーザスレッドとカーネルスレッドがある。
ユーザスレッド
ユーザ空間内において実装されたプロセスに対してのスケジューリングにより、処理が行われるスレッドのことであり、プロセスに対する実行状態によって実行が左右される。
カーネルスレッド
カーネルによってスレッドの切り替えが行われるスレッドであり、計算資源を共有した状態で、プロセスと同等に扱われ処理が行われるものである。