エンジニア

なんくるないさ

「このブログはアフィリエイト広告を利用しています」

プロセスとスレッドの違い

エンジニアにとって知らないと恥ずかしいプロセスとスレッドについてまとめました。

  • プロセスとは
  • スレッドとは
  • プロセスの詳細
  • スレッドの詳細
  • プロセス間通信
  • 参考にした英語の動画

プロセスとは

コンピュータで動作しているアプリ=プロセス

プロセスの例(Mac)

例えば、chromeやslackやlineが該当します。

プロセスには、親子関係があります。 親プロセスは、別のプロセスを生成して実行を開始させたものです。

私の理解だと、chormeを起動した時に、生成されるhelperなどが子のプロセスです。 ちなみにchromeのタブを新規に開くと、そのタブは別プロセスとして立ち上がります。

スレッドとは

  • プロセス内のより小さな実行単位。スレッドは、プロセスの中で複数存在することが可能。
  • スレッドはプロセス内のリソースを共有し、同じメモリやファイルハンドルを使用します。

  • ウェブブラウザを起動する場合、ブラウザはプロセスとして実行されます。
  • そのプロセス内で複数のスレッドが実行されます。一つのスレッドがウェブページの表示を担当し、もう一つのスレッドがネットワーク通信を処理するなど、異なる仕事を分担しています。

プロセスの詳細

この動画を日本語に訳す。

  • chromeやlineなどのアプリは、実行ファイルによって生成される
  • 実行ファイルには、プロセッサのインストラクションが記述されている
  • 実行ファイルは、ディスクにファイルとして保存される
  • プロセッサによってディスク→メモリに移されると、それはプロセスとなる
  • アクティブなプロセスには、CPUやメモリのリソースが割り当てられる (OSがそれを割り当てる)
  • プロセスには、メモリアドレス空間が割り当てられる
  • プロセスは、他のプロセスのメモリスペースに影響を与えない (邪魔しない)

プロセスとメモリの関係

スレッドの詳細

  • スレッドはいくつかのスレッドの塊である
  • プロセスは必ず一個のスレッドを持つ。それをメインスレッドと呼ぶ
  • スレッドごとに、stack, registers, program countersを持つ

  • プロセスとスレッドの共有物

  • メモリ共有スペース=heapと呼ぶ。heap領域でスレッド間はやりとりできる

  • 一つのスレッドがバグるとプロセス全体が落ちる

プロセス間で通信するためには?

参考にした英語の動画の書き起こし

process

  • A program(chrome,Excel, etc.) is an executable file.
  • it contains the code or a set of processor instructions.
  • its' instructions are stored as a file on disk.

  • code in a disk

  • the code is loaded into the memory and executed by the processor, it becomes a process.

how the code become the process

  • active process also includes the CPU, RAM, I/O.
  • These resources are managed by the OS.
  • one process cannot corrupt the memory space of another process.
  • chrome runs each tab in its own process. So, when one tab misbehaves due to a bug or a malicious attack, other tabs are unaffected.

thread

  • A process has one main thread.
  • Each thread has its own stack.