はじめてのOSコードリーディング 読書会 (4)

2013/5/12に開催された「第4回 はじめてのOSコードリーディング 読書会」に関連するつぶやきです。
2
七誌 @7shi

5/11(土),12(日)は連続UNIX V6特集です! 11日は@magoroku15さんによるUNIX V6 セミナーです。 http://t.co/Go9QK3ZIB4 12日は新V6本読書会です。 http://t.co/2UAA2Id9T4 #firstv6

2013-03-31 23:53:06
ryochack @ryochack

OSコードリーディング読書会なう

2013-05-12 12:59:50
Keigo @K5_sem

池袋なう。今日はOSコードリーディング読書会。遅刻したので、tsudaりますw

2013-05-12 13:49:56
Keigo @K5_sem

本日のOSコードリーディング読書会は第4章 スワッピングです #firstv6

2013-05-12 13:51:04
Keigo @K5_sem

sched()関数(sys/slp.c)のproc[0]の流れを追うため、ソースコードとにらめっこ中。 関数内で変数を使いまわしているので意味が途中で変わってるため、可読性ががが #firstv6

2013-05-12 13:58:00
Keigo @K5_sem

(tsudaるって死語だよなぁ。。。) http://t.co/B7ALQ5pHK0

2013-05-12 14:02:36
ryochack @ryochack

swapは1プロセス全体に対して行われる。プロセスのデータ途中で行われることはない。ページイン・ページアウトとの言葉の違い #firstv6

2013-05-12 14:22:27
Keigo @K5_sem

4.1 スワッピングとは プログラム実行→命令列(テキストセグメント)とデータ(データセグメント)をメモリに読み込む→あふれる→スワッピングする!! #firstv6

2013-05-12 14:22:51
Keigo @K5_sem

テキストセグメント:機械語のコードそのもの(Read only) データセグメント:複数プロセスで共有されず #firstv6

2013-05-12 14:23:21
ryochack @ryochack

V6の頃はテキストデータセグメントをスワップ領域に確保していたが、今のOSではバイナリファイルをロードする、という考え。昔はパンチカードなどから外部ディスクに読み込んでいたからスワップ領域に確保しておく必要があった? #firstv6

2013-05-12 14:24:06
ryochack @ryochack

スワップイン・スワップアウトのファミレス例おもしろいw #firstv6

2013-05-12 14:35:56
Keigo @K5_sem

スワップがど-いうタイミングで実行されるか?というセクション。 スワッピング対象のプロセスを探すスワッパ関数がsched()で、proc[]が行うスワッピング処理は次のような感じ。 #firstv6

2013-05-12 15:09:01
Keigo @K5_sem

「次の条件を満たすスワップイン対象のプロセスを選択」ファミレスで客が来る&席が空いている(スワップ領域に最も長く存在する&実行可能状態) #firstv6

2013-05-12 15:09:18
Keigo @K5_sem

「スワップインに充分なメモリがない→次の条件を満たすプロセスをスワップイン」客はいるけど席が空いてない(メモリに存在する)&居座ってる客にオーダーストップor帰れと言う(SWAITまたはSSTOP状態) #firstv6

2013-05-12 15:09:50
Keigo @K5_sem

「(条件を満たすプロセスなければ)条件を緩くして再度スワップイン対象のプロセスを探す」メモリに一番長く存在する&SRUNまたはSSLEEP状態(居座っている客のこと) #firstv6

2013-05-12 15:10:22
Keigo @K5_sem

ソースコードを読むにはグローバル変数の対応表とかないときつい→Lions本にある!! #firstv6

2013-05-12 15:10:58
ryochack @ryochack

V6のコードはgoto多用のスパゲッティなので、フローチャート書くと理解しやすいのかもしれない

2013-05-12 15:20:45
yad @UsrNameu1

sched() = 二郎 proc[] = 客 #firstv6

2013-05-12 15:32:39
フランドン畜舎内 ヨークシャイヤ @furandon_pig

ワグナリア(WORKING!)で理解するsched()関数……。 #firstv6

2013-05-12 16:00:58
Keigo @K5_sem

プロセスのデータセグメントをスワップアウトする関数がxswap() runoutで寝てるスケジューラを起こす #firstv6

2013-05-12 16:13:45
Keigo @K5_sem

4.2 テキストセグメントの共有処理 malloc()が仮想アドレスを使えるとよかった #firstv6

2013-05-12 16:14:22
ryochack @ryochack

OSコードリーディング本、グローバル変数の索引があると嬉しい #firstv6

2013-05-12 16:18:07
Keigo @K5_sem

実行プロセスにテキストセグメントを割り当てる関数がxalloc() xalloc()が呼ばれる時のp_sizeは0? #firstv6

2013-05-12 16:33:32
yad @UsrNameu1

swtch() : returnを返す関数、黒魔術の一種 #firstv6

2013-05-12 16:42:23
Keigo @K5_sem

swtch()でxalloc関数を抜ける。これはUNIX V6の仕様(P.78参照) #firstv6

2013-05-12 16:43:13