Lions本読書会#8

Lions本読書会#8のtogetterまとめです。 http://atnd.org/events/16288 最初に私が色々呟いているものの中には誤っている情報もありますのでご注意を。 続きを読む
0
前へ 1 2 ・・ 5 次へ
takahiro(John Smith) @superhoge

注意なのは、当時は「ページング」ではなくて「プログラムスワッピング」なこと。前者は必要なデータだけを出し入れするが、後者はプログラム単位で出し入れする #readLions

2011-06-19 13:46:57
takahiro(John Smith) @superhoge

前者はメインメモリ以上の容量を持つプログラムを動かせるが、後者は(たぶん)無理。後者はメインメモリ以上にたくさんの(小さい)プログラム群を動かせるってこと #readLions

2011-06-19 13:48:23
takahiro(John Smith) @superhoge

詳しい人がいたら、ページングとの対比をもっと語ってほしいな。TLBとか階層ページング?とかと絡めて。自分は概要をなんとなく知ってるだけなんで #readLions

2011-06-19 13:49:37
takahiro(John Smith) @superhoge

つづいてテキストセグメントの話。テキストセグメントはプログラムとか普遍な情報が格納されているテキストセグメント。だからプロセス間で共有できる。たぶんシェルとか考えると共有できるポイントはたくさんあるはず #readLions

2011-06-19 13:52:38
takahiro(John Smith) @superhoge

スワッピングでも、スワップインしようとしているプロセスが欲するテキストセグメントがコア内にあるかどうかでコアメモリの確保の流れが少し変わってくる #readLions

2011-06-19 13:53:30
takahiro(John Smith) @superhoge

逆にスワップアウトするとき、テキストセグメントを参照しているプロセスがいなくなったら、そのテキストセグメントもスワップアウトする(だったはず)。まだ見ているプロセスがいるならスワップアウトさせない #readLions

2011-06-19 13:54:25
takahiro(John Smith) @superhoge

スティッキービットっていうフラグ?があって、そいつが立っていると参照しているプロセス(スワップ領域にいるやつも含む)が全ていなくなっても、スワップ領域に残る。よく使うやつはフラグ立てておいて残しておく。効率化の仕組み #readLions

2011-06-19 13:58:13
takahiro(John Smith) @superhoge

そのフラグがたってないと、一つも参照しているプロセスがない場合、ディスクスワップ領域からも解放しちゃう #readLions

2011-06-19 13:59:49
takahiro(John Smith) @superhoge

なんで、テキストセグメントには参照しているプロセスをカウントする変数がある。4306行目のtext構造体に注目。x_countとxx_count。総数とコア内にいるやつだけの違いだったはず #readLions

2011-06-19 14:01:35
takahiro(John Smith) @superhoge

テキストセグメントはtext構造体の配列で管理する。プログラムはproc構造体のp_textpポインタで使うテキストセグメントを指すようにする #readLions

2011-06-19 14:02:59
takahiro(John Smith) @superhoge

スタックとかデータ(ヒープ)はどこで管理しているんだっけな……。7章のセグメントの絵を参照。セグメンテーションアドレスレジスタから変換して各プロセスの適切なアドレスにアクセスしているはず。たしか。詳細は少し忘れてしまったw #readLions

2011-06-19 14:06:13
takahiro(John Smith) @superhoge

続いてスケジューラ(スワッパと言ったほうが誤解が少ないかも)の話。Lions本372Pのrunout, runinに注目。この状態になるまで、sched( )は延々とスワッピングを繰り返す(はず) #readLions

2011-06-19 14:07:25
takahiro(John Smith) @superhoge

基本的な発想は、スワッピング処理したばかりのプロセス、もしくは生成したばかりのプロセスまでスワッピングしてしまうと、スワッピング処理時間ばかりがかかってしまい非効率なので、そういうプロセスはスワッピング対象から外す。所謂スラッシング対策 #readLions

2011-06-19 14:08:51
takahiro(John Smith) @superhoge

気になるのは、sched( )が起こされたときに、スワッピング対象がたくさんいた場合。runin, runoutの状態になるまで延々とスワッピングが繰り返されるので、ユーザ(人)がだいぶ待たされてしまう #readLions

2011-06-19 14:10:02
takahiro(John Smith) @superhoge

ディスクへのアクセスは、プロセッサの動作速度と比較してだいぶ遅いはずだし #readLions

2011-06-19 14:10:23
takahiro(John Smith) @superhoge

ただし、clock( )だったかでruninかrunout状態をチェックしていた気がするので、プロセスがたまらないようになっているのかも? #readLions

2011-06-19 14:12:11
takahiro(John Smith) @superhoge

読書会タイム終了。自己紹介タイム。マイクは切っています #readLions

2011-06-19 14:13:12
takahiro(John Smith) @superhoge

結局コードはほとんど読んでないw 概要思い出すだけで終わってしまったw #readLions

2011-06-19 14:13:34
takahiro(John Smith) @superhoge

声はちゃんと聞こえているのかな? ( #readLions live at http://ustre.am/zaFV)

2011-06-19 14:24:14
満鉄附属地エリカちゃん @xylnao11

3秒とかハードコーディングされてる値を変えて動かしてみるとおもしろいんだろうけど、普通にエミュレートすると早すぎて効果がわからないかも? ( #readLions live at http://ustre.am/zaFV)

2011-06-19 14:40:33
takahiro(John Smith) @superhoge

今の話でちょっと気になったのが、プロセスはスワップ処理完了(ディスクアクセス完了)を待つのか?ってことなんだけど、待つね。swap( )までコードを追った ( #readLions live at http://ustre.am/zaFV)

2011-06-19 14:44:07
takahiro(John Smith) @superhoge

待たないならバッファにB_ASYNCフラグを立てるんだけど、立ててない ( #readLions live at http://ustre.am/zaFV)

2011-06-19 14:49:13
前へ 1 2 ・・ 5 次へ