プロセスとスレッド
プロセス
- 実行中のプログラム一つ一つのこと。
- メモリ空間が与えられる
cf. https://wa3.i-3-i.info/word11032.html
※ あるプロセスが、別のプロセスを作った場合は、それぞれ親プロセス、子プロセスと呼ぶ
cf. https://wa3.i-3-i.info/word11034.html
スレッド
- プロセス内で命令を逐次実行する部分であり、CPU コアを利用する単位
- 1プロセスは複数スレッドを持てる
- 昔はCPU数=同時に実行できる命令の数だったが、今は一つのCPUが複数のコア(実際に処理を行う部品)があるので、コア数に依存することになる。また、最近の CPU は、SMT (Intel ではハイパースレッディングと呼ぶ) 機能を搭載しているモデルが多くなってきており、この機能を使うと、1 つのコアに対して複数のスレッド (多くは 2 つのスレッド) を割り当てることができます。
- 一つのプロセスは同じメモリを共有するので、同じプロセス内のスレッドはメモリ空間を共用できる。
cf. https://milestone-of-se.nesuke.com/sv-basic/architecture/cpu/#:~:text=%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%A8%E3%81%AF%E3%80%81%E5%AE%9F%E8%A1%8C%E4%B8%AD,%E3%81%99%E3%82%8B%E5%8D%98%E4%BD%8D%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82
ApacheのMPM(prefork/worker/event)
ApacheのMPM(prefork/worker/event)はプロセス、スレッドの違いでもある。
https://qiita.com/esparrago_b/items/4f368599aba1a059dbd1