0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

並行処理の本質を理解するには?CPU・OS・スレッド・プロセスの仕組みから整理してみた

Last updated at Posted at 2025-04-25

はじめに

並行処理や並列処理という言葉を聞いたときに、
「実際にどんな仕組みで処理されているのか?」と疑問を持ちました。

特にGoやNode.jsといった言語の「軽量スレッド」や「イベントループ」を理解するには、
そもそもCPUやOSの視点から処理の流れを捉えることが重要だと感じました。


処理はどうやって実行されるのか?

最終的にプログラムの命令を実行するのはCPUです。
CPUは電圧の高低(0と1)を読み取り、命令を1つずつ「カチカチ」と処理していきます。

このときCPUが実行する単位はスレッド(thread)です。

  • スレッド:命令の流れそのもの(プログラムカウンタやスタック情報などを持つ)
  • プロセス:スレッドを含む実行単位であり、メモリ空間やファイルディスクリプタなどの資源を持つ

つまり、実際にCPUで動いているのはスレッドであり、
プロセスは「スレッドが実行するための情報」を保持する器ともいえます。


マルチプロセスとマルチスレッドの違い

種類 実態 メモリ共有 特徴
マルチプロセス 複数のプロセスを同時に実行 ❌ 共有しない(完全分離) 安定性が高いが切り替えコスト大
マルチスレッド 同一プロセス内の複数スレッドを実行 ✅ メモリ共有する 高速だが同期や排他制御が必要

誰がスレッドやプロセスを管理しているのか?

それはOS(カーネル)です。
OSの中核にある「スケジューラ」が以下を管理しています。

  • どのスレッド(またはプロセス)をいつCPUに割り当てるか?
  • ブロックしたスレッドをどう再開するか?
  • 複数のCPUコアがある場合、どのスレッドをどのコアで処理するか?

この仕組みをコンテキストスイッチと呼びます。

✅ CPUコアが1つでも、スレッドを高速に切り替えることで「同時に動いているように見せる」
→ これが 並行処理

✅ 複数のCPUコアでスレッドを実際に同時に実行する
→ これが 並列処理


まとめ:並行処理を支える土台

  • CPUはスレッド単位で処理を実行
  • スレッドはプロセス内に所属
  • プロセスはリソース(メモリやファイル)を持つ入れ物
  • それらの切り替えや実行管理はOSカーネルが行う
  • マルチスレッドもマルチプロセスも、最終的にはカーネルのスケジューラで制御されている
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?