Lions’ Commentary on UNIX 読書会メモ#2

はじめに

先日、Lions' Commentary on UNIXの読書会#2に参加してきました。
その時に出た話題をメモとして残しておきます。
全ての話題を拾えたわけではないので、不足な点や補足などあればフォローをお願いいたします。

本の内容に沿った話は、読書メモの方に記録を残していきます。

今回の範囲

第6章, 第7章

メモ

6章
  • stackとheapが伸び続けるとどうなるんだろう
  • APRについてまとめたページがあったよね
  • Processor Status Word(259P参照)の現モード, 前モードを示すbitは、なぜそれぞれ2bit?
  • 仮想アドレスという機構が取り入れられている理由
    • 仮想アドレス空間(16bit)と物理アドレス空間(18bit)でbit数が異なる
    • PDRのAccess Controlで、アクセス管理ができる
    • reallocationなので扱いやすい
      • 物理アドレスを直接管理する方式の場合、連続する空間がなかなか確保できない
      • 各プログラムがアドレスを0から扱える。物理アドレスを直接扱うとしたら、相対アドレスを各プログラムが把握しないといけない
  • 668行目で、PSの前モードにユーザーモードを設定する理由
    • mtpi, mfpi命令を使うため。これらの命令は、前モードから現モードへデータ?を移動させる関数
    • ここの解説は訳があまりよくない。原著を見たほうがわかりやすい
  • SR0の検査は値がセットされているかどうかだけ
  • 307Pの説明より。スイッチがたくさんあるんだね
  • PDP11エミュレータでUNIX6thを動かしているが(?), 1576行目-のprintfが機能しない
    • 出力をON/OFFするスイッチがある → putcharのSW? 2391行目
    • 当時は出力先はプリンタのようなものを用いて? 紙で出力していた。そのため、毎回起動時に出力するのは煩わしいのでスイッチで制御できるようにしてあった
  • 1607行目の0115ってどういう意味?
    • 次回クロック関係の資料持ってきます(Hさん)
  • 311Pより。当時はクロックが20m秒刻みだったようだが、最近のLinuxの設定はどうなっている?
    • 1, 4, 10msが用いられることが多い。最近のLinuxでは4msが使われることが多い。当時の5倍の速さ!
  • runin, runoutがどういう意図で設定されているかがよくわからない
    • 割り込みとかのあたり(9章〜)で解説があったような
  • 1571行目のcputype == 70でマジックナンバーを使っているのが気持ち悪い
    • 70はPDP11/70の意味
7章
  • typoが多い
    • 322Pの表。ページ3, 4のアドレスはそれぞれd+16, d+144が正しい
  • spl命令って何?
    • 優先度の設定。設定優先度より低い割り込みを防ぐ
    • 優先度の一覧は336P
      • 優先度4と5は一緒の処理。1302-1306行目。なぜ?
      • 優先度1-3は使われていない。337P上部参照
      • spl命令はアセンブリコードで書かれている。ロックを扱うので、できるだけ早く処理したいから?
  • fork, exec絡みの話
    • よく理解できませんでした。フォローしてもらえると助かります
  • 1516行目-のicodeがブートストラッププログラム。mainから制御が670行目へ移動した後に実行される

次回

次回は1/16(Sun)です。内容は8. 9章です。

終わりに

今回はかなり重かったです。この本の中で、もっとも理解が難しい場所ではないでしょうか。