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

はじめに

Lions本読書会#3に参加してきました。
そのときのメモを残しておきます。

本に沿った内容は読書メモの方に反映していきます。このメモでは本の内容の範疇から越えた話題を中心記録しています。

今回は8, 9章を読みました。

メモ

@oracchaさんのツイートをかなり参考にしています。

8章
  • swtchはproc#0が処理をする。なぜproc#0が担当する?
    • 最近のLinuxなどでは実行中のプロセスがそのままswtch処理も担当する
  • 「priが小さい方が優先度が高い」という設計の理由は?
  • Cのコンパイラがどういうコードを吐くか、というのを踏まえて、unix v6の処理が行われている箇所がある
    • CはUNIX作成ように作られたという経緯がある。時代背景を考えると当たり前と言えば当たり前?
  • SSLEEPとSWAITの差はなに?
    • schedで関係するようだ。SSLEEPの方が優先的にスワッピング処理されるとか?
  • 2165行目はバグ?
    • Lions本で「がんばれば理解できる」かのように書かれているのはオーストラリア英語をうまく和訳できなかったせい?
  • sched()はスワッピングを処理する関数。プロセススケジューリングではない
  • スワッピングによるオーバーヘッドってどれくらい?
    • 当時のメモリとハードウェアの速度差は?
    • 当時は今ほどCPUとネットワーク、メモリの性能差がなかったのではないだろうか。なのでスワッピングによるオーバーヘッドは今よりも深刻ではなかった?
  • p_statの流れをまとめてみた(381-387)
    • 絵にしてみるとこんな感じ?


    • OSの教科書でよく出てくるプロセスの状態3種(READY, RUN, WAIT)のうち、READYとRUNはp_statによる区別をしていない
    • SIDLはnewproc( )でコアメモリが確保できずにスワップ領域から始まった状態のときに設定される
    • SZOMBはプロセスの実行が終了し、wait( )によってリソース解放されるのを待っている状態?
9章
  • スタックポインタはカーネル用、ユーザ用の2つが存在する
    • PSのモード([15:14])が切り替わることで(ハードウェアにより?)使用するスタックポインタが切り替わる
  • spl命令はネストできない。これだとマルチプロセッサの対応ができない

終わりに

今回はがんばって喋ったので(緊張しました)、あまり記録が取れていません。他の参加者からフォローがあると期待しています。

Lions本読書会#4は来月(2011/02)のどこかの日曜に開催される予定です。

UNIXソースコードを追ってみたい方は、参加してみてはいかがでしょうか。