【ぷろせす】

プロセス とは?

💡 動いているプログラムの「実行中の分身」
📌 このページのポイント
プロセスの状態遷移 生成 new 実行可能 ready 実行中 running 待機 waiting 終了 terminated dispatch interrupt I/O待ち I/O完了 exit 凡例 CPUの割当 I/O要求
プロセスの状態遷移
ひよこ ひよこ

プロセスって何?プログラムとどう違うの?

ペンギン先生 ペンギン先生

プログラムはディスクに保存されている設計図で、プロセスはその設計図をもとに実際に動かした状態のこと。料理のレシピ(プログラム)と、実際に調理している作業(プロセス)の関係みたいなものだよ。

ひよこ ひよこ

プロセスって複数起動できるの?

ペンギン先生 ペンギン先生

できるよ。Chromeを複数のタブで開くと、タブごとにプロセスが立ち上がるんだ。一つのタブがクラッシュしても他が影響を受けないのは、プロセスが独立したメモリ空間を持つからなんだよ。

ひよこ ひよこ

PIDって何に使うの?

ペンギン先生 ペンギン先生

プロセスを識別するIDで、OSが管理に使う。LinuxMacターミナルから「kill 1234」ってやると、PID1234のプロセスを終了させられる。タスクマネージャーでも確認できるよ。

ひよこ ひよこ

プロセスとスレッドって何が違うの?結局同じじゃないの?

ペンギン先生 ペンギン先生

大きな違いはメモリ空間で、プロセスはそれぞれ独立したメモリ空間を持つ。スレッドはプロセスの中に複数存在できて、同じメモリ空間を共有するんだ。共有してるから速いけど、一方のスレッドがバグでメモリを壊すと同じプロセスの他のスレッドも道連れになる。プロセスはメモリが分かれてるから安全だけど、プロセス間でデータをやりとりするIPC(プロセス間通信)が必要になって少し複雑になる。「安全性か効率か」のトレードオフだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「プロセス」って出てきたら「実行中のプログラムのことで、OSが管理する処理の単位だな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Process」 = 過程・処理
💬 ラテン語の「procedere(前へ進む)」が語源。「処理が進んでいる状態」というイメージ
← 用語集にもどる