Skip to content
Naoya Tech
Go back

How Processes and Threads Work

14:18 OS & Low-level

Overview

Could you explain the difference between a process and a thread in a technical interview? This video builds the answer up from programs to processes to threads and sums it up in one line: a process is the unit of isolation, and a thread is the unit of execution.

Key Points

Chapters

概要

技術面接でプロセスとスレッドの違いを聞かれたら、答えられるでしょうか。この動画では、プログラム、プロセス、スレッドの順に積み上げながら答えを組み立て、最後に「プロセスは隔離の単位、スレッドは実行の単位」という一言にまとめます。

ポイント

  • プログラムは、ディスク上にある命令とデータのファイルで、それ自体は何もしません。OSがメモリに読み込み、テキストセクション、データセクション、スタック、ヒープを用意して、プロセスコントロールブロック(PCB)で管理するようになると、それがプロセスです。
  • 各プロセスは自分だけのメモリアドレス空間を持つため、1つが異常終了しても他は動き続けます。Chromeがタブごとにプロセスを分けているのはこのためです。PythonやJavaScriptの場合、起動されるプログラムはインタプリタやエンジンで、あなたのコードはそれが読み込むデータです。
  • スレッドはプロセスの中で動きます。スタック、レジスタ、プログラムカウンターはスレッドごとに持ち、コード、データ、ヒープは共有します。そのためプロセスより軽く(Apacheは接続ごとにスレッドを1本作ります)、スレッド間の通信も高速です。Pythonの例では、2本のスレッドが共有カウンターを加算すると実行のたびに違う結果になり、ロックが必要な理由が分かります。
  • 並行(コンカレンシー)はスレッドを素早く切り替えて同時に動いているように見せること、並列(パラレリズム)は本当に同時に動かすことで、コアの数が上限になります。どのスレッドにCPU時間を割り当てるかはスケジューラが決めます。
  • コンテキストスイッチでは状態をPCBに保存します。プロセス間の切り替えはアドレス空間が変わるため高くつきます。スレッド間の切り替えはずっと安く、ファイバーやコルーチンはコードが自分から譲ったときにだけ切り替わるため、さらに安く済みます。

チャプター

Watch on YouTube

Share this post on:

Previous Video
How User Mode and Kernel Mode Work: A First Look at System Calls
Next Video
What Is Dependency Injection? Building It Up Step by Step