プロセスとは何か
➡ 「インスタンス」として理解するのがいい
プログラムを実行するうえで、必要な情報とは何か。
・どこまで処理が進んだのか、
・メモリのアドレス
・どんなファイルを開いているのか
…etc
これらを各プログラムごとにまとめたものがプロセス
一つのプログラムを実行すると、一つのプロセスが走る
psコマンドで確認できる
○大原則 1プロセッサには、同時に1プロセスしか走らない
but psコマンドの結果は複数プロセスが同時に走っているように見える
理由
あるプロセスがcpuにある程度実行した後、ほかのプロセスにcpuを譲っている
➡これが非常に短いクロック間隔で行われているので、あたかも複数プログラムが同時に走っているように見える
この、プロセスごとの優先度や、プロセス毎に時間を割り当てるのがスケジューラと呼ばれるもの
プロセスには、状態がある
実行可能状態など
スレッドとは何か
➡ プロセスを細かくした実行単位といえる
1プログラムの中で、1プロセスの中で並行処理を行いたい場合 スレッドを利用する
しかし、マルチスレッドで実行したとしても、結局1プロセスであるので、マルチコアであっても、1つのコアでしか実行されない?
マルチコアに対応するために
linux kernel ➡ 「スレッド」を「ライトウェイト プロセス」にして、隠すレッドをプロセスにしてしまう。
このライトウェイトプロセスを複数のコアで扱うことができ、並列処理ができる。