view user/Itsuki.md @ 63:f440c8f6f66f

backup 2021-05-22
author autobackup
date Sat, 22 May 2021 00:10:03 +0900
parents
children 937323467f4d
line wrap: on
line source

# GearsOSの分散ファイルシステムの設計
author: Takahiro Ikki, Shinji Kono
profile: 琉球大学
lang: Japanese
code-engine: coderay

## メモ
従来のファイルシステムの問題を加える、




## 研究概要
- 当研究室ではOSの信頼性と拡張性の保証を目的としたGearsOSを開発している。
    - GearsOSは開発途上であり、実装が必要な機能が複数存在している。
- GearsOSの分散ファイルシステムを開発したい。
- 分散フレームワークChristieの構成をもとにGearsファイルシステムを構築する。


## GearsOS概要
- GearsOSの目的を説明したい。証明やモデル検査に適した構成にetc
- メタとノーマルの分離など
#
- コンピュータの土台となるOSは高い信頼性が保証されている必要がある。
- OSのコードや処理の量は膨大となる。
    - したがって定理支援証明やモデル検査などの形式手法を用いて検証したい。
- メタレベルとノーマルレベルの計算を分離して記述が行える。
    - メタレベルの計算でプログラムの整合性を検証する。

## Continuation based C(CbC)
- CbCとは当研究室で開発しているC言語の下位言語である。
- CbCは関数呼び出しでなく継続を導入している。
    - スタック領域を用いずjmp命令でコード間を移動することにより軽量な継続を実現している。
- 


## Gearの概念

## Christie
- 過去の記述↓
- Christieは当研究室で開発している分散フレームワークである.
- ChristieではデータをGearという単位で分割して記述を行う。
   - Codegear、DataGear、CodeGearManager、DagaGearManagerの四種類が存在しする。
   - CodeGear = スレッド、クラス
   - DataGear = 変数データ
   - CodeGearManager = ノード
   - DataGearManager = データプール

## Christie's Gear
### CodeGear(以下CG)
- 設定されたkeyに全てのDGが格納されると動作し、DGを参照しながらクラス部分を実行できる。

### DataGear(以下DG)
- CGに指定されたkeyに差し込まれる。
- アノテーションを使って記述する。
- ノードの同士がこのDGを差し込み合うことで通信を構成する。
  
### CodeGearManager(以下CGM)
- CGを指定してsetupすることでCGを動かすことができる。
- putという操作でDGを対応したDGMに格納する。
### DataGearManager(以下DGM)
- CGMが所持している。
- プールになっておりputされたDGが保存され、keyとデータが結び付けられる。

![](http://ie.u-ryukyu.ac.jp/home/student/e16/e165713Remote_DataGearManager.pdf)
![](http://ie.u-ryukyu.ac.jp/~e165713/images/remote_datasegment.pdf)




#### LocalDGMとRemoteDGM
- CGMはDGをputという操作を使って、自身や他ノードのDGMにDGを書き込ませる。
- DGMにはLocalDGMとRemoteDGMが存在する。
  - LocalDGMは各ノード固有のデータベースである。
  - RemoteDGMは他ノードのLocalDGMに対応するプールであり、接続しているノードの数だけ存在する。
- DGMのput操作を行う際にはLocalとRemoteのどちらかを選ぶ.  
  - Localであれば、LocalのCGMが管理するDGMに対しDGを格納。
  - RemoteDGMを指定してputすることで、接続している任意のノードにDGを差し込ませることができる。

## DataGearのアノテーション
- DGを取り出す際にはCG内で宣言した変数にアノテーションをつける。
- DGアノテーションにはTake、Peek、TakeFrom、PeekFrom、の4つがある。
  - Take
    - DGMに保管された先頭のDGを読み込み、そのDGを削除する。
  - Peek
    - DGMに保管された先頭のDGを読み込むが、DGが消去されない。そのため特に操作をしない場合、同じデータを参照し続ける。
  - TakeFrom
    - Remote DGM nameを指定することで、その接続先のDGM からTake操作をおこえる。
  - PeekFrom
    - Remote DGM nameを指定することで、その接続先のDGM からPeek操作をおこえる。


## TopologyManager
- 通信形成をより簡潔に行ってくれる機能である。
    - Topologyに参加を表明したノードを自動的に配線する。
    - 自動的に接続しているノードに相対的にラベルをつける。 
- 静的Topology形成
  - dotファイルを与えることノード関係の構築を行う。
  - ノード数が想定と一致しないと動作しない。
- 動的Topology形成
    - 参加を表明したノードに対し、動的にノード同士の関係を作る。
    - 例えばTreeを構成する場合、参加したノードから順にrootに近い役割を与える。  

```Code
digraph test {
	node0 -> node1 [label="right"]
	node1 -> node2 [label="right"]
	node2 -> node0 [label="right"]
}
```

## Christieのコード例
- メインがDGMなのでいらないかも
```
public class StartHelloWorld extends StartCodeGear {

    public static void main(String[] args){
        CodeGearManager cgm = createCGM(10000);
        cgm.setup(new HelloWorldCodeGear());
        cgm.getLocalDGM().put("helloWorld","hello");
        cgm.getLocalDGM().put("helloWorld","world");
    }
}
```
```
hello world
```


```
public class HelloWorldCodeGear extends CodeGear {

    @Take
    String helloWorld;

    @Override
    protected void run(CodeGearManager cgm) {
        System.out.print(helloWorld + " ");
        cgm.setup(new HelloWorldCodeGear());
    }
}
```

## GearsOSのファイルアクセス

## ChristieAPI

## FileSystem Implementation

## 競合的アクセスを含む分散計算の検証

## 比較とまとめ