annotate slide/slide.md @ 116:2c2767e29244

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 07 Feb 2021 12:21:54 +0900
parents 53fb09da2319
children 7467ceebd3c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 marp: true
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 title: GearsOSのメタ計算
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 paginate: true
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
8 # GearsOSのメタ計算
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 - 清水 隆博
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
11 - 琉球大学理工学研究科
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 - 198584B
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 - 河野研
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
15 ---
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
16 # 研究発表の構成
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
17 - 研究目的
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
18 - CbC、GearsOSの基礎概念
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
19 - 本研究での新たなGearsOSのシステムの解説
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
20 - GearsOSのInterfaceシステムの改善
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
21 - Perlトランパイラの改善
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
22
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 # 研究目的
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
28 - アプリケーションの信頼性を保証したい
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
29 - この為には土台のOSの信頼性を高く保証する必要がある
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 - OSそのものも巨大なプログラム
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
31 - プログラムの信頼性の保証にはテストが一般的に使われる
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 - 並列並行処理など起因するバグや、そもそもOSを構成する処理が巨大
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 - テストコードで信頼性を保証しきれない
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
34 - 形式手法を用いてテストに頼らず信頼性を保証したい
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
35 - 定理証明
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 - モデル検査
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 # ノーマルレベルとメタレベルを用いた信頼性の向上
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 - プログラムの実行部分は以下の2つからなる
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 - 入力と出力の関係を決める計算(ノーマルレベル)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 - プログラムを実行したり、 信頼性を保証するために必要な計算(メタレベル)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 - メタレベルの例
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 - メモリやCPUの資源管理
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 - システムコールの動作(副作用)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 - 並行実行(他のプロセスとの干渉)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 - モデル検査(可能な実行を列挙する方式の実行)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 - 証明(入力時と出力時の論理的な条件)、(invariant)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 - メタレベルの計算として信頼性を保証する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 ---
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
54 # メタレベルの計算とGearsOS
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
55 - ノーマルレベル、メタレベルを一貫して記述できる言語CbCを用いてGearsOSを開発している
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
56 - GearsOSのメタレベルの処理は従来のものは手動で行うものが多かった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
57 - 計算で使うすべてのデータ構造の管理
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
58 - 別のInterfaceの出力を受けるメタレベルの処理
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
59 - Perlでメタレベルに変換された後で気づくエラーも多い
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
60 - ノーマルレベルで検知したい
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
61
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
62 ---
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 # モデル検査
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
65 - プログラムの可能な実行を数え上げて仕様を満たしているかどうかの確認
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 - 実際に想定されるパターンを全て動かして検証する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 - デッドロック発生の検知
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 - JavaPathFinderなど
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 - 状態爆発が問題になる
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 - Spinを用いる方法では、 promelaという言語で実装し直す必要がある
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
71 - 実装を変更せず、カジュアルにモデル検査を行いたい
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 # 定理証明支援系
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 - 論理学的なモデルに変更して証明する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 - Agda
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 - Coq
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 - HoareLogicを用いる
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 - PreCondition -> Statement -> PostCondition
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 - 従来の方法ではStatementには限られたコマンドしか使えない
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 - ループは不変条件を使うが、 条件を見つけることが一般的には困難
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 - 実装言語と同じ記述で証明をすることはできない
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 # GearsOSでの信頼性の保証
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 - メタレベルのみで信頼性の保証を行う
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 - ノーマルレベルでの記述は変更しない
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 - Continuation Based C(CbC)をつかって、ノーマルレベルとメタレベルの分離を行う
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 - C言語の下位言語であり、 いくつかのCコンパイラ上で実装している
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 - C言語の構文は使用可能だが、 関数呼び出しの他に軽量継続を持つ
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 - 関数呼び出し時のスタックの操作を行わず`jmp`命令で次の処理に移動する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 - schemaなどと違い環境を持たず継続するために軽量継続と呼ぶ
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 ---
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 # GearsOSでの信頼性の保証
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 - デフォルトのメタレベルの計算は自動生成される
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 - 資源管理あるいは検証用のメタ計算は必要に応じて挿入する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 - これにより大きなコード変更が無くモデル検査や定理証明を行うことができる
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 - モデル検査や定理証明の困難さはメタレベルのプログラミングとして吸収する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 - 例えばOSで使用するデータ構造に合わせたモデル検査用の状態圧縮
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 - OSの検証に利用できるinvariantの提供
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 - CbCを用いたOSであるGearsOSを開発している
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 ---
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
107 # GearsOSの課題(1)
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
108 ### 本研究で改善した従来のGearsOSの課題を列挙する
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
109
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
110 - メタレベルの計算、データの定義を従来は手動で行っていた
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
111 - 自動的にコンパイル時に決定するはずの情報をすべて手書き
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
112 - メタレベルのCodeGearの定義やユーザーからの制御が困難であった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
113 - モデル検査などをメタ計算として定義できない
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
114 - 書いたGearsOSのプログラムを、メタを含むコードに変換し、コンパイルしないとバグに気づかない状態があった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
115 - メタを含むコードに変換する前に気づきたい
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
116 - 例題を作製する際にコピペを行う回数が多く、バグを発生させがちであった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
117
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
118 ---
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
119 # GearsOSの課題(2)
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
120 - Interfaceシステムが不十分
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
121 - 未実装のAPIがあっても警告が発生しない
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
122 - メソッド呼び出し時の引数の数が足りなくても警告が発生しない
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
123 - 定義していないAPIを呼び出してもエラーが出ない
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
124 - 並行呼び出しに対応していなかった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
125 - Interfaceの実装の型には型定義ファイルが存在しなかった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
126 - 型定義の方法の一貫性がなかった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
127 - メタ情報を手動で実装する必要性があった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
128 - Interface間の連携が上手くいっていなかった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
129 - 入出力の受け取りするメタ部分を手動で実装する必要があった
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
130
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
131 ---
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
132 # 研究発表の構成
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
133 - 研究目的
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
134 - **CbC、GearsOSの基礎概念**
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
135 - 本研究での新たなGearsOSのシステムの解説
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
136 - GearsOSのInterfaceシステムの改善
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
137 - Perlトランパイラの改善
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
138
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
139 ---
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
140 # GearsOSの基礎概念
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
141 - CodeGear、DataGear
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
142 - Interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
143 - par goto
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
144 - GearsOSのビルドシステム
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
145 - cmake
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
146 - Perlトランスパイラ
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
147
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
148 ---
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 # CbCとCodeGear(ノーマルレベル)
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 - 軽量継続で表現する単位をCodeGearと呼ぶ
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 - CodeGearはCの関数とアセンブラの中間の様に使える
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 - CodeGearは返り値の型の代わりに`__code`で宣言する
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 ---
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
156 # DataGear
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
157 - GearsOSで扱うデータの単位
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
158 - Cの構造体の形でメタレベルでは表現される
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
159 - GearsOS自体の処理にかかわるMetaDataGearが存在する
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
160 - Context(プロセス)
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
161 - TaskManager
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
162 - Worker
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
163 - ...
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
164 - DataGearの定義ではInterfaceシステムが使用できる
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 ---
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
167 # Interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
168 - GearsOSのモジュール化の仕組み
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
169 - Interface はある Data Gear と、それに対する操作(API)を行う Code Gear とその操作に用いる Data Gear の集合を表現する。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
170 - JavaのInteface、Haskellの型クラスに相当する
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
171 - GearsOSではこの他にもgoto時の値の保管に利用される
26
657784b3bae1 add slide
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172
116
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
173 ---
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
174 # Interfaceの定義