Mercurial > hg > Members > taiki > slides
diff seminar/seminar2013/1008.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/seminar2013/1008.html Tue Dec 10 15:31:33 2013 +0900 @@ -0,0 +1,182 @@ +<!-- +Google IO 2012 HTML5 Slide Template + +Authors: Eric Bidelman <ebidel@gmail.com> + Luke Mahé <lukem@google.com> + +URL: https://code.google.com/p/io-2012-slides +--> +<!DOCTYPE html> +<html> +<head> + <title>Presentation</title> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="chrome=1"> + <!--<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">--> + <!--<meta name="viewport" content="width=device-width, initial-scale=1.0">--> + <!--This one seems to work all the time, but really small on ipad--> + <!--<meta name="viewport" content="initial-scale=0.4">--> + <meta name="apple-mobile-web-app-capable" content="yes"> + <link rel="stylesheet" media="all" href="css/default.css"> + <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="../io2012slides/theme/css/phone.css"> + <base target="_blank"> <!-- This amazingness opens all links in a new tab. --> + <script data-main="../io2012slides/js/slides" src="../io2012slides/js/require-1.0.8.min.js"></script> +</head> +<body style="opacity: 0"> + +<slides class="layout-widescreen"> + +<!-- + <slide class="logoslide nobackground"> + <article class="flexbox vcenter"> + <span><img src="../io2012slides/images/google_developers_logo.png"></span> + </article> + </slide> +--> + + <slide class="title-slide segue nobackground"> + <aside class="gdbar"><img src="../images/concurrent.png"></aside> + <!-- The content of this hgroup is replaced programmatically through the slide_config.json. --> + <hgroup class="auto-fadein"> + <h1 data-config-title><!-- populated from slide_config.json --></h1> + <h2 data-config-subtitle><!-- populated from slide_config.json --></h2> + <p data-config-presenter><!-- populated from slide_config.json --></p> + </hgroup> + </slide> + + <slide> + <hgroup> + <h2>研究目的</h2> + </hgroup> + <article> + <ul> + <li>ブートが高速で、コンパクトなカーネルを実装する。</li> + <li>Codesegment と Datasegment をカーネルに実装するにあたって、メモリ管理の役割とどう合致するのかを検証する。</li> + <li>上記を確認したら CbC を用いて、動作が軽く落ちにくいカーネルを実装する。</li> + <li>モデル検証に対応し、エラー予測を可能にする</li> + <li>カーネルパニックをなくす</li> + <li>Mach-O を ELILO でロードし、64bit で動作可能にする</li> + </ul> + </article> + </slide> + + <slide> + <hgroup> + <h2>ELILO</h2> + </hgroup> + <article> + <h3>現状</h3> + <img src="images/flowchart.png"> + </article> + </slide> + + <slide> + <hgroup> + <h2>ELILO</h2> + </hgroup> + + <article> + <h3>目標</h3> + <ul> + <li>Page Table を初期化</li> + <li>一度 Paging を disable </li> + <li>CR3 レジスタに初期化した Page Table を登録</li> + <li>再度 Paging を enable</li> + </ul> + <h4>目標 [EFI version]</h4> + <ul> + <li>memmap を設定</li> + <li>新しく仮想メモリ用に memmap を作る</li> + <li>irq をセーブして、pgd を作る[TLB をフラッシュ]</li> + <li>UEFI API SetVirtualAddressMap を call</li> + <li>pgd を登録して、irq をリストア[TLB をフラッシュ]</li> + </ul> + <h3>どちらかの方法で、ELILO 内に Page table を作る</h3> + </article> + </slide> + + + <slide> + <hgroup> + <h2>ELILO</h2> + </hgroup> + <article> + <h3>ExitBootService の前後の接続</h3> + <ul> + <li>ExitBootService 後に、 uefi_call_wrapper(RT->SetVirtualAddressMap, 4, mem_map_size, efi_mem_desc_size, mem_desc_ver, mem_map)</li> + <li>Memory Map を、SetVirtualAddressMap 用に設定しなおさないといけないらしい</li> + <li>そのまま入れたらマシンが落ちる</li> + <li>下記のものが、ExitBootService 前にMemoryMapにラベルが付けられている</li> + <li>EFI_BOOT_SERVICES_CODE</li> + <li>EFI_BOOT_SERVICES_DATA</li> + <li>この辺りを使用して、VirtualAddressMap を生成する必要がある</li> + </ul> + </article> + </slide> + + <slide> + <hgroup> + <h2>Vagrant KVM</h2> + </hgroup> + <article> + <h3>Bldsv09</h3> + <ul> + <li>ExitBootService 後に、 uefi_call_wrapper(RT->SetVirtualAddressMap, 4, mem_map_size, efi_mem_desc_size, mem_desc_ver, mem_map)</li> + <li>Memory Map を、SetVirtualAddressMap 用に設定しなおさないといけないらしい</li> + <li>そのまま入れたらマシンが落ちる</li> + <li>下記のものが、ExitBootService 前にMemoryMapにラベルが付けられている</li> + <li>EFI_BOOT_SERVICES_CODE</li> + <li>EFI_BOOT_SERVICES_DATA</li> + <li>この辺りを使用して、VirtualAddressMap を生成する必要がある</li> + </ul> + </article> + </slide> + + <slide> + <hgroup> + <h2>TLB</h2> + </hgroup> + <article> + <h3>Linux kernel では</h3> + <ul> + <li>アセンブラで呼び出し</li> + <li>hypervisor call を経て、割り込み扱い、int 命令で呼び出す</li> + <li>必要なら SetVirtualAddressMap の前後に tlb flush を実装しないといけない</li> + </ul> + </article> + </slide> + + <slide> + <article> + <h3>Vagrant の問題</h3> + <ul> + <li>Vagraint の開発者が作成したツール Packer を使用して、Fedora19 を Vagrant で起動できる形式にする</li> + <li>Chef で環境/構成を設定</li> + <li>構成はどうしよう</li> + <li>Vagrant で起動し、それに ssh 接続ができることを明示</li> + </ul> + </article> + </slide> + + <slide class="backdrop"></slide> + +</slides> + +<script> +var _gaq = _gaq || []; +_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']); +_gaq.push(['_trackPageview']); + +(function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); +})(); +</script> + +<!--[if IE]> + <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script> + <script>CFInstall.check({mode: 'overlay'});</script> +<![endif]--> +</body> +</html>