プロセスとスレッドは、RailsやLinuxを触れていくと必ず目にする大切そうな用語なので、概念を知るために、ChatGPTとの対話でざっくり理解できた部分を備忘録として残しておく
1. プロセス
コンピュータ上で現在進行形でプログラムが実行されている状態がプロセスとなる。
特徴1. プロセスはプログラム単位で独立している
プロセスのそれぞれは、独立して稼働している。
そのため、プログラムの実行に必要なメモリなどのリソースを確保し独占する(他のプロセスとは共有しない)。
例えば、Googleブラウザを2つ起動すると、それぞれのブランザは独立したプロセスとして稼働する為、1つのブラウザがクラッシュしても、もう片方のブラウザに影響は出ない。
特徴2. プロセスはOSによって管理されている
プロセスへの必要リソースの割り当ては、LinuxなどのOSが担当していて、それぞれのプロセスを管理している。
具体的には、プロセスには、実行中、待機中、終了などのステータスがあり、OSはこれらの状態を管理して、プロセスが適切に実行されるようにしている。
2. スレッド
プログラムを実行する箱。
プログラムは、プロセス内の1つのスレッド(シングルスレッド)で順番にプログラムの処理を行う。
マルチスレッドでは、プロセス内に複数のスレッドが存在し、それぞれのスレッドが独立してプログラムの処理を行うので、システムの処理が高速になる。
プロセス内のスレッドはリソースを共有して稼働する。
3. プロセスとスレッドの関係性
プロセスは、プログラムが実行される単位で、メモリとのリソースを独立して持つ。
スレッドは、そのプロセスの中で動作する、プログラムが動く本体であり「軽量なプロセス」を意味する。つまり、プロセスの中に、複数のスレッドがあるとプログラムが実行できる箱が増えるので処理能力が高くなる。