わかっていそうでわかっていないプロセスについて解説していきます。
以下の構成で解説していきます。
プロセスとは
プロセスとは、ひとことでいうと実行中のプログラムのことです。
あなたがプログラムを実行したら、そのプログラムがプロセスとして起動します。
よくソースコード上では、「proc」と略されています。
また、プロセスには3つの特徴があります。
- 終了しない限り、起動し続ける
- メモリ領域を共有しない
- プロセスから別のプロセスを生成できる
これだけ聞いても、よくわからないと思います。
なので、これからプロセスの特徴のそれぞれについて詳しく解説していきます。
特徴① 終了しない限り、起動し続ける
プロセスは、終了しない限り、起動し続けます。
起動し続けてしまうことは、何が問題なのでしょうか?
それは、正しい実行結果にならないことがあるためです。
あなたが一度プログラムを実行したとします。
続けて、もう一度プログラムを実行します。
すると2度目の実行結果が、1度目の実行結果と違う結果になることがあるのです。
ちなみに以前起動して、残っているプロセスを「ゾンビプロセス」といいます。
このゾンビは、プログラムを実行するごとに消してあげる必要があります。
特徴② メモリ領域を共有しない
メモリ領域を共有しないとは、下記の図のように起動したプロセスごとにメモリ領域が確保されます。
メモリを共有しないことのメリットは、
自由にポインタなどのメモリ操作が可能なことです。
一方で、デメリットは、プロセス間でのデータの受け渡しが困難なことです。
特徴③ プロセスから別のプロセスを生成可能
プロセスは、実行したプロセスから新しいプロセスを生成することができます。
このとき、生成されたプロセスを「子プロセス」といいます。
一方で、生成したほうのプロセスを「親プロセス」といいます。
では、プロセスが生成できることでどのようなメリットがあるのでしょうか。
いくつかメリットはありますが、その1つに「並列処理が可能になること」が挙げられます。
子プロセスを生成して、並列処理を実現しているプログラムもよくあります。
まとめ
プロセスとは、実行中のプログラムのことをさします。
プロセスについて理解しているのとしていなのでは、プログラミングの幅がだいぶ変わると思います。
少しずつ理解していきましょう。