2009年11月3日火曜日

simhと7th UNIX

我が家ではsimh上でAncient UNIXを動かしています。
具体的にはPDP11版の7th Editionに2BSDをインストール。自前パッチとして
  • date 2000年問題対応
  • vi hjklカーソル移動対応
  • vi 大画面対応
あたりを施した状態なんですが、動作中にCPUを食い潰しにいくのが気になってました。大昔のUNIXなんて電力制御も糞もないので、idle時にbusy loopでもしてるんだろう、と思ってたんですが、スケジューリング周りのコードを理解すると、きちんとスケジューリング対象がいない時にはidle()からwait命令を発行してCPUが割り込み待ちで寝るように作ってあります。
という事は・・・と思ってsimh側を見てみたら、どうやら「set cpu idle」を設定してあげないといけないようでした。

という事で、うちの設定は(ストレージ周りの設定を除くと)
set cpu u18
set cpu idle
set tti 7b
set dz 7b lines=16
att dz -am 4096
こんな感じです。
コンソールはマルチプレクサ(dz)通してtelnetで入れるようにしてあります。
7bってのはvi使うときに必要な設定で、これがないとtermcap使った画面制御がうまくいきません(制御ビットがマスクされちゃう)。viのbuildに成功して最初に起動したときは相当はまりました。termcapの設定ミスかと思って色々追いかけましたが、まさかsimh側の設定に問題があったとはorz 最近の環境に慣れ親しんだ身としてはcatとedだけの探検というのはジャングルでの生活に匹敵しますね。

0 件のコメント: