Lions' 本ぼっち読み (8)
ええと、このあたりの記述の所以を探してました。
1444 PS = 177776 1445 SSR0 = 177572 1446 SSR2 = 177576 1447 KISA0 = 172340 1448 KISA6 = 172354 1449 KISD0 = 172300
268p とか 269p なあたりに
- 仮想アドレス空間の最高位のページは物理アドレスの最高位のページにマップされる (Lions' Commentary on UNIX より引用) 旨と
- 物理メモリの高位ページは、プロセッサと周辺デバイスに関連するさまざまな特殊レジスタのために予約されている (Lions' Commentary on UNIX より引用) 旨と
な記述があります。曰く_このページのレジスタに対するアドレスの割り当ての方法ま魔術である (Lions' Commentary on UNIX より引用)_とのことなのでこれ以上の掘削は無駄な気がしてます。
カーネル読込みなあたり
6 章先頭部分 (307p) に以下な記述があります。
ブートストラップローダープログラムは (システムディスクのブロック #0 から) より大きなローダープログラムをロードし、この大きなローダープログラムが /unix と呼ばれるファイルを探し、メモリの低位部分にロードする。
Lions' Commentary on UNIX より引用
もう一つ、268p の初期状態という項の記述を引用しておきます。
ユニバス上のすべてのデバイスが再初期設定されたあと、システムが最初に起動したとき、メモリ管理ユニットはディゼーブルであり、プロセッサはカーネルモードである。
このような状況では、0 から 56K の範囲の仮想 (バイト) アドレスは同じ値の物理アドレスにマップされる。
Lions' Commentary on UNIX より引用
カーネルな実行ファイルがメモリの先頭部分にロードされて、そこをカーネルな APR が指す形に初期設定されつつその他の初期設定が完了したら mmu なアドレス変換が可能な形に、というのが start な手続きがしている初期設定なのか。
このあたり、詳細は 308p および 309p に記述されてます。あ、309p の 0646 な記述って、user 構造体が置いてある領域の末端がスタックのてっぺん、というアレになるのかな。
とりあえず
proc 配列がコア常駐、という部分については納得できてます。カーネルがメモリ常駐、ってのは Linux も同様ですよね。
# 常駐、って表現が合ってるのかどうかは微妙な気がしてますが
続き (7 章) をこのままだらだら読みますが、ログを追記するかどうかは微妙です。