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?

組込みLinux プロセスとスレッドの違い

Last updated at Posted at 2025-04-25

質問:「プロセスとスレッドの違いは?」
以下はChatGPTの回答。


とても重要なポイントですね!
プロセスとスレッドの違いをわかりやすく表にまとめつつ、イメージとともに解説します。


■ ざっくり一言で

  • プロセス:アプリケーション1個の実行単位(独立したメモリ空間を持つ)
  • スレッド:そのプロセス内での軽量な処理単位(メモリ空間は共有)

■ 比較表:プロセス vs スレッド

特徴 プロセス スレッド
メモリ空間 独立している 共有している(同じプロセス内)
作成コスト 重い(OSが管理) 軽い(同一プロセス内で管理)
通信 プロセス間通信(IPC)が必要 グローバル変数で共有できる
安全性 高い(クラッシュしても他に影響なし) 低い(1つが落ちると全体に影響)
使用例 Chromeのタブごと、別プロセスなど GUIのメインスレッド、センサ監視など

■ 図でイメージすると:

プロセス

[プロセスA]   メモリ空間A(独立)
    |
    └─ 実行コード・データ・スタック

[プロセスB]   メモリ空間B(独立)
    |
    └─ 実行コード・データ・スタック

スレッド(同一プロセス内)

[プロセスC]  メモリ空間C(共有)
    ├── スレッド1(スタック1)
    ├── スレッド2(スタック2)
    └── スレッド3(スタック3)

■ なぜスレッドを使うのか?

  • 同じメモリを使えるため、高速なデータ共有が可能
  • 処理を並列化して、応答性の高いアプリケーションを実現できる
  • 例:センサの読み取り・通信・UI更新などを別スレッドで同時進行

■ 組込みLinuxでの活用シーン

処理 向いてるもの
別アプリ同士で通信(例:センサ制御プログラムとUI) プロセス(+ IPC)
アプリ内で複数の処理を並列に(例:センサ・ログ・表示) スレッド(+ ミューテックス)

■ まとめ

観点 プロセス スレッド
独立性 高い(安全) 低い(クラッシュ連鎖の恐れ)
実行コスト 高い 低い
並列処理 できる(重め) できる(軽快)
データ共有 難しい(IPC) 簡単(共有メモリ)

組込みLinuxでは、基本は「1プロセス+複数スレッド」の構成が多いです。
必要なら、「実際にプロセスとスレッド両方を使ったサンプル」も作れます!

知りたい応用例とかあれば教えてくださいね!

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?