0
|
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</p>
|
|
40 <p>Feb 5 2013</p>
|
|
41 </article>
|
|
42
|
|
43 <article>
|
|
44 <h3>研究目的[1/2]</h3>
|
|
45 <p>
|
|
46 本研究では code segment ,datasegment に沿った OS を実装することを目的とする。<br>
|
|
47 その実装には、本研究室で開発された Continuation based C (CbC)を用いる。<br>
|
|
48 CbC は C 言語よりも低くアセンブラより高い層で記述できる言語である。C の仕様からループ制御や関数コールを取り除いている。これによりスタックの操作やループ、関数呼び出しなどのより低レベルでの最適化をソースコードレベルで行うことができる。<br>
|
|
49 </p>
|
|
50 </article>
|
|
51
|
|
52 <article>
|
|
53 <h3>研究目的[2/2]</h3>
|
|
54 <p>
|
|
55 Codesegment, Datasegment を意識した設計にし、メモリ外へのアクセスを制限しセキュリティの向上と、malloc/free などのメモリ管理を OS に行わせ、プログラマの負担を減らす。<br>
|
|
56 </article>
|
|
57
|
|
58 <article>
|
|
59 <h3>
|
|
60 今週の作業 [ ~ 2013/02/05 ]
|
|
61 </h3>
|
|
62 <ul>
|
|
63 <li>CbC で Mach-O を読む</li>
|
|
64 </ul>
|
|
65 </article>
|
|
66
|
|
67 <article>
|
|
68 <h3>
|
|
69 Mach-O
|
|
70 </h3>
|
|
71 <ul>
|
|
72 <li>OS X 標準のバイナリファイルフォーマット</li>
|
|
73 <li>複数のアーキテクチャのバイナリを保持できる</li>
|
|
74 </ul>
|
|
75 <img src="Mach-O_File_Format.png" >
|
|
76 </article>
|
|
77
|
|
78 <article>
|
|
79 <h3>
|
|
80 配置
|
|
81 </h3>
|
|
82 <img style="float:left" src="mach_o_format.png">
|
|
83 <ul>
|
|
84 <li>左が実際のファイル上での並び方</li>
|
|
85 <li>segment command ごとに配置されるメモリアドレスをもつ</li>
|
|
86 <li>segment command に属する section にも</li>
|
|
87 <li>これ以外にも command はあるが、共有ライブラリ関係</li>
|
|
88 </ul>
|
|
89 </article>
|
|
90
|
|
91 <article>
|
|
92 <h3>
|
|
93 EFI 上でのファイル操作
|
|
94 </h3>
|
|
95 <h5>ディスクを開く</h5>
|
|
96 <pre>
|
|
97 uefi_call_wrapper(
|
|
98 EFI_FILE_IO_INTERFACE volume->OpenVolume,
|
|
99 2,
|
|
100 EFI_FILE_IO_INTERFACE *volume,
|
|
101 EFI_FILE_HANDLE fh)
|
|
102 </pre>
|
|
103 </article>
|
|
104
|
|
105 <article>
|
|
106 <h5>file open</h5>
|
|
107 <pre>
|
|
108 uefi_call_wrapper(
|
|
109 EFI_FILE_IO_INTERFACE volume->Open,
|
|
110 5,
|
|
111 EFI_FILE_IO_INTERFACE volume,
|
|
112 EFI_FILE_HANDLE fh,
|
|
113 filename,
|
|
114 EFI_MODE_READ,
|
|
115 (UINT64)0)
|
|
116 </pre>
|
|
117 </article>
|
|
118
|
|
119 <article>
|
|
120 <h5>file read</h5>
|
|
121 <pre>
|
|
122 uefi_call_wrapper(
|
|
123 EFI_FILE_IO_INTERFACE volume->Read,
|
|
124 3,
|
|
125 EFI_FILE_HANDLE fh,
|
|
126 size,
|
|
127 buf)
|
|
128 </pre>
|
|
129 </article>
|
|
130
|
|
131 <article>
|
|
132 <h3>
|
|
133 今後やること
|
|
134 </h3>
|
|
135 <ul>
|
|
136 <li>引き続き elilo のソース読む</li>
|
|
137 <li>Mach-O / ELF のローダを書く</li>
|
|
138 <li>特権/ユーザーモードについて</li>
|
|
139 </ul>
|
|
140 </article>
|
|
141
|
|
142 </section>
|
|
143
|
|
144 </body>
|
|
145 </html>
|