ふるログ

ITなどのアウトプット

【プログラミング】プロセス、タスク、スレッドの違いを簡単にまとめる

エンジニアなので、ITのこともちょくちょく書いていきます。
以前簡単にメモにまとめていたものをそのまま貼り付けます。気が向いたら記事にします。

プロセス、タスク、スレッドの違い

プロセス

  • プログラムを実行している実体。
  • タスクとほぼ同義語。
  • 例えば、5個のアプリを開いた場合、基本的には5個のプロセスが動作する。
  • 各プロセスは独立している。そのため、他のプロセスに干渉できない。
  • 1つのプロセスがエラーで死んでも、他のプロセスは動作し続ける。

スレッド

  • プロセスの中にある実行単位。
  • スレッド同士は互いに干渉することができる。
  • 1つのスレッドが死ぬと、他のスレッドも死ぬ。

スレッド vs プロセス

  • Chromeのタブはそれぞれが1つのプロセスとなっている。
  • そのため、タスクマネージャーを開くと、何個もGoogle Chromeが起動しているようにみえる。(タスク = プロセス)
  • タブがプロセスとなっているため、1つのタブでエラーが起こっても他のタブは問題なく動作する。
  • また、プロセスはOSが管理してくれる。未使用のタブのメモリ解放などをOSが行なってくれるため、メモリ使用の無駄がない応答性が速いブラウザとなる。
  • スレッドは互いに干渉するため、未使用のタブのメモリ解放などの処理が難しくなる。