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終わったからシス管か研究室のタスクをやり始めたい