view seminar/seminar2012/20120703.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 / 03,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>
      <p>compiler を OS に載せるのかどうか<br></p>
      <h3>InCompiler </h3>
      <ul><b>利点</b>
          <li>OSに新しいプログラムを追加しやすい</li>
          <li>machine に最適なプログラムになる</li>
          <li>プログラムを管理しやすい</li>
      </ul>
      <ul><b>欠点</b>
          <li>サイズによってはメモリに入りきらない</li>
      </ul>
      <h3>小さいサイズを実装するのが最善</h3>

      </article>

      <article>
        <h3>
          今週の作業 [~ 2012/07/03 ]
       </h3>
       <ul>
           <li>grubでソースを動かす</li>
       </ul>
       </article>

      <article>
      <p>
      Multiboot specifiction version 1.6 を読んで、grub2 でのプログラムの動かし方を学ぶ。
      </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>