2011-07-01から1ヶ月間の記事一覧

6.828: Operating System Engineering (48)

なんとなく make qemu してみたらコンパイルでコケた。 pte_t * pgdir_walk(pde_t *pgdir, const void *va, int create) { // Fill this function in struct Page *page; pte_t *pte = pgdir[PDX(va)];型が違うぞと。しかも良く見たらなんとなく微妙な雰囲気…

6.828: Operating System Engineering (47)

ええと、直前エントリな理解だと pgdir_walk でページフレームを一つ確保して page table entry にする page_insert では page_walk で新規に確保した pte を適切に処理 page ディスクリプタの値に合わせた値を PTX(va) の位置に格納 permission の設定 要件…

再来週以降の予定

連チャンです。 7/30 JavaKuche 6周年記念講演会 & Java Kueche 第六期 総会 8/6 JAG 沖縄支部 第22回勉強会 8/13 夢ロボット博にて講演とのこと (http://www.okinawatimes.co.jp/bnj/yumerobot/event.html) 犬型ロボットAIBO開発秘話と今後のロボットについ…

6.828: Operating System Engineering (46)

page と pa と va の関係を pmap.h の記述を見つつ確認。

とほほ

それにしてもいつまでこの迷走が続くのだろうかorz

6.828: Operating System Engineering (45)

何かが整合してない。 例えば pages は va と関連付けられる形で使われているように見えるけど assert(check_va2pa(boot_pgdir, 0x0) == page2pa(pp1));例えば page_alloc のプロトタイプは以下で int page_alloc(struct Page **pp_store)必要な時に必要なモ…

abc2011s

あのビデオはどんなレスポンスだったのか、教えてください、誰となく。

6.828: Operating System Engineering (44)

昨晩のナニですが、pgdir[PDX(VPT)] は pgdir [0x3bf] で、pgdir[PDX(UVPT)] は pgdir[0x3bd] ということになるのか。で、それぞれに pgdir の物理アドレスが格納されるので、コメントにあるように Recursively ということになるのか。 pages は UPAGES にマ…

6.828: Operating System Engineering (43)

以下なソレですが、 ////////////////////////////////////////////////////////////////////// // Recursively insert PD in itself as a page table, to form // a virtual page table at virtual address VPT. // (For now, you don't have understand th…

6.828: Operating System Engineering (42)

なんといいますか、もの凄いイキオイでナチュラルを大爆発させていたことがようやく分かった。そんな気がしてはいたのですが、やはりだったか。 昨日の続き ナチュラルなソレはスルーとして、続きを見ていきます。 // there is no page allocated at address…

workshop@Naha #9

明日の勉強会ですが、ちょう期待です。タイムテーブル的には以下。 1430〜1445 受付、会場準備 1445〜1535 Androidスマフォで電子工作 – つないでしまえばこっちのもの 1535〜1545 休憩 1545〜1615 OpenGL 初心者向け (1) 1615〜1645 スマホアプリアイデアコ…

6.828: Operating System Engineering (41)

pmap.c の試験な手続きを読みます。 check_page_alloc 先頭から順に、が良いのか呼ばれる順が良いのか分かりませんがとりあえず check_page_alloc から。

linux-0.01 のナニ

boot/head.s に paging な初期設定がありますね。そういや別場所でコード読みの予定があるのですが、成果をどうするか検討してないかも。 それは良いのですが linux-0.01 なナニは startup_32 が 0x0 に配置されてその後そこが page directory になるらしい…

6.828: Operating System Engineering (40)

pgdir_walk 手続き 直前エントリな理解で再度手続き冒頭のコメントを確認。 page table entry のポインタを戻す va を使って page directory を検索して、取得すれば良いはず page directory に page table が無い、というのは存在フラグが云々というソレか…

6.828: Operating System Engineering (39)

メモ。なんか微妙なメモばかりでスミマセン。 pgdir の要素は 1024 (10bits) アロケーションサイズは 4096 なのは要素の大きさが 4bytes (pde_t) だから? ページディレクトリな領域は確保してますが、ページテーブルな領域は確保されていない件について あ、…

6.828: Operating System Engineering (38)

基本的に virtual address は page directory とか page table とかを介してページフレームの番号 (pages のインデクス) に変換できる、はず。 ちなみにうにまがのあの記事によれば、Linux ではプロセス毎に独立したアドレス変換テーブルがあるとの記述があ…

6.828: Operating System Engineering (37)

結局は pgdir_walk からなのだなと。でもページングのナニがイマイチ分かってないかも。そもそも inc/memlayout.h がなんちゃらなあたりの理解が微妙だはず。inc/mmu.h が云々のあたりも同様か。

6.828: Operating System Engineering (36)

現状ですが、以下がモニタに出力されてます。 /opt/bin/qemu -hda obj/kern/kernel.img -serial mon:stdio 6828 decimal is 15254 octal! Physical memory: 66556K available, base = 640K, extended = 65532K check_page_alloc() succeeded! kernel panic a…

とほほ

いっちゃん古い世代の iPod shuffle が Ubuntu とやりとりできず。仕方が無いので同僚の OSX から英語な podcast をナニしてもらおうかな。それ以外のハマりネタが以下です。 gitorious を Ubuntu なソレに仕込み中なんですが、結構大変 そういや明日から Ro…

6.828: Operating System Engineering (35)

Exercise 2. はスルーで大丈夫なはず。色々確認できてるはずなので。 あと、Exercise 3. の C-a c が動きません。 と思ったら qemu の起動が以下になってて /opt/bin/qemu -hda obj/kern/kernel.img -serial mon:stdio起動した端末で C-a c したらイケました…

6.828: Operating System Engineering (34)

page_alloc とか page_free とかの検討。

6.828: Operating System Engineering (33)

ええとコメントによれば pages 配列の 0 番目は使えない 1 番目から IOPHYSMEM/PGSIZE -1 番目は使える IOPHYSMEM/PGSIZE 番目から EXTPHYSMEM/PGSIZE 番目は使えない EXTPHYSMEM/PGSIZE 番目から ROUNDUP(boot_freemem, PGSIZE)/PGSIZE 番目は使えない 以降…

6.828: Operating System Engineering (32)

免許更新の講習開始一時間前。電源確保して確認開始。ええと俯瞰が必要ってことでそれを意識しつつ、とゆーことで。

6.828: Operating System Engineering (31)

pmap.[ch] 見ながらなメモ。

6.828: Operating System Engineering (30)

うにまがの特集 Linux のブートプロセスをみる、とか詳解 Linux カーネルをガン読み。メモリ云々な部分はがっつりスルー状態でしたので勉強になります。

6.828: Operating System Engineering (29)

今日は休日 mtg の日なのですが、現実トウヒ。check_boot_pgdir 手続きの確認。

6.828: Operating System Engineering (28)

直前エントリで書いたように、とりあえず make qemu-gdb して gdb で i386_detect_memory の中身を見てみます。

6.828: Operating System Engineering (27)

昨晩の続き。 呼び出し元の記述は以下。 ////////////////////////////////////////////////////////////////////// // create initial page directory. pgdir = boot_alloc(PGSIZE, PGSIZE); memset(pgdir, 0, PGSIZE); boot_pgdir = pgdir; boot_cr3 = PAD…

6.828: Operating System Engineering (26)

某所で内職というソレが聞こえてくる今日この頃、わしも集中して現実トウヒに走りたいのですが、なかなかそうもいかず困っております。 とりあえず IA-32 なマニュアルの下巻の 3 章確認かなぁ。

こりゃ凄い

なんかわしが以前アレしたエントリが間違えてる気がしてきました。 http://d.hatena.ne.jp/h6n/20110703/1309711452 こーゆーことをきちんとデキる、ってのが大切ですわな。