comparison slide/thesis.md @ 14:0a4cafd954b9

add slide
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sat, 05 Feb 2022 04:49:27 +0900
parents
children 689b16feab3f
comparison
equal deleted inserted replaced
13:9991e90cff65 14:0a4cafd954b9
1 title: GearsOSの分散ファイルシステムの設計
2 author: Takahiro Ikki, Shinji Kono
3 profile: 琉球大学
4 lang: Japanese
5 code-engine: coderay
6
7 ## GearsOSとその現状
8 - 信頼性の保証と拡張性の高さを目指したOSプロジェクト
9 - 軽量継続を用いた言語、CbC(Continuation based C)により記述される。
10 - ノーマルレベルとメタレベルを分離して記述する
11 - 現状では言語フレームワークとしてのみ機能する
12 - OSとして動作するには多くの機能の開発が必要
13 - その中の一つにファイルシステムが挙げられる
14
15 ## 従来の物より発展した分散ファイルシステムの設計
16 - データベース的なレコード操作によるアクセス
17 - ファイルに対する全ての操作がTransactionとなる
18 - 既存ではアプリケーションが担当する機能を取り込む
19 - バックアップの管理
20 - ファイルの型の認識
21 - 自律分散を目指した分散ファイルシステム
22 - 特定のサーバーを中枢にしなくても良い
23 - 分散フレームワークChristieの仕組みにより実現する
24
25
26 ## CbC (Continuation based C)
27 - C言語の拡張言語である
28 - 関数に代わる軽量継続をメインに記述する
29 - Gearというプログラム概念
30 - CodeGear
31 - 従来のThreadにあたる
32 - DataGear
33 - 従来の変数データにあたる
34 - DataGearを受け取り処理を行う(InputDataGear)
35 - 処理の結果をDataGearに書き出す(OutputDataGear)
36
37
38 <div style="text-align: center;">
39  <img src="images/cgdg.pdf" alt="CodeGearとDataGearの関係" width="800">
40 </div>
41
42 ## CbCのサンプルプログラム
43 ```
44 __code CG2(int num3){
45 printf("num = %d\n", num3);
46 exit(0);
47 }
48
49 __code CG1(int num, int num1){
50 int num2 = num + num1;
51 goto CG2(num2);
52 }
53
54 int main(){
55 int a = 2;
56 int b = 3;
57 goto CG1(a, b);
58 }
59 ```
60
61 ## メタレベルのGear
62 - CodeGearとDataGearにはメタレベルのものが存在する
63 - それぞれstubCodeGearとstubDataGearと呼ぶ
64 - ユーザーが記述する上では普段は意識しない
65
66
67
68 ## テスト用テキストエディタ
69
70 ```
71 public class MyDocumentListener implements DocumentListener {
72 @Override
73 public void insertUpdate(DocumentEvent e) {
74 Document doc = e.getDocument();
75 loc = e.getOffset();
76 System.out.println(loc);
77
78 }
79
80 @Override
81 public void removeUpdate(DocumentEvent e) {
82 Document doc = e.getDocument();
83 sendLoc = e.getOffset();
84 System.out.println("delete " + sendLoc);
85 }
86 @Override
87 public void changedUpdate(DocumentEvent e) {
88 }
89 }
90 ```
91
92
93 ## 編集位置の相違
94 - 同期編集のセッションでは命令コマンドの送信のすれ違いにより、ノードごとのファイル状態が異なってしまうことがある。
95 - EditorAとEditorBはそれぞれの命令を自身のエディタバッファに施してから命令を送信するため、お互いバッファ状態が異なる状態で受け取った命令を実行してしまう。
96
97 <div style="text-align: center;">
98  <img src="images/difference_offset.pdf" alt="MetaGear" width="800">
99 </div>
100
101
102 <!--
103 - RocalDGMを立ち上げるにはDataSegmentクラスが提供する、connectメソッドを用い、接続したいポートのipアドレスとport番号、そして任意のManager名を指定することで立ち上げる。
104 -->
105
106
107
108 ```Code
109 digraph test {
110 node0 -> node1 [label="right"]
111 node1 -> node2 [label="right"]
112 node2 -> node0 [label="right"]
113 }
114 ```