comparison seminar/seminar2012/20120605.html @ 3:fea44bb81877 default tip

many change
author taiki
date Tue, 10 Dec 2013 15:31:33 +0900
parents
children
comparison
equal deleted inserted replaced
2:7f4128b2369a 3:fea44bb81877
1 <!DOCTYPE html>
2
3 <!--
4 Google HTML5 slide template
5
6 Authors: Luke Mahé (code)
7 Marcin Wichary (code and design)
8
9 Dominic Mazzoni (browser compatibility)
10 Charles Chen (ChromeVox support)
11
12 URL: http://code.google.com/p/html5slides/
13 -->
14
15 <html>
16 <head>
17 <title>Presentation</title>
18 <link src='../styles.css'>
19 <meta charset='utf-8'>
20 <script
21 src='../slides.js'></script>
22 </head>
23
24 <style>
25 /* Your individual styles here, or just use inline styles if that’s
26 what you want. */
27
28
29 </style>
30 <body style='display: none'>
31
32 <section class='slides layout-regular template-default'>
33
34 <!-- Your slides (<article class='nobackground'>s) go here. Delete or comment out the
35 slides below. -->
36
37 <article>
38 <h1>CbC による OS の実装(仮)</h1>
39 <p>Taiki Taira / 05,Jun,2012</p>
40 </article>
41
42 <article>
43 <h3>研究目標</h3>
44 <p>
45 複雑化、多様化した BIOS を書き換え改良した仕様の(U)EFI に準拠した、GRUB2 で起動する。64bit のメモリを有効に扱う。<br>
46 shared library を減らす。<br>
47 故障や部品交換等でOSそのものが止まるような箇所をなくす。<br>
48 OS を構成する CPU 等の機器に多少の障害が起きてもすぐに切られることがないようにする。<br>
49 CbC で動作し、Cerium の Task Manager をのせる。
50
51 </p>
52 </article>
53 <article>
54 <h3>
55 設計
56 </h3>
57 <img src='images/os_plan.png'>
58 <p>
59 Cerium の Task Mangaer を載せ、OS に渡される処理を並列化する。
60 CbC のコンパイラを載せ、実行可能にする。
61 </p>
62 </article>
63
64 <article class='nobackground'>
65 <h3>
66 今週の作業 [~ 2011/06/12 ]
67 </h3>
68 <p>
69 64bit へ移行するソースの理解と作業 <br>
70 コンパイラについて
71 </p>
72 </article>
73
74 <article>
75 <h3> compiler </h3>
76 <p>gcc</p>
77 <ul>binutils
78 <li>as</li>
79 <li>ld</li>
80 </ul>
81 </article>
82
83 <article class='nobackground'>
84 <h3>
85 MSR (Model Specific Register)
86 </h3>
87 <p>
88 モデル固有レジスタ<br>
89 CPU 内部制御用のレジスタ群<br>
90 RDMSR WRMSR 命令を使用して読み書き<br>
91 </p>
92 <h4>
93 機能
94 </h4>
95 <ul>
96 <li>メモリキャッシュ制御</li>
97 <li>拡張機能の有効/無効</li>
98 <li>Microcode の更新(Intel Only)</li>
99 <li>パフォーマンスモニタの制御</li>
100 <li>温度測定</li>
101 <li>デバッグ制御</li>
102 <li>マシンチェック</li>
103 </ul>
104
105 </article>
106
107 <article class='nobackground'>
108 <h3>
109 MSR を操作する命令
110 </h3>
111 <h4>
112 RDMSR
113 </h4>
114 <p>
115 ecx レジスタに MSR のアドレスを指定すると edx:eax レジスタに MSR の内容を読み込む。<br>
116 上位32bit が edx , 下位 32bit が eax へ入る。
117 </p>
118 <h4>
119 RDMSR
120 </h4>
121 <p>
122 ecx レジスタに指定したMSR のアドレスに、 edx:eax レジスタの内容を書き込む。<br>
123 </p>
124
125 </article>
126 <article class='nobackground'>
127 <section>
128 <pre>
129 #define MSR_EFER 0xc0000080 /* extended feature register */
130 #define _EFER_LME 8 /* Long mode enable */
131
132 /* Enable Long mode in EFER (Extended Feature Enable Register) */
133 movl $MSR_EFER, %ecx
134 rdmsr
135 btsl $_EFER_LME, %eax
136 wrmsr
137 </pre>
138 </section>
139 </article>
140
141 <article class='nobackground'>
142 <h3>
143 今後やること
144 </h3>
145 <ul>
146 <li>Task Manager のソースと論文を読む</li>
147 <li> 32bit mode から 64bit mode (long mode) へ。</li>
148 </ul>
149 </article>
150
151 <article class='nobackground'>
152 </article>
153
154 <article class='nobackground'>
155 <h3> Multiboot Specification </h3>
156 Multiboot Specification で規定された少量の規定を満たせばこの企画に準拠したブートローダー(ex. grub) から起動できる。<br>
157 Multiboot Specification2 が作られており、grub2 (gurb の最新 grub1.99 )が対応しているため、Multiboot Specification2 に対応させる必要がある。<br>
158 </p>
159 </article>
160
161 <article class='nobackground'>
162 <h3> Physical Address Extension (PAE)</h3>
163 <p>
164 物理アドレス拡張。<br>
165 32bit CPU で 4GiB以上のメモリを扱う技術。<br>
166 AMD の AMD 64 アーキテクチャと Interl 64 アーキテクチャでは PAE のページテーブルエントリ構造を保ったまま512エントリをもった4段のページテーブル構造にすることで仮想アドレス空間を48、物理アドレス空間を52bit まで拡張。<br>
167 IA-32 の PAE 互換を使用する場合物理アドレス空間の範囲は64bit mode で使った場合と同様。<br>
168 </p>
169 </article>
170
171 <article class='nobackground'>
172 <h3> Intel x86 architectures --- Segment Descripter </h3>
173 <ul>
174 <li> Interrupt Descriptor Table --- 割り込みの設定に使われる</li>
175 <li> Global Descripter Table --- すべてのプログラムから共通にアクセスするセグメントを定義する </li>
176 <li> Local Descriptor Table --- タスク単位に存在する</li>
177 </ul>
178 </article>
179
180 <article class='nobackground'>
181 <h3>
182 Enable long mode
183 </h3>
184 <p>最初にCPUのIDを確認し、Long mode が使用可能かチェックする。
185 <ul>
186 <li>ページングを不許可にする</li>
187 <li> CR4 レジスタへ PAE を許可するためのbit をセットする</li>
188 <li> CR3 を PML4 と一緒にロードする</li>
189 <li> long mode を MSR の 0xC0000080 の EEER.LME フラグを
190 セットすることによって許可する</li >
191 <li></li>
192 <li>ページングを許可する</li>
193 </ul>
194
195 </article>
196 <article class='nobackground'>
197 <h3>
198 linux kernel 3.3
199 </h3>
200 <p>
201 arch/x86/boot/compressed/head_64.S で protect mode からlong mode へ移行するアセンブラが記述してある。<br>
202 64bit の GDT (Global Descripter Table) や PAE (Physical Address Extension) などもこのソースで用意している。<br>
203 </p>
204
205 </article>
206
207
208 <article class='nobackground'>
209 <h2>
210 END
211 </h2>
212 </article>
213
214 <article class='nobackground'>
215
216 </article>
217
218 <article class='nobackground'>
219 <h3>
220 UEFI【Unified Extensible Firmware Interface】
221 </h3>
222 <p>
223 OS とプラットフォームファームウェアとの間のソフトウェアインターフェースを定義する「仕様」<br>
224 BIOS との置き換えになる。特定のプロセッサやアーキテクチャに限定されない。<br>
225 2005 年に EFI から標準化され、 UEFI へ名前が変更された。
226 </p>
227 <img src='images/SoftWareStack.png'>
228 </article>
229 <article class='nobackground'>
230 <h3>
231 UEFI 特徴
232 </h3>
233 <p>
234 2TiB を超える大きなディスクからブート可能<br>
235 CPU に依存しないアーキテクチャ<br>
236 CPU に依存しないドライバ<br>
237 ネットワークも使用可能な柔軟なプレOS環境<br>
238 MBR GUID サポート-&gt;2TB 以上のシリアルATA HDD から起動可能<br>
239 BIOS -&gt; 16 bit プロセッサモード 1MB アドレス空間<br>
240 UEFI -&gt; 32 bit ,64 bit のプロセッサモード<br>
241 -&gt; ブート前に 64bit アドレッシングの全メモリに直接アクセス可能
242 </p>
243 </article>
244
245 <article class='nobackground'>
246 <h3>サポート</h3>
247 <p>
248 VMware Fusion<br>
249 QEMU<br>
250 ViertualBox 3.1 〜(Unix/Linux)
251
252 </p>
253 <h3>引用</h3>
254 <p>
255 wikipedia UEFI
256 </p>
257 </article>
258
259 <article class='nobackground'>
260 <h3>xv6</h3>
261 <p>
262 MIT が operating systems Engineering という授業で使うために開発した OS 。<br>
263 Sixth Edition Unix が元になっている。
264 </p>
265 <p>
266 VMware Fusion で動かすことに成功。
267 </p>
268
269 </article>
270
271
272 <article class='nobackground'>
273 <h3>
274 </h3>
275 <ul class="build">
276 <li>
277 This is an example of a list
278 </li>
279 <li>
280 The list items fade in
281 </li>
282 <li>
283 Last one!
284 </li>
285 </ul>
286
287 <div class="build">
288 <p>Any element with child nodes can build.</p>
289 <p>It doesn't have to be a list.</p>
290 </div>
291 </article>
292
293 <article class='smaller'>
294 <h3>
295 Slide with bullet points (small font)
296 </h3>
297 <ul>
298 <li>
299 Use this template to create your presentation
300 <li>
301 Use the provided color palette, box and arrow graphics, and
302 chart styles
303 <li>
304 Instructions are provided to assist you in using this
305 presentation template effectively
306 <li>
307 At all times strive to maintain Google's corporate look and feel
308 </ul>
309 </article>
310
311 <article class='nobackground'>
312 <h3>
313 Slide with a table
314 </h3>
315
316 <table>
317 <tr>
318 <th>
319 Name
320 <th>
321 Occupation
322 <tr>
323 <td>
324 Luke Mahé
325 <td>
326 V.P. of Keepin’ It Real
327 <tr>
328 <td>
329 Marcin Wichary
330 <td>
331 The Michael Bay of Doodles
332 </table>
333 </article>
334
335 <article class='smaller'>
336 <h3>
337 Slide with a table (smaller text)
338 </h3>
339
340 <table>
341 <tr>
342 <th>
343 Name
344 <th>
345 Occupation
346 <tr>
347 <td>
348 Luke Mahé
349 <td>
350 V.P. of Keepin’ It Real
351 <tr>
352 <td>
353 Marcin Wichary
354 <td>
355 The Michael Bay of Doodles
356 </table>
357 </article>
358
359 <article class='nobackground'>
360 <h3>
361 Styles
362 </h3>
363 <ul>
364 <li>
365 <span class='red'>class="red"</span>
366 <li>
367 <span class='blue'>class="blue"</span>
368 <li>
369 <span class='green'>class="green"</span>
370 <li>
371 <span class='yellow'>class="yellow"</span>
372 <li>
373 <span class='black'>class="black"</span>
374 <li>
375 <span class='white'>class="white"</span>
376 <li>
377 <b>bold</b> and <i>italic</i>
378 </ul>
379 </article>
380
381 <article class='nobackground'>
382 <h2>
383 Segue slide
384 </h2>
385 </article>
386
387 <article class='nobackground'>
388 <h3>
389 Slide with an image
390 </h3>
391 <p>
392 <img style='height: 500px' src='images/example-graph.png'>
393 </p>
394 <div class='source'>
395 Source: Sergey Brin
396 </div>
397 </article>
398
399 <article class='nobackground'>
400 <h3>
401 Slide with an image (centered)
402 </h3>
403 <p>
404 <img class='centered' style='height: 500px' src='images/example-graph.png'>
405 </p>
406 <div class='source'>
407 Source: Larry Page
408 </div>
409 </article>
410
411 <article class='fill'>
412 <h3>
413 Image filling the slide (with optional header)
414 </h3>
415 <p>
416 <img src='images/example-cat.jpg'>
417 </p>
418 <div class='source white'>
419 Source: Eric Schmidt
420 </div>
421 </article>
422
423 <article class='nobackground'>
424 <h3>
425 This slide has some code
426 </h3>
427 <section>
428 <pre>
429 &lt;script type='text/javascript'&gt;
430 // Say hello world until the user starts questioning
431 // the meaningfulness of their existence.
432 function helloWorld(world) {
433 for (var i = 42; --i &gt;= 0;) {
434 alert('Hello ' + String(world));
435 }
436 }
437 &lt;/script&gt;
438 &lt;style&gt;
439 p { color: pink }
440 b { color: blue }
441 u { color: 'umber' }
442 &lt;/style&gt;
443 </pre>
444 </section>
445 </article>
446
447 <article class='smaller'>
448 <h3>
449 This slide has some code (small font)
450 </h3>
451 <section>
452 <pre>
453 &lt;script type='text/javascript'&gt;
454 // Say hello world until the user starts questioning
455 // the meaningfulness of their existence.
456 function helloWorld(world) {
457 for (var i = 42; --i &gt;= 0;) {
458 alert('Hello ' + String(world));
459 }
460 }
461 &lt;/script&gt;
462 &lt;style&gt;
463 p { color: pink }
464 b { color: blue }
465 u { color: 'umber' }
466 &lt;/style&gt;
467 </pre>
468 </section>
469 </article>
470
471 <article class='nobackground'>
472 <q>
473 The best way to predict the future is to invent it.
474 </q>
475 <div class='author'>
476 Alan Kay
477 </div>
478 </article>
479
480 <article class='smaller'>
481 <q>
482 A distributed system is one in which the failure of a computer
483 you didn’t even know existed can render your own computer unusable.
484 </q>
485 <div class='author'>
486 Leslie Lamport
487 </div>
488 </article>
489
490 <article class='nobackground'>
491 <h3>
492 A slide with an embed + title
493 </h3>
494
495 <iframe src='http://www.google.com/doodle4google/history.html'></iframe>
496 </article>
497
498 <article class='nobackground'>
499 <iframe src='http://www.google.com/doodle4google/history.html'></iframe>
500 </article>
501
502 <article class='fill'>
503 <h3>
504 Full-slide embed with (optional) slide title on top
505 </h3>
506 <iframe src='http://www.google.com/doodle4google/history.html'></iframe>
507 </article>
508
509 <article class='nobackground'>
510 <h3>
511 Thank you!
512 </h3>
513
514 <ul>
515 <li>
516 <a href='http://www.google.com'>google.com</a>
517 </ul>
518 </article>
519
520 </section>
521
522 </body>
523 </html>