annotate paper/chapter/abstract.tex @ 158:d2be76d48b00 default tip

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 17 Feb 2021 14:37:21 +0900
parents 4232c9dc1431
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
e543ba9a8e5c from git
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \chapter*{要旨}
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
2 アプリケーションの信頼性を保証するには、土台となるOSの信頼性は高く保証されていなければならない。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
3 信頼性を保証する方法としてテストコードを使う手法が広く使われている。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
4 OSのソースコードは巨大であり、並列処理など実際に動かさないと発見できないバグが存在する。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
5 OSの機能をテストですべて検証するのは不可能である。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
7 テストに頼らず定理証明やモデル検査などの形式手法を使用して、OSの信頼性を保証したい。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
8 証明を利用して信頼性を保証する定理証明は、 AgdaやCoqなどの定理証明支援系を利用することになる。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
9 支援系を利用する場合、各支援系でOSを実装しなければならない。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
10 証明そのものは可能であるが、 支援系で証明されたソースコードがそのままOSとして動作する訳ではない。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
11 このためには定理証明されたコードを等価なC言語などに変換する処理系が必要となる。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
12
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
13 信頼性を保証するほかの方法として、プログラムの可能な実行をすべて数え上げて仕様を満たしているかを確認するモデル検査がある。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
14 モデル検査は実際に動作しているプログラムに対して実行することが可能である。
75
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
15 すでに実装したプログラムのコードに変化を加えずモデル検査を行いたい。
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
16
75
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
17 プログラムは本来やりたい計算であるノーマルレベルの計算と、その計算をするのに必要なメタレベルの計算に別けられる。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
18 メタレベルの計算では資源管理などを行うが、 モデル検査などの証明をメタレベルの計算で行いたい。
2
e543ba9a8e5c from git
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
75
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
20 この実現にはノーマルレベル、メタレベルの計算の処理の切り分けと、メタレベルの計算をより柔軟に扱うOS、言語処理系が必要となる。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
21 両レベルを記述できる言語にContinuation Based (CbC)がある。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
22 CbCはスタック、あるいは環境を持たず継続によって次の処理を行う特徴がある。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
23 CbCを用いて、拡張性と信頼性を両立するOSであるGearsOSを開発している。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
24
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
25 GearsOSの開発ではノーマルレベルのコードとメタレベルのコードの両方が必要であり、メタレベルの計算の数は多岐にわたる。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
26 GearsOSの開発を進めていくには、メタレベルの計算を柔軟に扱うAPIや、 自動でメタレベルの計算を作製するGearsOSのビルドシステムが必須となる。
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 58
diff changeset
27 本研究ではGearsOSの信頼性と拡張性の保証につながる、メタ計算に関するAPIについて考察し、言語機能などの拡張を行った。
91
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 83
diff changeset
28 また、メタ計算を自動生成しているトランスパイラを改良し、従来のGearsOSのシステムよりさらに柔軟性が高いものを考案した。
2
e543ba9a8e5c from git
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 \chapter*{Abstract}
83
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
30 In order to guarantee the reliability of an application, the reliability of the underlying OS must be highly guaranteed.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
31 The source code of an OS is huge, and there are bugs such as parallel processing that can only be discovered by actually running the OS.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
32 It is impossible to verify all the functions of an OS by testing.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
33
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
34 Instead of relying on tests, we want to use formal methods such as theorem proving and model checking to guarantee the reliability of the OS.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
35 For theorem proving to guarantee reliability using proofs, we can use theorem proving support systems such as Agda and Coq.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
36 Another method of guaranteeing reliability is model checking, in which all possible executions of a program are counted to verify that it meets the specifications.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
37
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
38 A program can be divided into normal-level computation, which is the computation we want to do, and meta-level computation, which is the computation necessary to do the computation.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
39 In meta-level computation, we want to perform resource management, etc., but we also want to perform proofs such as model checking in meta-level computation.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
40
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
41 In order to achieve this, it is necessary to separate the processing of normal-level and meta-level computation, and to have an OS and language processing system that can handle meta-level computation more flexibly.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
42 A language that can describe both levels is Continuation Based C (CbC).
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
43 CbC is characterized by the fact that it does not have a stack or an environment, and the next process is performed by continuation.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
44 Using CbC, we are developing GearsOS, an OS that is both scalable and reliable.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
45
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
46 The development of GearsOS requires both normal-level code and meta-level code, and the number of meta-level computations varies widely.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
47 In order to proceed with the development of GearsOS, an API that can flexibly handle meta-level computations and a build system for GearsOS that can automatically create meta-level computations are essential.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
48 In this study, we discussed the API for meta-calculus, which will guarantee the reliability and scalability of GearsOS, and extended the language functions.
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 75
diff changeset
49 We also improved the trans-compiler that automatically generates meta-calculus, and devised a system that is more flexible than the conventional GearsOS system.