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 章が継続ということにて。