2022/06/02
プロセスとスレッド
MMU
- Memory Management Unit
- プロセスごとに専用の物理メモリ領域を確保し,その物理領域にアクセスするための仮想アドレスを用意し,両者のアドレスのマッピングを行う
- マッピング情報はページテーブルという名前でメモリ上に保持される
プロセスがメモリに保持している情報
- テキストセグメント
- プログラムの命令列
- データセグメント
プロセスとスレッドの違い
1つのプログラムをプロセスとスレッドで並列に処理を行う時を考える。
プロセス
テキストセグメントは親と子プロセスで共有し,データセグメントは親と子プロセスで違う領域を持つ。
スレッド
ほぼ全てのデータをスレッドと共有する。
パフォーマンスの違い
プロセスの場合
プロセスごとに固有のメモリ領域を持つため,プロセスを切り替える場合は,仮想アドレスと物理アドレスのマッピングをそのプロセス用のものへと切り替える必要がある。
1度アドレスを解決した結果はMMUがキャッシュしているため,プロセスを切り替えるごとにMMUが持っているキャッシュをクリアする必要がある(TLBフラッシュ)。TLBフラッシュ直後は全てのキャッシュが消えるので,コストが大きい。
スレッドの場合
スレッドごとに共通のメモリ領域を持つため,利用する物理アドレスと仮想アドレスのマッピング情報を変える必要はなく,TLBフラッシュも起こらない。
参考
Unix Processes
System Calls
Kernelはハードウェアでの処理を仲介する。直接Kernelにアクセスすることはなく,system callを通してアクセスできる。
Processes Have Parents
システム上のプロセスにはその親プロセスが存在する。