Mercurial > hg > Members > taiki > slides
diff seminar/seminar2012/20120626.html @ 3:fea44bb81877 default tip
many change
author | taiki |
---|---|
date | Tue, 10 Dec 2013 15:31:33 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/seminar/seminar2012/20120626.html Tue Dec 10 15:31:33 2013 +0900 @@ -0,0 +1,182 @@ +<!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 / 26,Jun,2012</p> + </article> + + <article> + <h3>研究目標</h3> + <p> + 複雑化、多様化した BIOS を書き換え改良した仕様の(U)EFI に準拠した、GRUB2 で起動する。64bit のメモリを有効に扱う。<br> + CbC で動作し、Cerium の Task Manager をのせる。 + code segment, data segment を意識した設計にする。<br> + shared library を減らす。<br> + 故障や部品交換等でOSそのものが止まるような箇所をなくす。<br> + OS を構成する CPU 等の機器に多少の障害が起きてもすぐに切られることがないようにする。<br> + + </p> + </article> + <article> + <h3> + 設計 + </h3> + <img src='../images/os_plan.png'> + <p> + Cerium の Task Mangaer を載せ、OS に渡される処理を並列化する。 + CbC のコンパイラを載せ、実行可能にする。 + </p> + </article> + + <article> + <h3> + 今週の作業 [~ 2012/06/26 ] + </h3> + <ul> + <li>Mac OS X によるELF 実行形式をコンパイルするための環境構築</li> + </ul> + </article> + + <article> + <h3>cbc-gcc と binutils</h3> + <p> + 両方共、再度 + <b>--target=x86_64-elf</b> + オプションを付けて再度 configure し、make し直すと以下の形式の実行ファイルを出力するようになった。<br> + 64bit で書き、かつGRUB2(GRUB1.99) で起動するためにこの形式にした。 + <pre> +a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), +statically linked, not stripped + </pre> + <p> + executable とあるので、再配置、シンボル解決ともに完了している。 + </p> + </article> + + <article class='nobackground'> + <h3>ELF(Executable and Linking Format)</h3> + <p> + コンパイラが生成するオブジェクト、及びライブラリとリンクされた実行ファイルのフォーマット。多くの Linux ディストリビューションが採用している形式。 + </p> + </article> + + <article class='nobackground'> + <h3>malloc</h3> + <p> + glibc の、malloc/malloc.c を読もうと考えています。 + </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>