changeset 13:1ef114182e80

sources move src/ and delete par
author tobaru
date Wed, 05 Feb 2020 17:08:43 +0900
parents 9cf9e0b086c7
children 3952ffd84dfe
files paper/GearsOS.tex paper/Paging.tex paper/abstract.tex paper/cbc_interface.tex paper/master_paper.aux paper/master_paper.lof paper/master_paper.log paper/master_paper.lol paper/master_paper.lot paper/master_paper.pdf paper/master_paper.synctex.gz paper/master_paper.tex paper/master_paper.toc paper/memory_manage.tex thsis_paging.mm
diffstat 15 files changed, 236 insertions(+), 415 deletions(-) [+]
line wrap: on
line diff
--- a/paper/GearsOS.tex	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/GearsOS.tex	Wed Feb 05 17:08:43 2020 +0900
@@ -24,12 +24,12 @@
 
 
 Data Gear は CbC におけるデータの基本的な単位である。Input Data Gear と Output Data Gear があり、Code Gear の遷移の際に Input Data Gear を受け取り、Output Data Gear を書き出す。
-\par 
 
 
 \section{Meta Code Gear と Meta Data Gear}
  CbC ではノーマルレベルの記述と別にメタレベルで記述することができる。メタレベルの記述によって User Space 側からメモリ管理を行えるようになる。
-\par
+
+
 メタ計算は Meta Code Gear と Meta Data Gear を用いる。この2つはノーマルレベルからメタレベルの変換する時に使われる。メタレベルの変換は Perl スクリプトで実装している。Gears OS での Meta Code Gear は Code Gear の直前、 直後に挿入され、メタ計算を実行する。
 Code Gear 間の継続はノーマルレベルでは 図 \ref{fig:codegear} のように見えるが、メタレベルでの Code Gear は図 \ref{fig:meta_cg_dg} の下のように継続を行っている。
 
@@ -47,16 +47,19 @@
  Gears OS の Context は Meta Data Gear であり、接続可能な Code Gear と Data Gear のリスト、 Data Gear を確保するメモリ空間などを持っている。
 従来のスレッドやプロセスに対応する。Gears OS では Code Gear と Data Gear への接続を Context を通して行う。Context が持つ Data Gear のメモリ空間は事前に確保され、Data Gear のメモリ確保の際に heap の値をずらしてメモリを割り当てる。
 % パルスさん3.1
-\par 
+
+
 ノーマルレベルの Code Gaer から Meta Data Gear である Context を直接参照してしまうと、ユーザーがメタ計算をノーマルレベルで自由に記述できてしまい、メタ計算を分離した意味がなくなってしまう。
 この問題を防ぐため、Context から必要な Data Gear のみをノーマルレベルの Code Gear に渡す処理を行なっている。
-\par
+
+
  Meta Code Gear は使用される全ての Code Gear ごとに記述する必要がある。しかし、全ての Code Gear に対して記述すると膨大な記述量になる。そのため、Interface を実装した code Gear の Meta Code Gear は Perl スクリプトで自動生成する。
-\par
+
+
 Meta Code Gear はユーザーが記述することも可能である。そうすることでメタ計算を記述することができるようになったり、goto による継続先を変更することで Geas OS の機能を置き換えることができる。
 
 
-\lstinputlisting[label=contexth、 caption=Context]{./src/context.h}
+\lstinputlisting[label=contexth、 caption={\footnotesize Context}]{./src/context.h}
 
 ソースコードの説明書く
 
--- a/paper/Paging.tex	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/Paging.tex	Wed Feb 05 17:08:43 2020 +0900
@@ -9,7 +9,7 @@
 
 \section{Paging}
   メモリ管理の手法に、Paging がある。Paging ではメモリを Page と呼ばれる固定長の単位に分割し、メモリとスワップ領域で Page を入れ替えて管理を行う。
-\par
+
 
 図 \ref{fig:MemoryConstitution} で Xv6の仮想メモリと実メモリについて説明する。
 図のRWX は読み込み、書き込み、実行の権限を表している。
--- a/paper/abstract.tex	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/abstract.tex	Wed Feb 05 17:08:43 2020 +0900
@@ -1,6 +1,13 @@
 \chapter*{要旨}
- 時代とともに進歩するハードウェアやソフトウェアに対して、 OS 自体に信頼性が求められる. メモリ管理は OS の信頼性の基本であるが、 現代の OS では、 User Space で Page Table Entry によるメモリ管理を行える OS は少ない、 本研究室で開発したメタレベルの記述ができる CbC という言語を用いて、 OS の信頼性の基本であるメモリ管理を行える OS を実装することで、 OS の信頼性を保証したい.
-既存の Gears OS でのメモリ管理では単に Page Table Entry をコピーする Fork を実装しているが、 さらに資源管理を行える CbC で軽量なハードウェアでも動かせるように Arm のバイナリを 出力する Xv6 を参考に GearsOS にメモリ管理を行う API を考察する。
+ OS を要する機器に依存している現代では、OS のバグは日常に支障を来たすことに繋がる。
+OS 自体に信頼性が求められるが、複雑な機能が増えている OS では、全てのコードに対して検証を行うのは困難である。
+本研究室で開発したメタレベルの記述ができる CbC という言語を用いて OS を実装することで、 OS の信頼性を保証したい。
+OS の実装は、CbC で軽量なハードウェアでも動かせるように Arm のバイナリを 出力する OS である Xv6 を参考に行う。
+本研究では、OSの信頼性の基本であるメモリ管理部分を CbC で記述する。
+
+
+
+% 既存の Gears OS でのメモリ管理では単に Page Table Entry をコピーする Fork を実装しているが、
 
 \chapter*{Abstract}
 % 英語
--- a/paper/cbc_interface.tex	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/cbc_interface.tex	Wed Feb 05 17:08:43 2020 +0900
@@ -1,7 +1,6 @@
 \chapter{CbC インターフェース}
 
 構造図書く(今のcbcxv6と同じか確認してから)
-\par
 
 
  Gears OS では Meta Code Gear で Context から値を取り出し、ノーマルレベルの Code Gear に値を渡す。
@@ -22,63 +21,32 @@
 それに対する操作を行う Code Gear の集合を表現する Meta Data Gear である。
 Context では全ての Code Gaer と Data Gear の集合を表現していることに対し、
 インターフェースは一部の Code Gear と一部の Data Gear の集合を表現する。
-\par 
+
+
 インターフェースを記述することによってノーマルレベルとメタレベルの分離が可能となる。
 
 Paging のインターフェースを記述したコードを ソースコード \ref{interface} に示す。
 
-
-\begin{lstlisting}[frame=lrbt,label=interface,caption={\footnotesize vm のインターフェースの定義(vm.h)}]
-typedef struct vm<Type,Impl> {
-    union Data* vm;
-    uint low;
-    uint hi;
-    struct proc* p;
-    pde_t* pgdir;
-    char* init;
-    uint sz;
-    char* addr;
-    struct inode* ip;
-    uint offset;
-    uint oldsz;
-    uint newsz;
-    char* uva;
-    uint va;
-    void* pp;
-    uint len;
-    uint phy_low;
-    uint phy_hi;
-    __code init_vmm(Impl* vm, __code next(...));
-    __code kpt_freerange(Impl* vm, uint low, uint hi, __code next(...));
-    __code kpt_alloc(Impl* vm ,__code next(...));
-    __code switchuvm(Impl* vm ,struct proc* p, __code next(...));
-    __code init_inituvm(Impl* vm, pde_t* pgdir, char* init, uint sz, __code next(...));
-    __code loaduvm(Impl* vm,pde_t* pgdir, char* addr, struct inode* ip, uint offset, uint sz,  __code next(...));
-    __code allocuvm(Impl* vm, pde_t* pgdir, uint oldsz, uint newsz, __code next(...));
-    __code clearpteu(Impl* vm, pde_t* pgdir, char* uva,  __code next(...));
-    __code copyuvm(Impl* vm, pde_t* pgdir, uint sz, __code next(...));
-    __code uva2ka(Impl* vm, pde_t* pgdir, char* uva, __code next(...));
-    __code copyout(Impl* vm, pde_t* pgdir, uint va, void* pp, uint len, __code next(...));
-    __code paging_int(Impl* vm, uint phy_low, uint phy_hi, __code next(...));
-    __code void_ret(Impl* vm);
-    __code next(...);
-} vm;
-\end{lstlisting}
+\lstinputlisting[label=interface, caption={\footnotesize vm のインターフェースの定義(vm.h)}]{./src/vm.h}
 
 1行目ので実装名を定義している。
 typedef struct の直後に実装名(vm)を書く。
-\par
+
+
 2行目から19行目で引数の Data Gear 郡を定義している。
 初期化された Data Gear がそれぞれの Code Gear の引数として扱われる。
 例として、2行目で定義された vm が21行目から32行目までの引数と対応している。
-\par
+
+
 % インターフェースの Code Gear の goto による継続先は基本的に不定となっており、継続元から渡される。
 Code Gear は\_\_code CodeGearName () で記述する。
 第一引数である Impl* vm が Code Gear の型になる。
-\par
+
+
 \_\_code next(...) の引数 ... は複数の Input Data Gear を持つという意味である。
 後述する実装によって条件分岐によって複数の継続先が設定されることがある。
-\par
+ 
+
  Code Gaer は 20行目から33行目のように "\_\_code [Code Gear名]([引数])"で定義する。
 この引数が input Data Gear になる。
 
@@ -89,163 +57,25 @@
 
 \section{インターフェースの実装}
  インターフェースは Data Gear に対しての Code Gear とその Code Gear で扱われている Data Gear の集合を抽象化した Meta Data Gear で、vm.c に対応する実装は別で定義する。
-\par
+
+
 インターフェースの実装についてソースコード \ref{impl_vm} で示す。
 
 
-\begin{lstlisting}[frame=lrbt,label=impl_vm,caption={\footnotesize vm インターフェースの実装}]
-#include "../../context.h"
-#interface "vm.h"
-
-vm* createvm_impl(struct Context* cbc_context) {
-    struct vm* vm  = new vm();
-    struct vm_impl* vm_impl = new vm_impl();
-    vm->vm = (union Data*)vm_impl;
-    vm_impl->vm_impl = NULL;
-    vm_impl->i  = 0;
-    vm_impl->pte = NULL;
-    vm_impl->sz  = 0;
-    vm_impl->loaduvm_ptesize_check = C_loaduvm_ptesize_checkvm_impl;
-    vm_impl->loaduvm_loop = C_loaduvm_loopvm_impl;
-    vm_impl->allocuvm_check_newsz = C_allocuvm_check_newszvm_impl;
-    vm_impl->allocuvm_loop = C_allocuvm_loopvm_impl;
-    vm_impl->copyuvm_check_null = C_copyuvm_check_nullvm_impl;
-    vm_impl->copyuvm_loop = C_copyuvm_loopvm_impl;
-    vm_impl->uva2ka_check_pe_types = C_uva2ka_check_pe_types;
-    vm_impl->paging_intvm_impl = C_paging_intvmvm_impl;
-    vm_impl->copyout_loopvm_impl = C_copyout_loopvm_impl;
-    vm_impl->switchuvm_check_pgdirvm_impl = C_switchuvm_check_pgdirvm_impl;
-    vm_impl->init_inituvm_check_sz = C_init_inituvm_check_sz;
-    vm->void_ret  = C_vm_void_ret;
-    vm->init_vmm = C_init_vmmvm_impl;
-    vm->kpt_freerange = C_kpt_freerangevm_impl;
-    vm->kpt_alloc = C_kpt_allocvm_impl;
-    vm->switchuvm = C_switchuvmvm_impl;
-    vm->init_inituvm = C_init_inituvmvm_impl;
-    vm->loaduvm = C_loaduvmvm_impl;
-    vm->allocuvm = C_allocuvmvm_impl;
-    vm->clearpteu = C_clearpteuvm_impl;
-    vm->copyuvm = C_copyuvmvm_impl;
-    vm->uva2ka = C_uva2kavm_impl;
-    vm->copyout = C_copyoutvm_impl;
-    vm->paging_int = C_paging_intvm_impl;
-    return vm;
-}
-extern struct {
-    struct spinlock lock;
-    struct run *freelist;
-} kpt_mem;
-
-__code init_vmmvm_impl(struct vm_impl* vm,__code next(...)) {
-    initlock(&kpt_mem.lock, "vm");
-    kpt_mem.freelist = NULL;
-
-    goto next(...);
-}
-
-extern struct run {
-    struct run *next;
-};
-
-static void _kpt_free (char *v)
-{   
-    struct run *r;
-    
-    r = (struct run*) v;
-    r->next = kpt_mem.freelist;
-    kpt_mem.freelist = r;
-}
-
-__code kpt_freerangevm_impl(struct vm_impl* vm, uint low, uint hi, __code next(...)) {
-
-   if (low < hi) {
-     _kpt_free((char*)low);
-     goto kpt_freerangevm_impl(vm, low + PT_SZ, hi, next(...));
+\lstinputlisting[frame=lrbt,label=impl_vm,caption={\footnotesize vm インターフェースの実装}]{./src/vm_impl.cbc}
 
-   }
-  goto next(...);
-}
-
-__code kpt_allocvm_impl(struct vm_impl* vm, __code next(...)) {
-  acquire(&kpt_mem.lock);
-
-  goto kpt_alloc_check_impl(vm_impl, next(...));
-}
-
-typedef struct proc proc;
-__code switchuvmvm_impl(struct vm_impl* vm , struct proc* p, __code next(...)) { //:skip
-
-    goto switchuvm_check_pgdirvm_impl(...);
-}
-
-__code init_inituvmvm_impl(struct vm_impl* vm, pde_t* pgdir, char* init, uint sz, __code next(...)) {
-
-    Gearef(cbc_context, vm_impl)->pgdir = pgdir;
-    Gearef(cbc_context, vm_impl)->init = init;
-    Gearef(cbc_context, vm_impl)->sz = sz;
-    Gearef(cbc_context, vm_impl)->next = next;
-    goto init_inituvm_check_sz(vm, pgdir, init, sz, next(...));
-}
-
-__code loaduvmvm_impl(struct vm_impl* vm, pde_t* pgdir, char* addr, struct inode* ip, uint offset, uint sz,  __code next(...)) {
-    Gearef(cbc_context, vm_impl)->pgdir = pgdir;
-    Gearef(cbc_context, vm_impl)->addr = addr;
-    Gearef(cbc_context, vm_impl)->ip = ip;
-    Gearef(cbc_context, vm_impl)->offset = offset;
-    Gearef(cbc_context, vm_impl)->sz = sz;
-    Gearef(cbc_context, vm_impl)->next = next;
-
-    goto loaduvm_ptesize_checkvm_impl(vm, next(...));
-}
-
-__code allocuvmvm_impl(struct vm_impl* vm, pde_t* pgdir, uint oldsz, uint newsz, __code next(...)) {
-
-    goto allocuvm_check_newszvm_impl(vm, pgdir, oldsz, newsz, next(...));
-}
-
-__code clearpteuvm_impl(struct vm_impl* vm, pde_t* pgdir, char* uva,  __code next(...)) {
-
-    goto clearpteu_check_ptevm_impl(vm, pgdir, uva, next(...));
-}
-
-__code copyuvmvm_impl(struct vm_impl* vm, pde_t* pgdir, uint sz, __code next(...)) {
-
-    goto copyuvm_check_nullvm_impl(vm, pgdir, sz, __code next(...));
-}
-
-__code uva2kavm_impl(struct vm_impl* vm, pde_t* pgdir, char* uva, __code next(...)) {
-
-    goto uva2ka_check_pe_types(vm, pgdir, uva, next(...));
-}
-
-__code copyoutvm_impl(struct vm_impl* vm, pde_t* pgdir, uint va, void* pp, uint len, __code next(...)) {
-
-    vm->buf = (char*) pp;
-
-    goto copyout_loopvm_impl(vm, pgdir, va, pp, len, va0, pa0, next(...));
-}
-
-__code paging_intvm_impl(struct vm_impl* vm, uint phy_low, uint phy_hi, __code next(...)) {
-
-    goto paging_intvmvm_impl(vm, phy_low, phy_hi, next(...));
-}
-
-__code vm_void_ret(struct vm_impl* vm) {
-    return;
-}
-
-\end{lstlisting}
+2行目のようにインターフェースのヘッダーファイルは \#interface で呼び出す。
 
 
-2行目のようにインターフェースのヘッダーファイルは \#interface で呼び出す。
-\par
 create\_impl の関数内で、インターフェースを vm で定義し、23行目の vm-$>$void\_ret のようにそれぞれのインターフェースに対応させていく。
-\par
+
+
 CbCは1つ1つの関数の信頼性を保障させるために細かくする必要があるので、for文やif文がある場合はさらに実装を分ける。vm と同じように vm\_impl を定義し、遷移する関数名に対応させていく。分けた実装はさらに別で実装する(vm\_impl\_private.cbc)。
 
 
 % インターフェースを呼び出す場合は、struct vm* vm = createvm_impl(cbc_context); 
-\par
+
+
 
 
 
@@ -258,60 +88,12 @@
 インターフェースで定義した Code Gear 以外の Code Gaer も記述することができる。
 この Code Gear は基本的にインターフェースで指定された Code Gear 内からのみ継続されるため、
 Java の private メソッドのように扱われる。
-\par
+
+
 インターフェースと同じようにヘッダーファイルをソースコード \ref{impl_vm_privateh} で定義する。
 
 
-\begin{lstlisting}[frame=lrbt,label=impl_vm_privateh,caption={\footnotesize vm private のヘッダーファイル}]
-typedef struct vm_impl<Impl, Isa> impl vm{
-    union Data* vm_impl;
-    uint i;
-    pte_t* pte;
-    uint sz;
-    pde_t* pgdir;
-    char* addr;
-    struct inode* ip;
-    uint offset;
-    uint pa;
-    uint n;
-    uint oldsz;
-    uint newsz;
-    uint a;
-    int ret;
-    char* mem;
-    char* uva;
-    pde_t* d;
-    uint ap;
-    uint phy_low;
-    uint phy_hi;
-    uint va;
-    void* pp;
-    uint len;
-    char* buf;
-    char* pa0;
-    uint va0;
-    proc_struct* p;
-    char* init;
-
-    __code kpt_alloc_check_impl(Type* vm_impl, __code next(...));
-    __code loaduvm_ptesize_check(Type* vm_impl, __code next(int ret, ...));
-    __code loaduvm_loop(Type* vm_impl, uint i, pte_t* pte, uint sz, __code next(int ret, ...));
-    __code allocuvm_check_newsz(Type* vm_impl, pde_t* pgdir, uint oldsz, uint newsz, __code next(...));
-    __code allocuvm_loop(Type* vm_impl, pde_t* pgdir, uint oldsz, uint newsz, uint a, __code next(...));
-    __code copyuvm_check_null(Type* vm_impl, pde_t* pgdir, uint sz, __code next(...));
-    __code copyuvm_loop(Type* vm_impl,pde_t* pgdir, uint sz, pde_t* d, pte_t* pte, uint pa, uint i, uint ap, char* mem, __code next(int ret, ...));
-    __code clearpteu_check_ptevm_impl(Type* vm_impl, pde_t* pgdir, char* uva,  __code next(...));
-    __code uva2ka_check_pe_types(Type* vm_impl, pde_t* pgdir, char* uva, __code next(...));
-    __code paging_intvm_impl(Type* vm_impl, uint phy_low, uint phy_hi, __code next(...));
-    __code copyout_loopvm_impl(Type* vm_impl, pde_t* pgdir, uint va, void* pp, uint len, __code next(...));
-    __code switchuvm_check_pgdirvm_impl(struct vm_impl* vm_impl, struct proc* p, __code next(...));
-    __code init_inituvm_check_sz(struct vm_impl* vm_impl, pde_t* pgdir, char* init, uint sz, __code next(...));
-    __code void_ret(Type* vm_impl);
-    __code next(...);
-} vm_impl;
-
-\end{lstlisting}
-
+\lstinputlisting[frame=lrbt,label=impl_vm_privateh,caption={\footnotesize vm private のヘッダーファイル}]{./src/vm_impl_private.h}
 
 
 private での CbC の記述を vm.c と比べて説明する。
@@ -319,7 +101,38 @@
 
 
 \begin{lstlisting}[frame=lrbt,label=vm_loaduvm,caption={\footnotesize vm.c のloaduvm}]
+// Return the address of the PTE in page directory that corresponds to
+// virtual address va.  If alloc!=0, create any required page table pages.
+static pte_t* walkpgdir (pde_t *pgdir, const void *va, int alloc)
+{
+    pde_t *pde;
+    pte_t *pgtab;
 
+    // pgdir points to the page directory, get the page direcotry entry (pde)
+    pde = &pgdir[PDE_IDX(va)];
+
+    if (*pde & PE_TYPES) {
+        pgtab = (pte_t*) p2v(PT_ADDR(*pde));
+
+    } else {
+        if (!alloc || (pgtab = (pte_t*) kpt_alloc()) == 0) {
+            return 0;
+        }
+
+        // Make sure all those PTE_P bits are zero.
+        memset(pgtab, 0, PT_SZ);
+
+        // The permissions here are overly generous, but they can
+        // be further restricted by the permissions in the page table
+        // entries, if necessary.
+        *pde = v2p(pgtab) | UPDE_TYPE;
+    }
+
+    return &pgtab[PTE_IDX(va)];
+}
+
+// Load a program segment into pgdir.  addr must be page-aligned
+// and the pages from addr to addr+sz must already be mapped.
 int loaduvm (pde_t *pgdir, char *addr, struct inode *ip, uint offset, uint sz)
 {
     uint i, pa, n;
@@ -352,6 +165,12 @@
 
 \end{lstlisting}
 
+vm\_impl.cbc の Code Gear であるloaduvmvm\_impl から goto で loaduvm\_ptesize\_checkvm\_impl に遷移する。
+vm.c での最初の if 文までの処理を 1つの Code Gear として loaduvm\_ptesize\_checkvm\_impl に記述する。(3行目~11行目)
+
+
+ 
+
 
 
 
@@ -470,78 +289,9 @@
 例として、ソースコード \ref{cbc_goto} の16行目のように goto によってインターフェースで定義した命令を行うと、戻ってこれないため17行目以降が実行されなくなる。
 
 
-\begin{lstlisting}[frame=lrbt,label=cbc_goto,caption={\footnotesize cbc インターフェースのgoto}]
-
-void userinit(void)
-{
-    struct proc* p;
-    extern char _binary_initcode_start[], _binary_initcode_size[];
-
-    p = allocproc();
-    initContext(&p->cbc_context);
-
-    initproc = p;
-
-    if((p->pgdir = kpt_alloc()) == NULL) {
-        panic("userinit: out of memory?");
-    }
-
-    goto cbc_init_vmm_dummy(&p->cbc_context, p, p->pgdir, _binary_initcode_start, (int)_binary_initcode_size);
-    p->sz = PTE_SZ;
-
-    // craft the trapframe as if
-    memset(p->tf, 0, sizeof(*p->tf));
-
-
-\end{lstlisting}
-
-
-
-
-\begin{lstlisting}[frame=lrbt,label=dummy,caption={\footnotesize dummy を使った呼び出し}]
-
-
-void dummy(struct proc *p, char _binary_initcode_start[], char _binary_initcode_size[])
-{
-    // inituvm(p->pgdir, _binary_initcode_start, (int)_binary_initcode_size);
-    goto cbc_init_vmm_dummy(&p->cbc_context, p, p->pgdir, _binary_initcode_start, (int)_binary_initcode_size);
+\lstinputlisting[frame=lrbt,label=cbc_goto,caption={\footnotesize cbc インターフェースのgoto}]{./src/failure_example_userinit}
 
-}
-
-
-
-__ncode cbc_init_vmm_dummy(struct Context* cbc_context, struct proc* p, pde_t* pgdir, char* init, uint sz){//:skip
-
-    struct vm* vm = createvm_impl(cbc_context);
-    // goto vm->init_vmm(vm, pgdir, init, sz , vm->void_ret);
-        Gearef(cbc_context, vm)->vm = (union Data*) vm;
-        Gearef(cbc_context, vm)->pgdir = pgdir;
-        Gearef(cbc_context, vm)->init = init;
-        Gearef(cbc_context, vm)->sz = sz ;
-        Gearef(cbc_context, vm)->next = C_vm_void_ret ;
-    goto meta(cbc_context, vm->init_inituvm);
-}
-
-
-void userinit(void)
-{
-    struct proc* p;
-    extern char _binary_initcode_start[], _binary_initcode_size[];
-
-    p = allocproc();
-    initContext(&p->cbc_context);
-
-    initproc = p;
-
-    if((p->pgdir = kpt_alloc()) == NULL) {
-        panic("userinit: out of memory?");
-    }
-
-    dummy(p, _binary_initcode_start, _binary_initcode_size);
-
-
-
-\end{lstlisting}
+\lstinputlisting[frame=lrbt,label=dummy,caption={\footnotesize dummy を使った呼び出し}]{./src/dummy}
 ソースコードの説明
 
 
--- a/paper/master_paper.aux	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.aux	Wed Feb 05 17:08:43 2020 +0900
@@ -50,16 +50,16 @@
 \@writefile{toc}{\contentsline {section}{\numberline {5.4}インターフェースの呼び出し}{21}\protected@file@percent }
 \newlabel{cbc_goto}{{5.6}{21}}
 \@writefile{lol}{\contentsline {lstlisting}{\numberline {5.6}\footnotesize  cbc インターフェースのgoto}{21}\protected@file@percent }
-\newlabel{dummy}{{5.7}{21}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.7}\footnotesize  dummy を使った呼び出し}{21}\protected@file@percent }
-\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}評価}{23}\protected@file@percent }
+\newlabel{dummy}{{5.7}{22}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.7}\footnotesize  dummy を使った呼び出し}{22}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}評価}{24}\protected@file@percent }
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}まとめ}{24}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}まとめ}{25}\protected@file@percent }
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {7.1}今後の書き換え方針}{24}\protected@file@percent }
-\@writefile{toc}{\contentsline {chapter}{謝辞}{24}\protected@file@percent }
+\@writefile{toc}{\contentsline {section}{\numberline {7.1}今後の書き換え方針}{25}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{謝辞}{25}\protected@file@percent }
 \citation{*}
 \bibdata{reference}
 \bibcite{xv6}{1}
@@ -73,10 +73,19 @@
 \bibcite{Sigurbjarnarson:2016:PVF:3026877.3026879}{9}
 \bibcite{agda-ryokka}{10}
 \bibcite{agda}{11}
-\@writefile{toc}{\contentsline {chapter}{参考文献}{26}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{参考文献}{27}\protected@file@percent }
 \bibcite{llvm}{12}
 \bibcite{gcc}{13}
 \bibcite{gears}{14}
 \bibcite{arm}{15}
 \bibstyle{junsrt}
-\@writefile{toc}{\contentsline {chapter}{付録}{27}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{発表履歴}{28}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{付録}{29}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{\numberline {付 録A }ソースコード一覧}{30}\protected@file@percent }
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {A-1}インターフェース内の private メソッドの実装}{30}\protected@file@percent }
+\newlabel{vm_c_all}{{A.1}{30}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {A.1}\footnotesize  Xv6 の vm.c}{30}\protected@file@percent }
+\newlabel{vm_impl_private}{{A.2}{38}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {A.2}\footnotesize  vm の実装の private}{38}\protected@file@percent }
--- a/paper/master_paper.lof	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.lof	Wed Feb 05 17:08:43 2020 +0900
@@ -8,3 +8,4 @@
 \addvspace {10\p@ }
 \addvspace {10\p@ }
 \addvspace {10\p@ }
+\addvspace {10\p@ }
--- a/paper/master_paper.log	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.log	Wed Feb 05 17:08:43 2020 +0900
@@ -1,4 +1,4 @@
-This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex 2020.1.16)  4 FEB 2020 15:28
+This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex 2020.1.16)  5 FEB 2020 17:05
 entering extended mode
  restricted \write18 enabled.
  file:line:error style messages enabled.
@@ -219,89 +219,89 @@
 (./master_paper.aux)
 \openout1 = `master_paper.aux'.
 
-LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for JY1/mc/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
-LaTeX Font Info:    Checking defaults for JT1/mc/m/n on input line 65.
-LaTeX Font Info:    ... okay on input line 65.
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for JY1/mc/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
+LaTeX Font Info:    Checking defaults for JT1/mc/m/n on input line 66.
+LaTeX Font Info:    ... okay on input line 66.
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
-(Font)              scaled to size 11.54663pt on input line 65.
+(Font)              scaled to size 11.54663pt on input line 66.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 11.54663pt on input line 65.
+(Font)              scaled to size 11.54663pt on input line 66.
 \c@lstlisting=\count118
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
-(Font)              scaled to size 15.39551pt on input line 67.
+(Font)              scaled to size 15.39551pt on input line 68.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 15.39551pt on input line 67.
+(Font)              scaled to size 15.39551pt on input line 68.
 
 
 LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <16> not available
-(Font)              size <17.28> substituted on input line 67.
+(Font)              size <17.28> substituted on input line 68.
 
 LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
-(Font)              scaled to size 15.39551pt on input line 67.
+(Font)              scaled to size 15.39551pt on input line 68.
 LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
-(Font)              scaled to size 15.39551pt on input line 67.
+(Font)              scaled to size 15.39551pt on input line 68.
 
 LaTeX Font Warning: Font shape `OT1/cmr/bx/n' in size <16> not available
-(Font)              size <17.28> substituted on input line 67.
+(Font)              size <17.28> substituted on input line 68.
 
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
-(Font)              scaled to size 17.31995pt on input line 67.
+(Font)              scaled to size 17.31995pt on input line 68.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 17.31995pt on input line 67.
+(Font)              scaled to size 17.31995pt on input line 68.
 
 LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <18> not available
-(Font)              size <17.28> substituted on input line 67.
+(Font)              size <17.28> substituted on input line 68.
 
 LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
-(Font)              scaled to size 17.31995pt on input line 67.
+(Font)              scaled to size 17.31995pt on input line 68.
 LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
-(Font)              scaled to size 17.31995pt on input line 67.
+(Font)              scaled to size 17.31995pt on input line 68.
 
 LaTeX Font Warning: Font shape `OT1/cmr/bx/n' in size <18> not available
-(Font)              size <17.28> substituted on input line 67.
+(Font)              size <17.28> substituted on input line 68.
 
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
-(Font)              scaled to size 13.47107pt on input line 67.
+(Font)              scaled to size 13.47107pt on input line 68.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 13.47107pt on input line 67.
+(Font)              scaled to size 13.47107pt on input line 68.
 File: fig/u-ryukyu-Mark.eps Graphic file (type eps)
 <fig/u-ryukyu-Mark.eps>
 LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
-(Font)              scaled to size 13.47107pt on input line 67.
+(Font)              scaled to size 13.47107pt on input line 68.
 LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
-(Font)              scaled to size 13.47107pt on input line 67.
+(Font)              scaled to size 13.47107pt on input line 68.
 [0
 
 ]
 LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <12> on input line 71.
+(Font)              <12> on input line 72.
 LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <8> on input line 71.
+(Font)              <8> on input line 72.
 LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <6> on input line 71.
+(Font)              <6> on input line 72.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 7.69775pt on input line 71.
+(Font)              scaled to size 7.69775pt on input line 72.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 5.77332pt on input line 71.
+(Font)              scaled to size 5.77332pt on input line 72.
 LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
-(Font)              scaled to size 11.54663pt on input line 71.
+(Font)              scaled to size 11.54663pt on input line 72.
 LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
-(Font)              scaled to size 11.54663pt on input line 71.
+(Font)              scaled to size 11.54663pt on input line 72.
 
-Overfull \hbox (2.61108pt too wide) in paragraph at lines 71--72
+Overfull \hbox (2.61108pt too wide) in paragraph at lines 72--73
 []$[]$[] []$[]$[] 
  []
 
@@ -326,13 +326,13 @@
 \openout4 = `master_paper.toc'.
 
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
-(Font)              scaled to size 10.53629pt on input line 87.
+(Font)              scaled to size 10.53629pt on input line 88.
 LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 10.53629pt on input line 87.
+(Font)              scaled to size 10.53629pt on input line 88.
 LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
-(Font)              scaled to size 10.53629pt on input line 87.
+(Font)              scaled to size 10.53629pt on input line 88.
 LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
-(Font)              scaled to size 10.53629pt on input line 87.
+(Font)              scaled to size 10.53629pt on input line 88.
  [2] (./master_paper.lof)
 \tf@lof=\write5
 \openout5 = `master_paper.lof'.
@@ -393,17 +393,35 @@
 
 ] [10] [11]
 第 5 章(12ページ)
-[12
+(./src/vm.h [12
+
+]) (./src/vm_impl.cbc [13] [14] [15]) [16]
+(./src/vm_impl_private.h [17]) [18]
+Overfull \hbox (39.8747pt too wide) in paragraph at lines 168--170
+[]\OT1/cmr/m/n/12 vm[]impl.cbc \JY1/hmc/m/n/12 の \OT1/cmr/m/n/12 Code Gear \JY
+1/hmc/m/n/12 である \OT1/cmr/m/n/12 load-u-vmvm[]impl \JY1/hmc/m/n/12 から \OT1
+/cmr/m/n/12 goto \JY1/hmc/m/n/12 で \OT1/cmr/m/n/12 load-uvm[]ptesize[]checkvm[
+]impl
+ []
+
 
-] [13] [14] [15] [16] [17] [18] [19] [20] [21]) (./evaluation.tex [22]
-第 6 章(23ページ)
-) (./summary.tex [23
+Overfull \hbox (70.15034pt too wide) in paragraph at lines 168--170
+\JY1/hmc/m/n/12 に遷移する 。 \OT1/cmr/m/n/12 vm.c \JY1/hmc/m/n/12 での最初の \
+OT1/cmr/m/n/12 if \JY1/hmc/m/n/12 文までの処理を \OT1/cmr/m/n/12 1 \JY1/hmc/m/n
+/12 つの \OT1/cmr/m/n/12 Code Gear \JY1/hmc/m/n/12 として \OT1/cmr/m/n/12 load-
+uvm[]ptesize[]checkvm[]impl
+ []
+
+[19] [20] (./src/failure_example_userinit [21]) (./src/dummy [22]))
+(./evaluation.tex [23]
+第 6 章(24ページ)
+) (./summary.tex [24
 
 ]
-第 7 章(24ページ)
-) (./thanks.tex [24
+第 7 章(25ページ)
+) (./thanks.tex [25
 
-]) (./master_paper.bbl [25
+]) (./master_paper.bbl [26
 
 ]
 Underfull \hbox (badness 10000) in paragraph at lines 14--16
@@ -427,7 +445,7 @@
 (Font)              scaled to size 11.54663pt on input line 30.
 LaTeX Font Info:    Font shape `JY1/hgt/m/it' will be
 (Font)              scaled to size 11.54663pt on input line 30.
-[26
+[27
 
 ]
 Overfull \hbox (8.48145pt too wide) in paragraph at lines 86--89
@@ -435,7 +453,25 @@
 tp://infocenter.arm.com/help/topic/com.arm. 
  []
 
-) [27] (./master_paper.aux)
+) (./history.tex [28]
+LaTeX Font Info:    Trying to load font information for OMS+cmr on input line 3
+.
+
+(/usr/local/texlive/2019basic/texmf-dist/tex/latex/base/omscmr.fd
+File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info:    Font shape `OMS/cmr/m/n' in size <12> not available
+(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 3.
+)
+(./sources.tex [29
+
+]
+付 録 A  (30ページ)
+(./src/vm_all.c [30
+
+] [31] [32] [33] [34] [35] [36] [37])
+(./src/vm_impl_private_all.cbc [38] [39] [40] [41] [42] [43] [44] [45] [46]))
+[47] (./master_paper.aux)
 
 LaTeX Font Warning: Size substitutions with differences
 (Font)              up to 1.28pt have occurred.
@@ -443,17 +479,14 @@
 
 LaTeX Font Warning: Some font shapes were not available, defaults substituted.
 
-
-LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
-
  ) 
 Here is how much of TeX's memory you used:
- 6364 strings out of 493985
- 90180 string characters out of 6166648
- 339259 words of memory out of 5000000
- 10668 multiletter control sequences out of 15000+600000
+ 6421 strings out of 493985
+ 91090 string characters out of 6166648
+ 375234 words of memory out of 5000000
+ 10693 multiletter control sequences out of 15000+600000
  17126 words of font info for 87 fonts, out of 8000000 for 9000
  107 hyphenation exceptions out of 8191
- 32i,11n,36p,411b,1798s stack positions out of 5000i,500n,10000p,200000b,80000s
+ 33i,11n,36p,410b,1835s stack positions out of 5000i,500n,10000p,200000b,80000s
 
-Output written on master_paper.dvi (35 pages, 112988 bytes).
+Output written on master_paper.dvi (55 pages, 235152 bytes).
--- a/paper/master_paper.lol	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.lol	Wed Feb 05 17:08:43 2020 +0900
@@ -6,4 +6,6 @@
 \contentsline {lstlisting}{\numberline {5.4}\footnotesize vm.c のloaduvm}{18}%
 \contentsline {lstlisting}{\numberline {5.5}\footnotesize privateでの loaduvm の実装}{19}%
 \contentsline {lstlisting}{\numberline {5.6}\footnotesize cbc インターフェースのgoto}{21}%
-\contentsline {lstlisting}{\numberline {5.7}\footnotesize dummy を使った呼び出し}{21}%
+\contentsline {lstlisting}{\numberline {5.7}\footnotesize dummy を使った呼び出し}{22}%
+\contentsline {lstlisting}{\numberline {A.1}\footnotesize Xv6 の vm.c}{30}%
+\contentsline {lstlisting}{\numberline {A.2}\footnotesize vm の実装の private}{38}%
--- a/paper/master_paper.lot	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.lot	Wed Feb 05 17:08:43 2020 +0900
@@ -5,3 +5,4 @@
 \addvspace {10\p@ }
 \addvspace {10\p@ }
 \addvspace {10\p@ }
+\addvspace {10\p@ }
Binary file paper/master_paper.pdf has changed
Binary file paper/master_paper.synctex.gz has changed
--- a/paper/master_paper.tex	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.tex	Wed Feb 05 17:08:43 2020 +0900
@@ -9,6 +9,7 @@
 \usepackage{url}
 \usepackage[deluxe, multi]{otf}
 
+
 %\input{dummy.tex} %% font
 
 \jtitle{GearsOS の Paging}
@@ -25,10 +26,10 @@
     琉球大学大学院学位論文(修士)
 \end{minipage}}
 
-\markleftfoot{% 左下に挿入
-  \begin{minipage}{.8\textwidth}
-    Gears OS の Paging
-\end{minipage}}
+% \markleftfoot{% 左下に挿入
+%  \begin{minipage}{.8\textwidth}
+%    Gears OS の Paging
+% \end{minipage}}
 
 \newcommand\figref[1]{図 \ref{fig:#1}}
 \newcommand\tabref[1]{表 \ref{tab:#1}}
@@ -92,9 +93,9 @@
 %リスト目次
 \lstlistoflistings
 
-% %chapters
+%chapters
 % \input{introduction.tex}
- \input{memory_manage.tex}
+\input{memory_manage.tex}
 \input{GearsOS.tex}
 \input{Xv6.tex}
 \input{Paging.tex}
@@ -113,7 +114,12 @@
 \bibliographystyle{junsrt}
 
 
+%発表履歴
+\addcontentsline{toc}{chapter}{発表履歴}
+\input{history.tex}]
+
 %付録
 \addcontentsline{toc}{chapter}{付録}
 \appendix
+\input{sources.tex}
 \end{document}
--- a/paper/master_paper.toc	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/master_paper.toc	Wed Feb 05 17:08:43 2020 +0900
@@ -17,9 +17,12 @@
 \contentsline {section}{\numberline {5.2}インターフェースの実装}{13}%
 \contentsline {section}{\numberline {5.3}インターフェース内の private メソッド}{17}%
 \contentsline {section}{\numberline {5.4}インターフェースの呼び出し}{21}%
-\contentsline {chapter}{\numberline {第6章}評価}{23}%
-\contentsline {chapter}{\numberline {第7章}まとめ}{24}%
-\contentsline {section}{\numberline {7.1}今後の書き換え方針}{24}%
-\contentsline {chapter}{謝辞}{24}%
-\contentsline {chapter}{参考文献}{26}%
-\contentsline {chapter}{付録}{27}%
+\contentsline {chapter}{\numberline {第6章}評価}{24}%
+\contentsline {chapter}{\numberline {第7章}まとめ}{25}%
+\contentsline {section}{\numberline {7.1}今後の書き換え方針}{25}%
+\contentsline {chapter}{謝辞}{25}%
+\contentsline {chapter}{参考文献}{27}%
+\contentsline {chapter}{発表履歴}{28}%
+\contentsline {chapter}{付録}{29}%
+\contentsline {chapter}{\numberline {付 録A }ソースコード一覧}{30}%
+\contentsline {section}{\numberline {A-1}インターフェース内の private メソッドの実装}{30}%
--- a/paper/memory_manage.tex	Tue Feb 04 15:35:28 2020 +0900
+++ b/paper/memory_manage.tex	Wed Feb 05 17:08:43 2020 +0900
@@ -2,10 +2,12 @@
 メモリ管理は OS の信頼性の基本であるが、 現代の OS では、 User Space で Page Table Entry によるメモリ管理を行える OS は少ない。 
 これは User レベルの操作で Page Table が書き換えられたり、別の Page にアクセスするのを防ぐためだと考えられる。
 しかし、User Space でメモリ管理を行えるようにすることで、 Page のバリデーションをチェックしたり、サンドボックスによる信頼性の保証を行えるようになる。また、適切な記述をすれば最適なメモリ管理にも繋がる。
-\par 
+
+ 
  本研究室で開発したメタレベルの記述ができる CbC という言語を用いて、 OS の信頼性の基本であるメモリ管理を行える OS を実装することで、 OS の信頼性を保証したい。
 既存の Gears OS でのメモリ管理では単に Page Table Entry をコピーする Fork を実装
 しているが、 さらに資源管理を行える CbC で軽量なハードウェアでも動かせるように Arm のバイナリを出力する Xv6 を参考に GearsOS にメモリ管理を行う API を考察する。
-\par
-CbC は継続を中心とした言語であるため、状態遷移モデルに落とし込むことができる。
+
+
+ CbC は継続を中心とした言語であるため、状態遷移モデルに落とし込むことができる。
 CbC で書き換えることによって OS の機能の信頼性を保証することができる。
--- a/thsis_paging.mm	Tue Feb 04 15:35:28 2020 +0900
+++ b/thsis_paging.mm	Wed Feb 05 17:08:43 2020 +0900
@@ -8,6 +8,9 @@
 <icon BUILTIN="idea"/>
 <node CREATED="1580462021212" ID="ID_890799242" MODIFIED="1580462025706" TEXT="&#x6700;&#x5f8c;&#x306b;&#x66f8;&#x304f;">
 <node CREATED="1580782397745" ID="ID_79398832" MODIFIED="1580782421011" TEXT="&#x30e1;&#x30e2;&#x30ea;&#x7ba1;&#x7406;&#x3088;&#x308a;&#x30a4;&#x30f3;&#x30bf;&#x30fc;&#x30d5;&#x30a7;&#x30fc;&#x30b9;&#x306e;&#x5185;&#x5bb9;&#x3092;&#x66f8;&#x304f;"/>
+<node CREATED="1580887424881" ID="ID_1159285917" MODIFIED="1580887433476" TEXT="OS&#x306e;&#x30d0;&#x30b0;&#x4f8b;&#x8abf;&#x3079;&#x308b;">
+<node CREATED="1580887434966" ID="ID_306328321" MODIFIED="1580887444734" TEXT="&#x305d;&#x3053;&#x304b;&#x3089;&#x76ee;&#x7684;&#x306b;&#x3064;&#x306a;&#x3052;&#x308b;"/>
+</node>
 </node>
 <node CREATED="1580462026946" ID="ID_1472155882" MODIFIED="1580462030002" TEXT="&#x82f1;&#x8a9e;&#x3082;"/>
 </node>
@@ -35,8 +38,9 @@
 <node CREATED="1580782925878" ID="ID_720702973" MODIFIED="1580782933799" TEXT="&#x30bd;&#x30fc;&#x30b9;&#x30b3;&#x30fc;&#x30c9;&#x306e;&#x8aac;&#x660e;">
 <icon BUILTIN="idea"/>
 </node>
-<node CREATED="1580783543307" ID="ID_38181422" MODIFIED="1580783559889" TEXT="enum Code Gear &#x306e;&#x756a;&#x53f7;&#x3068; Context&#x306e;&#x521d;&#x671f;&#x5316;">
+<node CREATED="1580783543307" ID="ID_38181422" MODIFIED="1580806862676" TEXT="enum Code Gear &#x306e;&#x756a;&#x53f7;&#x3068; Context&#x306e;&#x521d;&#x671f;&#x5316;">
 <icon BUILTIN="idea"/>
+<icon BUILTIN="full-1"/>
 </node>
 </node>
 <node CREATED="1580188243030" ID="ID_1781662530" MODIFIED="1580460456622" TEXT="Meta Computation">
@@ -60,7 +64,9 @@
 <icon BUILTIN="idea"/>
 <icon BUILTIN="full-1"/>
 <node CREATED="1580206122141" ID="ID_263443526" MODIFIED="1580206132135" TEXT="Console &#x63a5;&#x7d9a;&#x66f8;&#x304f;"/>
-<node CREATED="1580474892496" ID="ID_1445151339" MODIFIED="1580474900889" TEXT="xv6-rpi&#x66f8;&#x304f;&#xff1f;"/>
+<node CREATED="1580474892496" ID="ID_1445151339" MODIFIED="1580474900889" TEXT="xv6-rpi&#x66f8;&#x304f;&#xff1f;">
+<node CREATED="1580806887593" ID="ID_300622813" MODIFIED="1580806893688" TEXT="crosscompile"/>
+</node>
 </node>
 </node>
 <node CREATED="1578979785550" ID="ID_1231580257" MODIFIED="1580292616993" POSITION="right" TEXT="CbCXv6&#x3067;&#x306e; Paging&#x306e;&#x66f8;&#x304d;&#x63db;&#x3048;">
@@ -102,10 +108,7 @@
 <icon BUILTIN="full-1"/>
 </node>
 </node>
-<node CREATED="1580459534075" ID="ID_1367211336" MODIFIED="1580461821289" TEXT="&#x4eca;&#x5f8c;&#x306e;&#x66f8;&#x304d;&#x63db;&#x3048;&#x65b9;&#x91dd;">
-<icon BUILTIN="idea"/>
-<icon BUILTIN="full-1"/>
-</node>
+<node CREATED="1580807041389" ID="ID_1062918094" MODIFIED="1580807044523" TEXT="goto panic "/>
 </node>
 <node CREATED="1578979830870" ID="ID_251771531" MODIFIED="1580461826293" POSITION="right" TEXT="Paging &#x306e;&#x8a55;&#x4fa1;">
 <icon BUILTIN="idea"/>
@@ -114,6 +117,7 @@
 <node CREATED="1578979834269" ID="ID_614747960" MODIFIED="1580461830011" POSITION="right" TEXT="&#x7d50;&#x8ad6;">
 <icon BUILTIN="idea"/>
 <icon BUILTIN="full-1"/>
+<node CREATED="1580459534075" ID="ID_1367211336" MODIFIED="1580806822693" TEXT="&#x4eca;&#x5f8c;&#x306e;&#x66f8;&#x304d;&#x63db;&#x3048;&#x65b9;&#x91dd;"/>
 </node>
 <node CREATED="1580462062575" ID="ID_76123952" MODIFIED="1580462065622" POSITION="right" TEXT="&#x53c2;&#x8003;&#x6587;&#x732e;"/>
 <node CREATED="1580462087263" ID="ID_1850863059" MODIFIED="1580462091208" POSITION="left" TEXT="&#x3084;&#x308b;&#x3053;&#x3068;">