Lions' 本読み (73)
朝練メモ。struct text の x_count および x_ccount 属性について確認。
x_count 属性
ほぼ Sheet 44 に閉じてますね。
- xalloc 手続きにおいて struct text な配列の x_iptr 属性と i-node オブジェクトな引数が同じ値の場合、x_count が増分される
- xalloc 手続きにおいて上記条件が真とならない場合、x_count には 1 が設定される
- xfree 手続きにおいて (基本的に) 減分される
- 値が 0 になった場合、sticky bit が立ってなければ swap から削除する
ということは基本的に xalloc 手続きで 1 増えて、xfree 手続きで 1 減るのか。そして xfree で 0 になったら swap から削除される。
む
newproc でこんなことしてるな。
1879 if((rpp=up->p_textp) != NULL) { 1880 rpp->x_count++; 1881 rpp->x_ccount++; 1882 }
この後始末は誰がどこでするんだろ。ちなみに up は親プロセス (?) のプロセス構造体オブジェクトを指してるはずです。
と思ったらやはり exec で始末してますね。良かった。
3128 xfree(); 3129 expand(USIZE); 3130 xalloc(ip);
ちなみに xfree の呼び出し元ですが
- exec
- exit
の二箇所となっている模様。
x_ccount 属性
こちらは xccdec 手続きによると 0 になったらコアから解放されてますね。この属性の値を見てテキストがコアにあるかどうかを判断している模様。
この属性が増分されるのは
- sched でスワップインする時
- xalloc でテキストが既にコアにある場合
になるのかどうか。減らされるのは xccdec でのみになるのかな。ちょっと時間無い。xccdec が呼び出されるのは
- xswap
- xfree
から、な模様。x_ccount のアタマの c は core の c なカンジですね。