annotate slide/prosym.html @ 17:d1dff3305e0d

upgrade
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sat, 25 May 2019 15:44:23 +0900
parents 2b71bf2c73c9
children 3e0a1680ae59
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 <!DOCTYPE html>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 <html>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 <head>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 <meta http-equiv="content-type" content="text/html;charset=utf-8">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 <title>分散ネットワークChristieによるBlockchainの実装</title>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 <meta name="generator" content="Slide Show (S9) v4.0.1 on Ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin16]">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 <meta name="author" content="Takahiro Ikki, Shinji Kono" >
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 <!-- style sheet links -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 <link rel="stylesheet" href="s6/themes/screen.css" media="screen">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <link rel="stylesheet" href="s6/themes/print.css" media="print">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 <!-- JS -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 <script src="s6/js/jquery-1.11.3.min.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 <script src="s6/js/jquery.slideshow.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 <script src="s6/js/jquery.slideshow.counter.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 <script src="s6/js/jquery.slideshow.controls.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 <script src="s6/js/jquery.slideshow.footer.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 <script src="s6/js/jquery.slideshow.autoplay.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 <!-- prettify -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 <link rel="stylesheet" href="scripts/prettify.css">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 <script src="scripts/prettify.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 <script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 $(document).ready( function() {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 Slideshow.init();
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 $('code').each(function(_, el) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 if (!el.classList.contains('noprettyprint')) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 el.classList.add('prettyprint');
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 });
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 prettyPrint();
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 } );
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 </script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 <!--[if IE]>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 <script src="s6/js/jquery.microsoft.js"></script>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 <![endif]-->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 </head>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 <body>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 <div class="layout">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 <div id="header"></div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 <div id="footer">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 <div align="right">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 <img src="s6/images/logo.svg" width="200px">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 <div class="presentation">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 <div class='slide cover'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 <table width="90%" height="90%" border="0" align="center">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 <tr>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 <td>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 <div align="center">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 <h1><font color="#808db5">分散ネットワークChristieによるBlockchainの実装</font></h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 </td>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 </tr>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 <tr>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 <td>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 <div align="left">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 Takahiro Ikki, Shinji Kono
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 琉球大学
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 </td>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 </tr>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 </table>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
94 <h2 id="研究目的">研究目的</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 <li>コンピュータのデータの不整合は, 誤作動や複数人によるデータの同時書き込みによって発生し, 特に分散環境下で問題となる.</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 <li>ブロックチェーンはデータの分散ができ, 不整合の検知が可能な仕組みとなっている.</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 <li>当研究室で開発中のGearsOSの分散システムの技術として, ブロックチェーンが使用できるか調査中である.</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 <li>将来的にGearsOSに組み込む予定のある分散フレームワークChristieに分散フレームワークを実装することにした. (?次にも同様の記述がある)</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 <!--
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 # OS の拡張性と信頼性の両立
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
114 <h2 id="christie">Christie</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 <li>Christieは当研究室で開発している分散フレームワークである.</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 <li>現在はjava上で開発されているが, GearsOSに組み込む予定があるため, 言語Continuation based Cへ書き換え可能な構成となっている. (?GeasOSの解説がより欲しい?)</li>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
118 <li>言語CbCと近い概念として以下の概念が存在する。
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
119 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
120 <li>CodeGear(以下CG)</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
121 <li>CodeGearManager(以下CGM)</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
122 <li>DataGear(以下DG)</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
123 <li>DataGearManager(以下DGM)</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
124 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
125 </li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
134 <h2 id="christieの言語概念">Christieの言語概念</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 <li>CGはスレッド, クラスに相当し, javaの継承を用いて記述する.</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 <li>DGは変数データに相当し, CG内でアノテーションを用いて変数データを取り出せる.</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 <li>CGMはノードであり, DG, CG, DGMを管理する.</li>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
139 <li>DGMはDGを管理するものであり, putという操作により, 変数データ(DG)を格納できる.
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
140 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
141 <li>DGMにはLocalDGMとRemoteDGMが存在する。LocalDGMは各ノード固有のデータベースである。RemoteDSMは他ノードのLocalDGMに対応するproxyであり、接続しているノードの数だけ存在する。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
142 <li>DGMのput操作を行う際にはLocalとRemoteのどちらかを選ぶ.Localであれば、LocalのCGMが管理するDGMに対しDGを格納し, Remoteの場合は接続したRemoteさきのCGMのDGMにDGを格納する.</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
143 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
144 </li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
153 <h2 id="dgm">DGM</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 <li>RocalDGMを立ち上げるにはDataSegmentクラスが提供する、connectメソッドを用い、接続したいポートのipアドレスとport番号、そして任意のManager名を指定することで立ち上げる。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 <li>立ち上げ後はManager名を指定してDataSegmentAPI用いてDSのやり取りを行うため、プログラマはManager名を意識することでLocalへの操作もRemoteへの操作も同様に扱える。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
165 <h2 id="dgのアノテーション">DGのアノテーション</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 <li>DGを取り出す際にはCG内で宣言した変数データにアノテーションをつける。DGアノテーションには
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
168 Take、Peek、TakeFrom、PeekFrom、の4つがある。
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
169 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
170 <li>Take
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
171 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
172 <li>先頭のDGを読み込み、そのDGを削除する。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
173 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
174 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
175 <li>Peek
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
176 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
177 <li>先頭のDGを読み込むが、DGが消去されない。そのため特に操作をしない場合、同じデータを参照し続ける。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
178 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
179 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
180 <li>TakeFrom
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
181 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
182 <li>Takeと似ているが、Remote DGM nameをしているすることで、その接続先のDGM からTake操作をおこえる。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
183 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
184 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
185 <li>PeekFrom
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
186 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
187 <li>Peekと似ているが、 Remote DGM nameをしているすることで、その接続先のDGM からPeek操作をおこえる。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
188 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
189 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
190 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
191 </li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
200 <h2 id="christieのコード例">Christieのコード例</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 <pre><code class="language-code">package christie.example.HelloWorld;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 import christie.codegear.CodeGearManager;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 import christie.codegear.StartCodeGear;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 public class StartHelloWorld extends StartCodeGear {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 public StartHelloWorld(CodeGearManager cgm) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 super(cgm);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 public static void main(String[] args){
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 CodeGearManager cgm = createCGM(10000);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 cgm.setup(new HelloWorldCodeGear());
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 cgm.getLocalDGM().put("helloWorld","hello");
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 cgm.getLocalDGM().put("helloWorld","world");
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
228 <h2 id="annottation">Annottation</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 <li>ChristieではInputDGの指定にはアノテーションを使う。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 <li>アノテーションとはクラスやメソッド、パッケージに対して、付加情報を記述できるJavaのMeta Computationである。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 <li>先頭に@をつけることで記述し、オリジナルのアノテーションを定義することもできるInput
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 となる型の変するを直接宣言し、変数名としてkeyを記述する。その上にアノテーションでTakeもしくはPeekを指定する。
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 <pre><code class="language-code">@Take
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 public String name;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 <pre><code class="language-code">@TakeFrom("remote")
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 public String name;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 </li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
249 <h2 id="topologymanager">TopologyManager</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 <li>TopologyManagerとはTopologyを形成するために、参加を表明したノード、TopologyNodeに名前を与え、必要があればノード同士の配線を行うノードである。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 <li>TopologyManagerのTopology形成方法として、静的Topologyと動的Topologyがある。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 <li>動的Topologyは参加を表明したノードに対し、動的にノード同士の関係を作る。例えばTreeを構成する場合、参加したノードから順にrootに近い役割を与え、またCodeGearはノードが参加し、parentに接続された後に実行される。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
262 <h2 id="静的topology">静的Topology</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 <li>静的Toopologyはdotファイルを与えることでノード関係を下の図のようにする。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265 <li>静的Topologyはdotファイルのノード数と同等のTopologyNodeがあって初めて、CodeGearが実行される。
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 <pre><code class="language-Code">digraph test {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 node0 -&gt; node1 [label="right"]
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 node1 -&gt; node2 [label="right"]
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 node2 -&gt; node0 [label="right"]
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 </li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
274
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 <div style="text-align: center;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
276  <img src="../paper/images/ring.pdf" alt="MetaGear" width="300" />
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
279
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
280
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
281 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
282
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
283 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
284 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
285 <h2 id="ブロックチェーンのトランザクション">ブロックチェーンのトランザクション</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
287 <li>ブロックチェーンはP2Pにてネットワーク間が動作している。つまり、ブロックチェーンにはサーバー、クライアントの区別がなく全てのノードが平等である。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
288 <li>ブロックチェーンにおけるブロックは複数のトランザクションをまとめたものである。ブロックの構造は使用するコンセンサスにより変わるが基本的には、previous block hash, merkle root hash, timeが含まれるBlockHeaderとTransactionListにより構成される。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
290
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
291
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
292
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
293 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
294
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
295 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
296 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
297 <h2 id="blockheader">BlockHeader</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
298 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 <li>BlockHeaderには、前のブロックをハッシュ化したもの、トランザクションをまとめたmarkle treeのrootのhash、そのブロックを生成したtimeとなっている。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
300 <li>previous block hashは、前のブロックのパラメータを並べてhash化したものである。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
301 <li>上記のものがそれぞれ連なっていることによって下の図のようなブロック繋がっている。そのため一つが更新されたらそのあとにつながるブロック全てを更新しなければならなくなる。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
302 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
303 <div style="text-align: center;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
304  <img src="../paper/images/chain.pdf" alt="MetaGear" width="600" />
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
305 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
306
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
307
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
308
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
310
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
312 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
313 <h2 id="blockの動作">Blockの動作</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
314 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
315 <li>ブロックが生成された場合、知っているノードにそのブロックをブロードキャストする。通信量を抑えるためにブロックを送ったあと、ブロックをシリアライズして送信する場合もある。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
316 <li>誤りがあればさらにそのノードがブロックをブロードキャストする。そしてTransaction PoolというTransactionをためておく場所から、そのブロックに含まれるTransactionを削除し、新しいブロックを生成する。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
317 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
318
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
319
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
320
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
321 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
322
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
323 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
324 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
325 <h2 id="transaction">Transaction</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 <li>トランザクションとはデータのやり取りを行なった記録の最小単位である。トランザクションの構造は次のとおりである。</li>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
328 <li>TransactionHash
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
329 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
330 <li>トランザクションをハッシュ化したもの。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
331 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
332 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
333 <li>data
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
334 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
335 <li>データ</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
336 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
337 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
338 <li>sendAddress
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
339 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
340 <li>送り元のアドレス。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
341 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
342 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
343 <li>receiveAddress
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
344 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
345 <li>送り先のアカウントのアドレス。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
346 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
347 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
348 <li>signature
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
349 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
350 <li>トランザクションの一部と秘密鍵をSHA256でハッシュ化したもの。ECDSAで署名している。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
351 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
352 </li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
353 <li>トランザクションはノード間で伝搬され、ノードごとに検証される。そして検証を終え、不正なトランザクションであればそれを破棄し、検証に通った場合はTransaction Poolに取り込まれ、また検証したノードからトランザクションがブロードキャストする。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
355
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
356
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
357
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
359
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
362 <h2 id="コンセンサスアルゴリズム">コンセンサスアルゴリズム</h2>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
363 <ul>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
364 <li>fork
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
365 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
366 <li>ブロック生成後にブロードキャストを行うと、ブロック高の同じもしくは高いブロックチェーンにたどり着く状態があり、異なるブロックを持った二つのブロックチェーンのうちどちらかを破棄する必要がある。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
367 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
368 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
369 <li>fork状態を解消するために用いられるのがコンセンサスアルゴリズムである。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
370 <li>ブロックチェーンはパブリックブロックチェーンとコンソーシアムブロックチェーンの場合によってコンセンサスアルゴリズムが変わる。
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
371 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
372 <li>パブリックブロックチェーン
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
373 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
374 <li>不特定たすのノードが参加するブロックチェーンを指す。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
375 <li>不特定多数のノード間、全体のノードの参加数が変わる状況でコンセンサスの変わるアルゴリズムでなければならない。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
376 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
377 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
378 <li>コンソーシアムブロックチェーン
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
379 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
380 <li>許可したノードのみが参加できるブロックチェーンである。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
381 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
382 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
383 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
384 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
385 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
386
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
387
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
388
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
389 </div>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
390
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
391 <div class='slide'>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
392 <!-- _S9SLIDE_ -->
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
393 <h1 id="paxos">Paxos</h1>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
394 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
395 <li>Paxosはノードの多数決によってコンセンサスをとるアルゴリズムである。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
396 <li>Paxosは以下のような問題があっても値を一意に決めることができる。
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
397 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
398 <li>1,プロセス毎に処理の速度が違う。つまりメッセージの返信が遅い可能性がある。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
399 <li>2,通信にどれだけの時間がかかるかわからず、その途中でメッセージが失われる可能性がある。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
400 <li>3,プロセスは停止する可能性もある。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
401 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
402 </li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
403 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
404
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
405
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
406
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
408
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
411 <h1 id="paxosの役割ノード">Paxosの役割ノード</h1>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
412 <ul>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
413 <li>Paxosは3つの役割ノードがある。
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
414 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
415 <li>proposer
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
416 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
417 <li>値を提案するノード。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
418 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
419 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
420 <li>accepter
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
421 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
422 <li>値を決めるノード。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
423 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
424 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
425 <li>lerner
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
426 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
427 <li>accepterから値を集計し、過半数以上のaccepterが持っている値を決める。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
428 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
429 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
430 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
431 </li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
432 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
433
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
434
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
435
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
436 </div>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
437
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
438 <div class='slide'>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
439 <!-- _S9SLIDE_ -->
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
440 <h1 id="paxosの役割定義">Paxosの役割定義</h1>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
441 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
442 <li>提案
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
443 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
444 <li>異なる提案ごとにユニークな提案番号と値からなる。提案番号とは、異なる提案を見分けるための識別子であり、単調増加である。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
445 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
446 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
447 <li>値(提案)がacceptされる
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
448 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
449 <li>accepterによって値(提案)が決まること。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
450 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
451 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
452 <li>値(提案)が選択(chosen)される
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
453 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
454 <li>過半数以上のacceptorによって、値がacceptされた場合、それを値(提案)が選択されたと言う。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
455 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
456 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
457 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
458
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
459
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
460
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
461 </div>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
462
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
463 <div class='slide'>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
464 <!-- _S9SLIDE_ -->
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
465 <h1 id="paxosのアルゴリズム">paxosのアルゴリズム</h1>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
466 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
467 <li>paxosのアルゴリズムは2フューズあり、一つ目のフェーズprepare-promiseと二つ目のフェーズaccept-acceptedの二つに区分される。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
468 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
469
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
470
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
471
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
472 </div>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
473
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
474 <div class='slide'>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
475 <!-- _S9SLIDE_ -->
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
476 <h1 id="paxosのアルゴリズム-prepare-promise">paxosのアルゴリズム prepare-promise</h1>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
477 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
478 <li>(言葉での説明記入?)</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
479 </ul>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
480 <div style="text-align: center;">
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
481  <img src="../paper/images/prepare-promise.pdf" alt="MetaGear" width="600" />
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
482 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
483
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
484
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
485
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
486 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
487
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
488 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
489 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
490 <h1 id="paxosのアルゴリズム-accept-accepted">paxosのアルゴリズム accept-accepted</h1>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
491 <ul>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
492 <li>(1)proposerは過半数のacceptorから返事が来たのなら、次の提案をaccepterに送る。これをacceptリクエストという。
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
493 <ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
494 <li>(a)もし、約束のみ帰って来ているのならば、任意の値vをprepareリクエストで送った提案に設定する。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
495 <li>(b)もし、acceptされた提案が帰って来たら、その中で最大の提案番号v’をprepareリクエストで送った提案の値として設定する。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
496 </ul>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
497 </li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
498 <li>(2)acceptorはacceptリクエストが来た場合、Promiseした提案よりもacceptリクエストで提案された番号が低ければ、その提案を拒否する。それ以外の場合、acceptする。</li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
499 </ul>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
500 <div style="text-align: center;">
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
501  <img src="../paper/images/accept-accepted.pdf" alt="MetaGear" width="600" />
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
502 </div>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
503
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
504
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
505
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
506 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
507
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
508 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
509 <!-- _S9SLIDE_ -->
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
510 <h1 id="paxos-1">Paxos</h1>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
511 <ul>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
512 <li>Proof of Workと比較しメッセージ通信量と耐障害性のトレードオフになっている。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
513 <li>Paxosでコンセンサスを取る際、Proof of Workと比較して次のようなメリットがある。
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
514 <ul>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
515 <li>CPUにリソースを消費しない。</li>
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
516 <li>Transactionの確定に時間がかからない。</li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
517 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
518 </li>
17
d1dff3305e0d upgrade
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
519 <li>Paxos自体がリーダー選出に向いているアルゴリズムである。そのため、リーダーを決定し、そのノードのブロックチェーンの一貫性のみをかんがえることができる。</li>
16
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
520 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
521
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
522
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
523
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
524 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
525
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
526 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
527 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 <h1 id="gears-os-の構成図">Gears OS の構成図</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
529
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
530 <div style="text-align: center;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
531  <img src="./fig/gears_structure.pdf" alt="gears_structure" width="900" />
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
532 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
533
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
534
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
535
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
536 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
537
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
538 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
539 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
540 <h1 id="context">Context</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
541 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
542 <li>Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
543 <li>Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
544 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
545 <div style="text-align: center;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
546  <img src="./fig/Gearef.pdf" alt="gearef" width="900" />
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
547 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
548
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
549
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
550
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
551 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
552
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
553 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
554 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
555 <h1 id="context-の定義">context の定義</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
556
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
557 <pre><code class="language-contexr">/* context define */
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
558 struct Context {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
559 int codeNum; //実行可能な Code Gear の数
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
560 __code (**code) (struct Context*); //実行可能な code Gear のリスト
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
561 void* heapStart; //Data Gear の Allocate用のヒープ
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
562 void* heap;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
563 long heapLimit;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
564 int dataNum; //Data Gear の数
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
565 union Data **data; //Data Gear のリスト
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
566 };
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
567 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
568
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
569 <p>#Context</p>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
570 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
571 <li>Code/Data Gear の名前は enum で定義される。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
572 <li>Code/Data Gear の名前とポインタの対応は enum を使って行われる。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
573 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
574
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
575 <pre><code class="language-code">enum Code {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
576 C_cg1,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
577 C_cg2,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
578 };
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
579 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
580
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
581 <pre><code class="language-data">enum Data {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
582 D_dg1,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
583 D_dg2,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
584 };
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
585 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
586
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
587
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
588
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
589 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
590
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
591 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
592 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
593 <h1 id="data-gear-の定義">Data Gear の定義</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
594 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
595 <li>Data Gear は union と struxt を用いて定義される</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
596 <li>これをもとに必要な Data Gear の allocate を行う</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
597 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
598
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
599 <pre><code class="language-data">union Data {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
600 struct Time {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
601 enum Code next;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 double time;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
603 } time;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
604 struct LoopCounter {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
605 int i;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
606 } loopCounter;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
607 ...
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
608 };
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
609 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
610
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
611 <!--
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
612 # CbC による Gears OS 記述の問題点
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
613 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
614 - 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
615 - そのためのプロトタイプとして perl スクリプトを作成した。
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
616 -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
617
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
618
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
619
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
620 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
621
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
622 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
623 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
624 <h1 id="interface">Interface</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
625 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
626 <li>Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
627 <li>Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
628 <li>Interface の操作に対応する Code Gear の引数は Interface に定義されている Data Gear を通して行われる。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
629 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
630
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
631
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
632
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
633 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
634
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
635 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
636 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
637 <h1 id="interface-のコード">Interface のコード</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
638 <pre><code class="language-interface">typedef struct Stack&lt;Type, Impl&gt;{
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
639 union Data* stack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
640 union Data* data;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
641 union Data* data1;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
642 __code whenEmpty(...);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
643 __code clear(Impl* stack,__code next(...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
644 __code push(Impl* stack,Type* data, __code next(...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
645 __code pop(Impl* stack, __code next(Type* data, ...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
646 __code pop2(Impl* stack, __code next(Type* data, Type* data1, ...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
647 __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
648 __code get(Impl* stack, __code next(Type* data, ...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
649 __code get2(Impl* stack, __code next(Type* data, Type* data1, ...));
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
650 __code next(...);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
651 } Stack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
652 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
653
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
654
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
655
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
656 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
657
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
658 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
659 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
660 <h1 id="interface-の実装例">Interface の実装例</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
661
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
662 <pre><code class="language-impl">Stack* createSingleLinkedStack(struct Context* context) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
663 struct Stack* stack = new Stack();
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
664 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
665 stack-&gt;stack = (union Data*)singleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
666 singleLinkedStack-&gt;top = NULL;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
667 stack-&gt;push = C_pushSingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
668 stack-&gt;pop = C_popSingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
669 stack-&gt;pop2 = C_pop2SingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
670 stack-&gt;get = C_getSingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
671 stack-&gt;get2 = C_get2SingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
672 stack-&gt;isEmpty = C_isEmptySingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
673 stack-&gt;clear = C_clearSingleLinkedStack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
674 return stack;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
675 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
676 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
677
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
678
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
679
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
680 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
681
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
682 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
683 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
684 <h1 id="interface-の実装例-1">Interface の実装例</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
685
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
686 <pre><code class="language-impl">__code pushSingleLinkedStack(struct SingleLinkedStack* stack,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
687 union Data* data, __code next(...)) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
688 Element* element = new Element();
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
689 element-&gt;next = stack-&gt;top;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
690 element-&gt;data = data;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
691 stack-&gt;top = element;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
692 goto next(...);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
693 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
694
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
695 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
696
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
697
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
698
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
699 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
700
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
701 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
702 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
703 <h1 id="interface-の使用例">interface の使用例</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
704
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
705 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
706 <li>goto interface-&gt;code() と記述する。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
707 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
708
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
709 <pre><code class="language-code">__code stackTest1(struct Stack* stack) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
710 Node* node = new Node();
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
711 node-&gt;color = Red;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
712 goto stack-&gt;push(node, stackTest2);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
713 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
714
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
715 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
716
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
717 <!--
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
718
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
719 <div style="text-align: center;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
720  <img src="./images/multiComponent.pdf" alt="message" width="600">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
721 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
722
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
723 -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
724
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
725
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
726
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
727 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
728
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
729 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
730 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
731 <h1 id="stub-code-gear">stub Code Gear</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
732
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
733 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
734 <li>Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
735 <li>しかし、Meta Data Gear である Context をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
736 <li>そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
737 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
738
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
739
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
740
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
741 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
742
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
743 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
744 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
745 <h1 id="stub-code-gear-の例">stub Code Gear の例</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
746 <pre><code class="language-stub">__code clearSingleLinkedStack(struct Context *context,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
747 struct SingleLinkedStack* stack,enum Code next) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
748 stack-&gt;top = NULL;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
749 goto meta(context, next);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
750 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
751
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
752 __code clearSingleLinkedStack_stub(struct Context* context) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
753 SingleLinkedStack* stack =
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
754 (SingleLinkedStack*)GearImpl(context, Stack, stack);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
755 enum Code next = Gearef(context, Stack)-&gt;next;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
756 goto clearSingleLinkedStack(context, stack, next);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
757 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
758 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
759
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
760
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
761
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
762 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
763
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
764 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
765 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
766 <h1 id="contextstub-code-gear-の自動生成">Context、stub Code Gear の自動生成</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
767 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
768 <li>Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
769 <li>現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
770 <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
771 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
772
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
773
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
774
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
775 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
776
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
777 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
778 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
779 <h1 id="stub-code-gear-の生成">stub Code Gear の生成</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
780 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
781 <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
782 <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
783 <li>generate_stub は指定された cbc ファイルの __code で記述された Code Gear を取得。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
784 <li>Code Gear の引数と interface を照らし合わせ、Gearef または GearImpl を決定する。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
785 <li>cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
786 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
787
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
788
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
789
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
790 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
791
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
792 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
793 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
794 <h1 id="生成された-stub-code-gear">生成された stub Code Gear</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
795
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
796 <pre><code class="language-stub">__code clearSingleLinkedStack(struct Context *context,
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
797 struct SingleLinkedStack* stack,enum Code next) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
798 stack-&gt;top = NULL;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
799 goto meta(context, next);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
800 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
801
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
802 __code clearSingleLinkedStack_stub(struct Context* context) {
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
803 SingleLinkedStack* stack =
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
804 (SingleLinkedStack*)GearImpl(context, Stack, stack);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
805 enum Code next = Gearef(context, Stack)-&gt;next;
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
806 goto clearSingleLinkedStack(context, stack, next);
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
807 }
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
808 </code></pre>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
809
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
810
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
811
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
812 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
813
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
814 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
815 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
816 <h1 id="context-の生成">Context の生成</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
817
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
818 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
819 <li>generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
820 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
821 <li>Code/Data Gear を enum で定義した enumCode.h、enumData.h</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
822 <li>取得した Code/Data Gear から Context の生成を行う target-context</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
823 <li>Context を生成する際の Data Gear の Allocation を行う dataGearInit.c</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
824 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
825 </li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
826 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
827
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
828 <div style="text-align: center;">
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
829  <img src="./fig/generate_context3.pdf" alt="generate_context3" width="600" />
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
830 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
831
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
832
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
833
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
834 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
835
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
836 <div class='slide'>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
837 <!-- _S9SLIDE_ -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
838 <h1 id="今後の課題">今後の課題</h1>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
839 <ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
840 <li>本研究では CbC を用いた Code Gear と Data Gear を持つ Gears OS の記述を行なった。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
841 <li>また、Gears OS の記述に必要な Meta の生成を行う perl スクリプトの作成を行なった。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
842 <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
843 <li>今後の課題は、今回 perl スクリプトによって Context や stub を含むファイルの生成を行なったが、LLVM/clang 上で実装しコンパイラから直接 CbC を実行できるようにすることを目的とする。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
844 <li>また、xv6 を Gears OS での書き換えや、継続ではスタックは積まないため、スタックトレースを使わない手法でのデバッグの考案などもある。</li>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
845 </ul>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
846
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
847 <p><a href="プロシン発表時間 セッション7 1/21 10:40 - 12:00"></a></p>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
848
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
849 </div>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
850
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
851
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
852 </div><!-- presentation -->
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
853 </body>
2b71bf2c73c9 add slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
854 </html>