0
|
1 <!DOCTYPE HTML>
|
|
2
|
|
3 <html lang="Japanese">
|
|
4 <head>
|
|
5 <title>Monadに基づくMeta計算を基本とするGears OSの設計</title>
|
|
6 <meta charset="UTF-8">
|
|
7 <meta name="viewport" content="width=1274, user-scalable=no">
|
|
8 <meta name="generator" content="Slide Show (S9)">
|
|
9 <meta name="author" content="Tatsuki IHA">
|
|
10 <link rel="stylesheet" href="themes/ribbon/styles/style.css">
|
|
11 </head>
|
|
12 <body class="list">
|
|
13 <header class="caption">
|
|
14 <h1>Monadに基づくMeta計算を基本とするGears OSの設計</h1>
|
|
15 <p>Tatsuki IHA</p>
|
|
16 </header>
|
|
17 <div class="slide cover" id="Cover"><div>
|
|
18 <section>
|
|
19 <header>
|
|
20 <h2>Monadに基づくMeta計算を基本とするGears OSの設計</h2>
|
|
21 <h3 id="author">Tatsuki IHA</h3>
|
|
22 <h3 id="profile"></h3>
|
|
23 </header>
|
|
24 </section>
|
|
25 </div></div>
|
|
26
|
|
27 <!-- todo: add slide.classes to div -->
|
|
28 <!-- todo: create slide id from header? like a slug in blogs? -->
|
|
29
|
|
30 <div class="slide" id="2"><div>
|
|
31 <section>
|
|
32 <header>
|
|
33 <h1 id="section">研究目的</h1>
|
|
34 </header>
|
|
35 <!-- === begin markdown block ===
|
|
36
|
|
37 generated by markdown/1.2.0 on Ruby 2.2.2 (2015-04-13) [x86_64-darwin14]
|
|
38 on 2015-05-19 17:52:17 +0900 with Markdown engine kramdown (1.6.0)
|
|
39 using options {}
|
|
40 -->
|
|
41
|
|
42 <!-- _S9SLIDE_ -->
|
|
43
|
|
44 <ul>
|
|
45 <li>当研究室では, プログラムをコードセグメント, データセグメントを用いた並列フレームワークの開発を行っている.</li>
|
|
46 <li>Gears OSでは, 並列実行に必要なMetaな機能を関数型言語におけるMonadの原理に基づいて実現する.</li>
|
|
47 <li>また, Code Segment, Data SegmentそれぞれにMeta Code Segment, Meta Data Segmentを付属させる.</li>
|
|
48 <li>この研究ではGears OSの機能をCbC(Continuation based C)で実装、評価することを目的とする.</li>
|
|
49 </ul>
|
|
50
|
|
51
|
|
52
|
|
53 </section>
|
|
54 </div></div>
|
|
55
|
|
56 <div class="slide" id="3"><div>
|
|
57 <section>
|
|
58 <header>
|
|
59 <h1 id="gear-box">Gear Box</h1>
|
|
60 </header>
|
|
61 <!-- _S9SLIDE_ -->
|
|
62
|
|
63 <ul>
|
|
64 <li>基本はState Diagramで記述</li>
|
|
65 <li>State DiagramのStateをCode Gear(Code Segment)</li>
|
|
66 <li>Code Gear間にData Gear(Data Segment)を記述</li>
|
|
67 </ul>
|
|
68
|
|
69
|
|
70
|
|
71 </section>
|
|
72 </div></div>
|
|
73
|
|
74 <div class="slide" id="4"><div>
|
|
75 <section>
|
|
76 <header>
|
|
77 <h1 id="gear-box-1">Gear Box</h1>
|
|
78 </header>
|
|
79 <!-- _S9SLIDE_ -->
|
|
80
|
|
81 <p><img src="./pictures/GearBoxExample.svg" alt="GearBoxExample" /></p>
|
|
82
|
|
83
|
|
84
|
|
85 </section>
|
|
86 </div></div>
|
|
87
|
|
88 <div class="slide" id="5"><div>
|
|
89 <section>
|
|
90 <header>
|
|
91 <h1 id="gear-box-2">Gear Box</h1>
|
|
92 </header>
|
|
93 <!-- _S9SLIDE_ -->
|
|
94
|
|
95 <p><img src="./pictures/MetaGearBoxExample.svg" alt="MetaGearBoxExample" /></p>
|
|
96
|
|
97
|
|
98
|
|
99 </section>
|
|
100 </div></div>
|
|
101
|
|
102 <div class="slide" id="6"><div>
|
|
103 <section>
|
|
104 <header>
|
|
105 <h1 id="synchronized-queue">Synchronized Queue</h1>
|
|
106 </header>
|
|
107 <!-- _S9SLIDE_ -->
|
|
108
|
|
109 <p><img src="./pictures/synchronizedQueueSender.svg" alt="GearBoxExample" /></p>
|
|
110
|
|
111
|
|
112
|
|
113 </section>
|
|
114 </div></div>
|
|
115
|
|
116 <div class="slide" id="7"><div>
|
|
117 <section>
|
|
118 <header>
|
|
119 <h1 id="synchronized-queue-1">Synchronized Queue</h1>
|
|
120 </header>
|
|
121 <!-- _S9SLIDE_ -->
|
|
122
|
|
123 <p><img src="./pictures/synchronizedQueueReceiver.svg" alt="GearBoxExample" /></p>
|
|
124
|
|
125
|
|
126
|
|
127 </section>
|
|
128 </div></div>
|
|
129
|
|
130 <div class="slide" id="8"><div>
|
|
131 <section>
|
|
132 <header>
|
|
133 <h1 id="synchronized-queue-2">Synchronized Queue</h1>
|
|
134 </header>
|
|
135 <!-- _S9SLIDE_ -->
|
|
136
|
|
137 <ul>
|
|
138 <li>各Threadに共通のData Gearをもたせる</li>
|
|
139 <li>Meta Code Segmentでsynchronizedを表現する</li>
|
|
140 <li>つまり, Meta Code Segmentを書き換えることで実装を変更できる</li>
|
|
141 </ul>
|
|
142
|
|
143
|
|
144
|
|
145 </section>
|
|
146 </div></div>
|
|
147
|
|
148 <div class="slide" id="9"><div>
|
|
149 <section>
|
|
150 <header>
|
|
151 <h1 id="synchronized-queue-3">Synchronized Queue</h1>
|
|
152 </header>
|
|
153 <!-- _S9SLIDE_ -->
|
|
154
|
|
155 <ul>
|
|
156 <li>CASでの実装
|
|
157 <ul>
|
|
158 <li>Meta Put, Meta GetでCasを行い, Data Gearを更新</li>
|
|
159 </ul>
|
|
160 </li>
|
|
161 <li>pthread_mutex_lockでの実装
|
|
162 <ul>
|
|
163 <li>Meta Sender, Meta ReciverでData Gearをlock</li>
|
|
164 <li>Meta Put, Meta Getでunlock</li>
|
|
165 </ul>
|
|
166 </li>
|
|
167 <li>Semphoreでの実装
|
|
168 <ul>
|
|
169 <li>読み込み用, 書き込み用のSemphoreを用意</li>
|
|
170 <li>Meta Put, Meta Getでsem_p, sem_vを行う</li>
|
|
171 </ul>
|
|
172 </li>
|
|
173 </ul>
|
|
174 <!-- === end markdown block === -->
|
|
175
|
|
176 </section>
|
|
177 </div></div>
|
|
178
|
|
179
|
|
180 <script src="scripts/script.js"></script>
|
|
181 <!-- Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ -->
|
|
182 </body>
|
|
183 </html>
|