【プログラミング】プロセス、タスク、スレッドの違いを簡単にまとめる
エンジニアなので、ITのこともちょくちょく書いていきます。
以前簡単にメモにまとめていたものをそのまま貼り付けます。気が向いたら記事にします。
プロセス、タスク、スレッドの違い
プロセス
- プログラムを実行している実体。
- タスクとほぼ同義語。
- 例えば、5個のアプリを開いた場合、基本的には5個のプロセスが動作する。
- 各プロセスは独立している。そのため、他のプロセスに干渉できない。
- 1つのプロセスがエラーで死んでも、他のプロセスは動作し続ける。
スレッド
- プロセスの中にある実行単位。
- スレッド同士は互いに干渉することができる。
- 1つのスレッドが死ぬと、他のスレッドも死ぬ。
スレッド vs プロセス
- Chromeのタブはそれぞれが1つのプロセスとなっている。
- そのため、タスクマネージャーを開くと、何個もGoogle Chromeが起動しているようにみえる。(タスク = プロセス)
- タブがプロセスとなっているため、1つのタブでエラーが起こっても他のタブは問題なく動作する。
- また、プロセスはOSが管理してくれる。未使用のタブのメモリ解放などをOSが行なってくれるため、メモリ使用の無駄がない応答性が速いブラウザとなる。
- スレッドは互いに干渉するため、未使用のタブのメモリ解放などの処理が難しくなる。