Mercurial > hg > Document > Growi
changeset 9:fc9bf2ada0a1
backup 2020-12-23
author | autobackup |
---|---|
date | Wed, 23 Dec 2020 00:10:03 +0900 |
parents | 95d33f2e4948 |
children | f7d6ffe3b7c1 |
files | Gears.md Gears/gearstools.md Gears/gearstools/check_convert_context_struct.pl.md Gears/gearstools/static_gen_header.pl.md Gears/gearstools/trans_impl.pl.md user.md user/Itsuki/notes/11-24.md user/anatofuz/note/2020/12/22.md user/masato.md user/matac42/note/2020/12/21.md user/matac42/note/2020/12/22.md user/pine.md user/pine/note/2020/12/22.md |
diffstat | 13 files changed, 316 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/Gears.md Tue Dec 22 00:10:04 2020 +0900 +++ b/Gears.md Wed Dec 23 00:10:03 2020 +0900 @@ -2,10 +2,17 @@ 継続を基本としたC言語 ContinuationBasedC によって記述されたOSです。 +# コンテンツ + +$lsx(./) + ## 用語 ## 実装状況 - [CbCXv6](/Gears/Xv6) - - GearsOSのフレームワークに則って書き直されたXv6 \ No newline at end of file + - GearsOSのフレームワークに則って書き直されたXv6 + + + \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Gears/gearstools.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,1 @@ +$lsx(./) \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Gears/gearstools/check_convert_context_struct.pl.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,11 @@ +# check_convert_context_struct.pl + +任意のInterfaceを変換してcontext.hに書き出す構造体を確認するスクリプト +- パースのチェックに行える + +# 使い方 + +```shell +$perl check_convert_context_struct.pl interace.h +``` +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Gears/gearstools/static_gen_header.pl.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,36 @@ +# static_gen_header.pl + +Interface/Implの雛形を生成してくれるヘッダファイル +- `typedef`書くのがめんどくさいので作った + + +# 使い方 + +## Interfaceを作る + +`--interface`の後ろに定義したいInterface名を書く + +```shell +$tools/static_gen_header.pl --interface List +``` + +`-w`をつけると`interface`ディレクトリに生成される + +```shell +$tools/static_gen_header.pl -w --interface list +``` + +`-o ファイル名`を指定すると、任意の場所に書き出される + +```shell +$tools/static_gen_header.pl -o List.h --interface list +``` + +## Implを作る + +- `--impl`も合わせて指定する + - 他のオプションはInterfaceと同様 + +```shell +$tools/static_gen_header.pl --impl single_linked_list --interface list +``` \ No newline at end of file
--- a/Gears/gearstools/trans_impl.pl.md Tue Dec 22 00:10:04 2020 +0900 +++ b/Gears/gearstools/trans_impl.pl.md Wed Dec 23 00:10:03 2020 +0900 @@ -20,6 +20,9 @@ # 実装に関して - trans_impl側に直書きしている処理と, ライブラリ化した`Gears::` 名前空間のモジュールをいくつか利用している +- 引数で入力されたヘッダファイルをまずパースして、使用しているInterfaceを特定する + - Perlの中で実行しているディレクトリを再帰的にたどって、ヘッダファイルを探す + - このときに同じ名前のヘッダファイルがあると衝突する # TODO - 実装側の`__code`は別ファイルに書き出すようにしたい
--- a/user.md Tue Dec 22 00:10:04 2020 +0900 +++ b/user.md Wed Dec 23 00:10:03 2020 +0900 @@ -1,1 +1,2 @@ +$lsx(./) \ No newline at end of file
--- a/user/Itsuki/notes/11-24.md Tue Dec 22 00:10:04 2020 +0900 +++ b/user/Itsuki/notes/11-24.md Wed Dec 23 00:10:03 2020 +0900 @@ -14,7 +14,8 @@ - とりあえずChristieからプラグイン刺した状態でRunできるように - やっぱり依存関係でつまづいてた(plugin.xml内のdepends表記) - build.gradleのIntellijのversion指定も大事だった。 - - 正直まだ理解不足な感じかも + - Actionの仕様がまだよく分かってない。 + - APIのドキュメントが見つからずに困ってます。 - インターンシップ(という名の企業説明会)に参加してきた - 社会のニュースは知っておけと言われた。 @@ -32,11 +33,12 @@ ## その他 - 新しい題材を探したいです - - Gearsとかネットワーク周り触りたいです。 + - Gearsとかネットワーク関係あたりを触ってみたいです。 -- 課題の論文紹介を始めます +- 課題の論文紹介をやりました。 - タイトルは「Extending Shared-Memory Computations to Multiple Distributed Nodes」なるもの - + - シングルノード分散プログラム(CUDAとか)をマルチノードでの分散プログラムに対応させよう + - christieのNAT越えをやりたいと思っていた。 - IPv4がこれから廃れると考えると確かに魅力ない..
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/anatofuz/note/2020/12/22.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,197 @@ +# 研究目的 +- アプリケーションの信頼性を保証するには土台となるOSの信頼性を高く保証する必要がある + - しかしOSの機能をテストですべて検証するのは不可能である。 +- 定理証明やモデル検査を利用して、テストに頼らずに保証したい + - 証明しやすい形、かつ実際に動くソースコードが必要 + - 継続ベースの状態遷移系で再実装することで表現しやすくしたい +- プログラムは二つの計算に分離される + - プログラムは入力と出力の関係を決める計算(ノーマルレベル) + - その計算に必要なメタな計算(メタレベル) +- プログラムの信頼性の保証を動作しつつ行うには、メタレベルの計算を活用したい +- そのためにはメタレベルの計算を柔軟に扱うAPIや実装方法が必要 +- 本研究ではノーマル/メタレベルでの実装に適した、継続を基本とする言語Continuation Based Cを用いて、OSの実装を行い、メタ計算APIについて考察する。 + + +# 最近 +- enpitのTAおわり + - 発表会を見ていたりした + - pro2のTAがまだある +- GitLab runnerの構築を見守る +- 修論のLaTeXの環境を整えていた + - uplatex使うようにとか、latexmk対応とか + - GitLab対応は後でやる +- ie-virshにdefine gdbいれた +- LinuxKernelのdebug buildを見守る +- Gearsの型変数 + +# 修論のテンプレ + +- jogoが作ってくれたやつをfireflyのやつをベースにさらに再構築 +- uplatexでビルド出来るようにした +- gitlabでビルドするようにしたい + - https://gitlab.ie.u-ryukyu.ac.jp/students/k19/master-paper-templete + - https://gitlab.ie.u-ryukyu.ac.jp/ie-syskan/latex-docker + +# ie-virsh + +- https://gitlab.ie.u-ryukyu.ac.jp/ie-syskan/ie-virsh + - 実装が大分汚くなってきたのでどうにかしたい +- `define --gdb`をいれた + - defineのフラグとして実装し直した +- `ie-virsh`のテンプレート機能と組み合わせると極めて便利 +- 空いてるポートはこんな感じで取れるらしい + +```rust +fn get_available_port() -> Result<u16, std::io::Error> { + match TcpListener::bind("localhost:0") { + Ok(listener) => { + let port = listener.local_addr().unwrap().port(); + println!("gdb debug port: {}", port); + Ok(port) + } + Err(e) => Err(e), + } +} +``` + +# Gearsの型変数 + +## いままで + +```c +typedef struct Tree<Type, Impl>{ + /* future Code */ + /* Type* tree; */ + /* Type* node; */ + union Data* tree; + struct Node* node; + __code put(Impl* tree,Type* node, __code next(...)); + __code get(Impl* tree, __code next(...)); + __code remove(Impl* tree,Type* node, __code next(...)); + // __code clearRedBlackTree(); + __code next(...); +} Tree; +``` + +- `Type`がなんなのか明確に決まっていなかった + - Interfaceの型.....? + + +## 型変数的に使いたい + +- 自分自身の型 + - Self +- 実装の型 + - Impl +- Interaceの型 + - Inter +- 型変数 + - Type + - Type' + - T + +```c +typedef struct Tree<Self, Impl, Type>{ + /* future Code */ + /* Type* tree; */ + /* Type* node; */ + union Data* tree; + struct Node* node; + __code put(Impl* tree,Type* node, __code next(...)); + __code get(Impl* tree, __code next(...)); + __code remove(Impl* tree,Type* node, __code next(...)); + // __code clearRedBlackTree(); + __code next(...); +} Tree; +``` + +# releational + +- 既に実装されていた痕跡がある +- 型変数と組み合わせると便利に使えそう + - Stack, Listの関係性とか + + +`context.h` + +```c +enum Relational { + EQ, + GT, + LT, +}; +``` + +`compare.c` + +```c +#include "context.h" + +enum Relational compare(struct Node* node1, struct Node* node2) { + int key1 = node1->key; + int key2 = node2->key; + if (key1 == key2) { + return EQ; + } else if (key1 < key2) { + return GT; + } else { + return LT; + } +} +``` + +見たところRbTreeで使おうとしていた痕跡がある + +```c +RedBlackTree.cbc +7:extern enum Relational compare(struct Node* node1, struct Node* node2); +``` + +```c +__code putRedBlackTree(struct RedBlackTree* tree, struct Node* node) { + struct Node* newNode = &ALLOCATE(context, Node)->Node; + struct Node* root = tree->root; + printTree((union Data*)(tree->root)); + tree->newNode = newNode; + tree->root = newNode; // this should done at stackClear + tree->parent = NULL; + if (root) { + tree->current = root; + tree->result = compare(tree->current, node); + tree->findNodeNext = C_insertNode; + goto findNode(tree); + } + goto insertNode(tree, node); +} +``` + +# lambda + +- + + +``` + __code hoge_lambda2(__code next(union Data* data, union Data* data1, ...)) { + goto stack->pop $ \data -> goto stack->pop $ \data1 -> goto next(data, data1); + goto stack->pop |data| -> goto stack->pop |data1| -> goto next(data, data); + } + +__code hoge_lambda2() { + context->next = pop_second(); + goto meta(context); +} + + +// after +__code pop_first_after_stub(struct context* Context, union Data* data) { + Gearef(context, Pop)->data = data; + goto pop_third(); +} + +__code pop2_stub(struct Context* context) { + struct StackImpl* stack = Gearef(cotnext, stack)->stack; + enum Code next = Gearef(context, stack)->next; + goto pop2(context, stack, next); +} + +```
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/masato.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,2 @@ +# masato +This is masato's page \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/matac42/note/2020/12/21.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,18 @@ +# 今日やったこと +* 髪を切った + * いつも行ってるライカムのQB house +* linux kernelのdebug build + * https://scrapbox.io/cr-ryukyu/fedora%E3%81%A7linux_kernel%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E7%92%B0%E5%A2%83 + * https://mattari-matayu.hatenablog.com/entry/2020/12/21/235825 +* 寒いけどアイスを食べた + * パルムの抹茶味 +* キッチンカー行きそびれた +* toeic対策全然やってねぇぞ! +# 明日は +* 毎週火曜日はもう授業ないよ +* キッチンカーに行く +* toeic対策 +* OSの授業にお邪魔しようかな +* ゼミ +* syskan + * windowsが使えればgcds終わらせちゃおう. \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/matac42/note/2020/12/22.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,18 @@ +# 今日やったこと +* macbookの充電器を買った. + * 9,000円って本当ですか. +* toeic対策 + * センテンスたくさん. +* ゼミ + * 議事録を書いた. + * 追い切れない + * ThinkPadがjogoさんからドロップした. + * googleの同期スクリプトのタスクができるようになった. + * たくさん本を借りた. + * Rubyの仕組みから読んでいく. +# 明日は +* 7階スイッチ増強計画 +* toeic + * 多分センテンスしかできないだろう. +* gcds +* Rubyのしくみ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/pine.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,2 @@ +# pine +This is pine's page \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/pine/note/2020/12/22.md Wed Dec 23 00:10:03 2020 +0900 @@ -0,0 +1,13 @@ +# 最近 + +- enPiT最終発表 +- 面談・面接 + - 今日だけで3社と面談・面接やった + - 朝:面談 昼:面接 夕方:面接 + - たぶん面接した2社は落ちてそう + - 面談したとこはまあまあ好感触 + - 落ちるとメンタルに来そう。。。 + +# やりたいこと +- 明日琉大advent calender担当日なのでブログ書く。 +- enPiT終わったからシス管か研究室のタスクをやり始めたい