Mercurial > hg > Document > Growi
changeset 67:a4f167def66b
backup 2021-05-26
author | autobackup |
---|---|
date | Wed, 26 May 2021 00:10:03 +0900 |
parents | 9e6952aef1e6 |
children | 6c46d8f76ec4 |
files | user/Itsuki/sigos2021.md user/pine/note/2021/05/25.md user/riono210/sigos2021.md |
diffstat | 3 files changed, 170 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/user/Itsuki/sigos2021.md Tue May 25 00:10:04 2021 +0900 +++ b/user/Itsuki/sigos2021.md Wed May 26 00:10:03 2021 +0900 @@ -16,6 +16,33 @@ - 分散フレームワークChristieの構成をもとにGearsファイルシステムを構築する。 - ファイルシステムの通信機構としてChristieが持つTopologyManagerという機能を使いたい。 +## 従来のファイルシステムの問題点 +- 総括的なファイルシステムAPIをTransactionとして提供していない。 + - 個別のファイルをロックする仕組み。 + - ディレクトリの名前の置き換えをトランザクションとして扱う。 +- ファイルの型がないという問題 + - 現状アプリケーションがファイルの処理を決めている? + - OS自体がファイルの型を区分し、認識する必要性。 +- DBでない +- 型 +- 名前がデータベースのkeyになっていない + - uuidな名前を +- ファイル単位 +- 分散 + - ファイルの位置、いろいろなところに +- 重複度 + - 安全性、散らばったファイルは消せなくなる + - 散らばったファイルを消したい +- リカバリ + - バックアップ、 +- 暗号化 +- 署名 + - 二重鍵、相互にエンコードデコードできる、ファイルを作成した人の判定、 + - 公開鍵からエンコードして秘密鍵を持っている人だけが読めるように + - ファイルシステム自体にこの仕組みがない、メタデータで署名を持つ, + - macOSは独自で持っている + - ファイル全体を署名するのはおかしい + - 鍵の管理もOSがしたい ## GearsOS概要 - アプリケーションを動かすOSには高い信頼性が保証されている必要がある。 - OSの処理やコードの量は膨大であり、テストコードを用いた信頼性の保証は困難であると言える。 @@ -34,7 +61,7 @@ -## Gearの概念 +## Gearsの概念 - CodeGearはDataGearと呼ばれる変数データを入力として受け取り、その結果を別のDataGear に書き込む. - CodeGearは従来のプログラムやスレッド、DataGearは変数データにあたる。 - 入力のDataGearをInputDataGear、出力されるDataGearをOutputDataGearと呼ぶ。 @@ -121,7 +148,7 @@ - LocalDGMとRemoteDGMの二種類存在する。(後述) -## DataGearのアノテーション +## DataGearのアノテーション 消す - DGを取り出す際にはCG内で宣言した変数にアノテーションをつける。 - DGアノテーションにはTake、Peek、TakeFrom、PeekFrom、の4つがある。 - Take @@ -133,7 +160,7 @@ - PeekFrom - Remote DGM nameを指定することで、その接続先のDGM からPeek操作をおこえる。 -## Christieのコード例 +## Christieのコード例 消し - Christieを用いてHelloWorldを記述した際のコードが以下となる。 ``` public class StartHelloWorld extends StartCodeGear { @@ -162,7 +189,7 @@ ``` -#### LocalDGMとRemoteDGM +## LocalDGMとRemoteDGM - DGMにはLocalDGMとRemoteDGMが存在する。 - LocalDGMは各ノード固有のデータプールである。 - RemoteDGMは他ノードのLocalDGMに対応するプールであり、接続しているノードの数だけ存在する。 @@ -251,7 +278,7 @@ - 接続とDGMの内容のパターンが確定すればその範囲でプログラムは関数型プログラミングとして振る舞い、HoareLogicなどで検証が行える。 - 証明が複雑な場合でも, DG のパターンをメタ計算で調べるなどの手法を用いることができる. -## 比較 +## 比較 自分の理解した感じで、箇条書きに - UNIX FileSystem は API的には File Stream と Socket Stream は Read-Writeでアクセスするがその設定はプログラム内部で煩雑な処理が必要となる。 - GearsOSではこの部分をTopologyManagerが担うため簡潔に行える。 - UNIXではStreamに型がないので不完全なデータが生じてしまう。また、UNIXファイルシステムにはfsckと呼ばれる修復機能があるが、メモリに対する修復機能は存在しない。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/pine/note/2021/05/25.md Wed May 26 00:10:03 2021 +0900 @@ -0,0 +1,20 @@ +# 研究目的 +- アプリケーションの信頼性を保証するために、アプリケーションが動作するOSの信頼性を高める必要がある。 + +- 本研究室では、Continuation Based C(CbC)を用いて、信頼性と拡張性を両立するOSであるGearsOSを開発している。 + +- ソフトウェア開発においてエラー・バグは付き物であり、その発見が重要である。現在GearsOSにはデバッガーが未実装であるため、円滑なOS開発を行うために、GearsOSのデバッガーを作成する。 + +## やったこと +- CbCの環境構築 + - localではうまく行かなかったのでsingularityで動かした。 +- 内定先のオフィスを見てきた(オンライン) + +## やること +- 論文読み +- Gearsを動かす + +## その他 +- Airpodsが壊れたっぽい +- スルメを食べた後からアゴが痛い +- 近々内定者懇親会があるらしい \ No newline at end of file
--- a/user/riono210/sigos2021.md Tue May 25 00:10:04 2021 +0900 +++ b/user/riono210/sigos2021.md Wed May 26 00:10:03 2021 +0900 @@ -77,6 +77,25 @@ --- +### Topology Manager +* 静的Topology は以下のようなdot ファイルを与えることでNode の関係を構築できる +* それぞれのNode への通信にはIP address などは使用せずright というlabel を使用することで接続できる + +```ring.dot +digraph test { + node0 -> node1 [label="right"] + node1 -> node2 [label="right"] + node2 -> node0 [label="right"] +} +``` + +<center><img src="https://i.imgur.com/pCCHo2W.png" alt="message" width="200" height="300"></center> +<center></center> + + + +--- + ### Christie のコード例 ``` java:StartHelloWorld.java @@ -220,8 +239,77 @@ --- -### MessagePackの相違点 +### MessagePackの相違点 +* Christie ではデータを送信する際にMessagePack を使用してデータを圧縮し送受信している + * インスタンス内のpublic 変数に対して圧縮可能 +* バージョンが古いため、現在はサポートされていない + * そのため、最新版とは記述方法が異なる + +* シリアライズするクラスには@Message annotatoinをつける +* MessagePack インスタンスを作成後、write、read することでデータの圧縮解凍が可能 + * 圧縮されたデータはbyte[] 型になる + +```java:MessagePackEx.java +public class MessagePackExample { + @Message + public static class MyMessage { + public String name; + public double version; + } + + public static void main(String[] args) throws Exception { + MyMessage src = new MyMessage(); + src.name = "msgpack"; + src.version = 0.6; + + MessagePack msgpack = new MessagePack(); + // Serialize + byte[] bytes = msgpack.write(src); + // Deserialize + MyMessage dst = msgpack.read(bytes, MyMessage.class); + } +} +``` + +--- +### MessagePackの相違点 +* C# のMessagePack は複数存在している + * java 版と似たような書き方をするMessagePack-CSharp を選択した + +* 圧縮を行いたいクラスに対してMessagePackObject attribute を付ける +* 圧縮する変数に対してkey を設定できる + * 解凍時にjson として展開できる +* データの圧縮にはMessagePackSerializer.Serialize 関数を用い、byte[] に圧縮される +* データの解凍にはMessagePackSerializer.Deserialize 関数を使用する + * Deserialize 関数はジェネリスク関数であるため<>内に解凍するデータの型情報を記述する + +```cs.MessagePackEx.cs +[MessagePackObject] +public class MyClass { + [Key(0)] + public int Age { get; set; } + [Key(1)] + public string FirstName { get; set; } + [Key(2)] + public string LastName { get; set; } + + static void Main(string[] args) { + var mc = new MyClass { + Age = 99, + FirstName = "hoge", + LastName = "huga", + }; + + byte[] bytes = MessagePackSerializer.Serialize(mc); + MyClass mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes); + + // [99,"hoge","huga"] + var json = MessagePackSerializer.ConvertToJson(bytes); + Console.WriteLine(json); + } +} +``` --- @@ -285,8 +373,36 @@ |プロトコル | TCP | TCP | TCP | |特徴 |通信のためのIP address がプログラム直接記述されていない |Photon Cloud でサーバを自前で用意する必要がない | Unity公式でサポートされている RPC が使用可能| +--- +### チート対策について +* オンラインゲームにおいてチート対策は必須 +* 通常のオンラインゲームでのチート対策 + * クライアントをモニタリングする + * ダメージ計算などは全てサーバで行う + * ユーザからの通報 + +* Christie では型があるDataGear をkey と合わせてDGMに格納する方式を取っている + * 他のノードとの通信にはDGM のporxy に書き込むことで可能 + * DGM の構成にはTopology Manager が自動的に構成する +* Topology Manager を使用することでクライアントは接続先を直接知る必要がない + * IP address などチートに使用される情報をプログラムに含めることなく通信可能 + +<center><img src="https://i.imgur.com/L8GVFdL.png" alt="message" width="450" height="260"></center> +<center>label を使用したデータ通信</center> ### 実装の現状 +* Local DGMを使用してUnity 上でデータ通信を行うことができている +* Scketo とMessagePack を用いた通信に関しては、書き換え途中 +* 今後の予定 + * Christie で実装されている例題 + * Alice からChristie に書き換えた際に取り除かれた機能の洗い出しを行う + * Unity でChristie #の検証としてFPS の作成 -### まとめ \ No newline at end of file +--- + +### まとめ + + + +