Mercurial > hg > Members > taiki > slides
view seminar/seminar2012/20120717.html @ 3:fea44bb81877 default tip
many change
author | taiki |
---|---|
date | Tue, 10 Dec 2013 15:31:33 +0900 |
parents | |
children |
line wrap: on
line source
<!DOCTYPE html> <!-- Google HTML5 slide template Authors: Luke Mahé (code) Marcin Wichary (code and design) Dominic Mazzoni (browser compatibility) Charles Chen (ChromeVox support) URL: http://code.google.com/p/html5slides/ --> <html> <head> <title>Presentation</title> <link src='../styles.css'> <meta charset='utf-8'> <script src='../slides.js'></script> </head> <style> /* Your individual styles here, or just use inline styles if that’s what you want. */ </style> <body style='display: none'> <section class='slides layout-regular template-default'> <!-- Your slides (<article class='nobackground'>s) go here. Delete or comment out the slides below. --> <article> <h1>CbC による OS の実装</h1> <p>Taiki Taira / 17,July,2012</p> </article> <article> <h3>研究目的</h3> <p> OS を構成する CPU 等の機器に多少の障害が起きてもすぐに切られることがないようにする。<br> 故障や部品交換等でOSそのものが止まるような箇所をなくす。<br> CbC で動作し、Cerium の Task Manager をのせる。 code segment, data segment を意識した設計にする。<br> shared library を減らす。<br> </p> <h3>その他現行OSへの不満 </h3> <p> CPU 消費によって硬直する、重くなる<br> 起動、停止が遅い<br> multi task とは<br> </p> </article> <article> <h3> 設計 </h3> <img src='../images/boot_process.png'> <img src='../images/kernel.png'> <p> Cerium の Task Mangaer を載せ、OS に渡される処理を並列化する。 </p> </article> <article> <h3> memory management </h3> <h4>基本的に code segment ごとに管理</h4> <p>メモリ全体を保持<br> get_segment では list </p> <p>使われているメモリの管理<br> get_segment では hash</p> <h4>malloc 読む</h4> </article> <article> <h4>compiler を OS に載せるのかどうか</h4> <h3>In Core Compiler </h3> <ul><b>利点</b> <li>OSに新しいプログラムを追加しやすい</li> <li>プラットフォームに最適なプログラムになる</li> <li>プログラムを管理しやすい</li> </ul> <ul><b>欠点</b> <li>サイズによってはメモリに入りきらない</li> </ul> </article> <article> <h3> 今週の作業 [~ 2012/07/17 ] </h3> <ul> <li>grubでソースを動かす</li> </ul> </article> <article> <h3>grub2</h3> <ul> <li>OS選択画面でc</li> <li>grub>が表示される</li> <li>halt で停止</li> <li>reboot で再起動</li> <li>ls で接続されている device の一覧</li> <li>set root=(device name)</li> <li>ls / でいま root に指定されている device の root directory </li> <li>multiboot2 [ELF executeble file](Linux なら linux という command がある)</li> <li>何も問題がなければ boot </li> </ul> <p> [multiboot2] で error . </p> </article> <article> <h3>起動について</h3> <p>最新のもので起動するのがいい考えて GRUB2 で試してきたが多少不安定なので、そろそろ GRUB や普通の BIOS での起動方法も視野に入れていく。</p> </article> <article class='nobackground'> <h3> 今後やること </h3> <ul> <li>32bit mode から 64bit mode (long mode) へ。</li> <li>malloc のソース/メモリ管理関係の資料を読む</li> <li>Task Manager のソースと論文を読む</li> </ul> </article> <article class='nobackground'> <h1> END </h1> </article> <article class='nobackground'> <h3> Multiboot Specification </h3> Multiboot Specification で規定された少量の規定を満たせばこの企画に準拠したブートローダー(ex. grub) から起動できる。<br> Multiboot Specification2 が作られており、grub2 (gurb の最新 grub1.99 )が対応しているため、Multiboot Specification2 に対応させる必要がある。<br> </p> </article> <article class='nobackground'> <h3> Physical Address Extension (PAE)</h3> <p> 物理アドレス拡張。<br> 32bit CPU で 4GiB以上のメモリを扱う技術。<br> AMD の AMD 64 アーキテクチャと Interl 64 アーキテクチャでは PAE のページテーブルエントリ構造を保ったまま512エントリをもった4段のページテーブル構造にすることで仮想アドレス空間を48、物理アドレス空間を52bit まで拡張。<br> IA-32 の PAE 互換を使用する場合物理アドレス空間の範囲は64bit mode で使った場合と同様。<br> </p> </article> <article class='nobackground'> <h3> Intel x86 architectures --- Segment Descripter </h3> <ul> <li> Interrupt Descriptor Table --- 割り込みの設定に使われる</li> <li> Global Descripter Table --- すべてのプログラムから共通にアクセスするセグメントを定義する </li> <li> Local Descriptor Table --- タスク単位に存在する</li> </ul> </article> <article class='nobackground'> <h3> Enable long mode </h3> <p>最初にCPUのIDを確認し、Long mode が使用可能かチェックする。 <ul> <li>ページングを不許可にする</li> <li> CR4 レジスタへ PAE を許可するためのbit をセットする</li> <li> CR3 を PML4 と一緒にロードする</li> <li> long mode を MSR の 0xC0000080 の EEER.LME フラグを セットすることによって許可する</li > <li></li> <li>ページングを許可する</li> </ul> </article> <article class='nobackground'> <h3> linux kernel 3.3 </h3> <p> arch/x86/boot/compressed/head_64.S で protect mode からlong mode へ移行するアセンブラが記述してある。<br> 64bit の GDT (Global Descripter Table) や PAE (Physical Address Extension) などもこのソースで用意している。<br> </p> </article> <article class='nobackground'> <h2> END </h2> </article> </section> </body> </html>