プロセス
メモリ上で実行中のプログラムのinstanceのこと
プロセスの生成
プロセスの複製
プロセスの上書き
参考
プロセスに関する緩い解説
使用言語はPerl
Perl、記述量が少なくてノイズが少ないので例示として良いな

プログラムを実行する際、カーネルはプログラムをメモリに読み込む
プログラムの読み込まれたメモリ領域をプロセスに割り当てる
リソース割当ての対象となる論理的な単位
このアドレスを使ってメモリにアクセスする
仮想アドレスはMMUによって、物理アドレスに変換する
各プロセスの仮想アドレス空間は独立している
そのため各プロセスの動作は互いに影響しない
1つのCPU上で同時に実行できるプロセスは1つだけ
そのため、適当な時間で区切って処理するプロセスを入れ替えている
プロセスの構成
ユーザーに見えている処理
裏で行っている処理
裏で行っているので、実行中に別のコマンドを実行できる
一時休止状態の処理
コマンドに対し cmd-z
でサスペンド状態にできる
exec()も結局は、fork後の上書きだから、プロセス全体ではツリー構造は常に保たれる?
並列
各プロセスを複数のCPUに割り当てることで並列処理ができる
各プロセスはメモリ空間が独立している
子プロセスでもにょもにょしても親プロセスに影響を与えないので安全
生成コストが大きい
プロセスを表す構造体 (Unix V6)
スレッドがどうのこうのみたいな話は構造体には現れないのか

プロセスの形態
ユニプロセッサ・ユニプログラミング方式
一つのCPU上で、一つの処理を逐次的に行う
ユニプロセッサ・マルチプログラミング方式
マルチスレッド的な?
マルチプロセッサ、マルチプログラミング方式
複数CPUを用いて、並列処理ができる
参考