Lions' 本ぼっち読み (6)
今日はなんとなく微妙な気がしてますがウサギ飛びとゆーことにて。
- 例の小冊子な sureg の解説を読みつつ手続きを掘削しておく必要あり
- estabur という手続きもアレ
- expand という手続きも (ry
上記を別途、ということで残りは以下な部分。
1627 if(newproc()) { 1628 expand(USIZE+1); 1629 estabur(0, 1, 0, 0); 1630 copyout(icode, 0, sizeof icode); (snip) 1635 return; 1636 }
- 1628 の expand() 手続き (2268) の呼び出しは exec で必要な処理の一つな模様
- 領域の確保 (fork した時点では同じ領域をナニ) とコピー
- 1629 の estabur() 手続き (1650) の呼び出し。
- estabur() 手続きは最後に sureg() 手続きを呼び出してますね
- 1630 で呼び出されてる copyout() 手続き (1252) も掘削必要
で、1635 の return で main 手続呼び出しの継続 (0671) に jmp する模様。ここも別途掘削する方向で。
7 章カンニング
- proc 構造体配列は core 常駐なのか
- 根拠確認必要
む、例の小冊子にも記述があるんですが、retu に渡される proc 構造体の属性はポイント高いですね。クロスリファレンス見つつ引用してみます。
2193 retu(proc[0].p_addr);
あるいは
2228 retu(rp->p_addr);
rp は最も優先度の高い実行可能プロセスなナニ。
2294 retu(p->p_addr);
ここで渡されている領域は expand() 手続きを確認する必要がある模様。
宿題
- expand() 手続き (2268) は 8 章で掘削の方向らしい
- estabur() 手続き (1650) は 7 章で掘削の方向らしい
- sureg() 手続き (1739) は 7 章で掘削の方向らしい
ということで今日は限界ですが、7 章が継続ということにて。