changeset 12:9cf9e0b086c7

fix private code
author tobaru
date Tue, 04 Feb 2020 15:35:28 +0900
parents f7ed2b4874f4
children 1ef114182e80
files paper/Paging.tex paper/cbc_interface.tex paper/evaluation.tex paper/fig/MemoryConstitution.pdf 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/summary.tex thsis_paging.mm
diffstat 15 files changed, 278 insertions(+), 210 deletions(-) [+]
line wrap: on
line diff
--- a/paper/Paging.tex	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/Paging.tex	Tue Feb 04 15:35:28 2020 +0900
@@ -11,16 +11,16 @@
   メモリ管理の手法に、Paging がある。Paging ではメモリを Page と呼ばれる固定長の単位に分割し、メモリとスワップ領域で Page を入れ替えて管理を行う。
 \par
 
-図 \ref{fig:MEmoryConstitution} で Xv6の仮想メモリと実メモリについて説明する。
+図 \ref{fig:MemoryConstitution} で Xv6の仮想メモリと実メモリについて説明する。
+図のRWX は読み込み、書き込み、実行の権限を表している。
 
 
  \begin{figure}[ht]
  \begin{center}
   \includegraphics[width=160mm]{./fig/MemoryConstitution}
  \end{center}
- \caption{Layout of the virtual address space of a process and the layout of the physical address
-space. Note that if a machine has more than 2 Gbyte of physical memory, xv6 can use only the memory
-that fits between KERNBASE and 0xFE00000. Russ Cox(2018) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)} 
+ \caption{On the left, xv6’s kernel address space. RWX refer to PTE read, write, and execute
+permissions. On the right, the RISC-V physical address space that xv6 expects to see. Russ Cox(2014) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)} 
  \label{fig:MemoryConstitution}
 \end{figure}
 
--- a/paper/cbc_interface.tex	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/cbc_interface.tex	Tue Feb 04 15:35:28 2020 +0900
@@ -25,10 +25,10 @@
 \par 
 インターフェースを記述することによってノーマルレベルとメタレベルの分離が可能となる。
 
-Paging のインターフェースを記述したコードを \ref{interface} に示す。
+Paging のインターフェースを記述したコードを ソースコード \ref{interface} に示す。
 
 
-\begin{lstlisting}[frame=lrbt,label=interface,caption={\footnotesize vm のインターフェース}]
+\begin{lstlisting}[frame=lrbt,label=interface,caption={\footnotesize vm のインターフェースの定義(vm.h)}]
 typedef struct vm<Type,Impl> {
     union Data* vm;
     uint low;
@@ -65,13 +65,17 @@
 } vm;
 \end{lstlisting}
 
-
+1行目ので実装名を定義している。
+typedef struct の直後に実装名(vm)を書く。
 \par
 2行目から19行目で引数の Data Gear 郡を定義している。
-初期化された Data Gear が Code 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
@@ -86,8 +90,7 @@
 \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 インターフェースの実装}]
@@ -231,8 +234,24 @@
     return;
 }
 
+\end{lstlisting}
 
-\end{lstlisting}
+
+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
+
+
+
+
+
+
 
 
 \section{インターフェース内の private メソッド}
@@ -240,11 +259,10 @@
 この Code Gear は基本的にインターフェースで指定された Code Gear 内からのみ継続されるため、
 Java の private メソッドのように扱われる。
 \par
-インターフェースと同じようにヘッダーファイルを \ref{impl_vm_privateh} で定義する。
+インターフェースと同じようにヘッダーファイルをソースコード \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;
@@ -294,156 +312,162 @@
 
 \end{lstlisting}
 
-インターフェースを vm で インターフェースの実装を \ref{impl_vm_private} で示す。
-\par
+
 
-\begin{lstlisting}[frame=lrbt,label=impl_vm_private,caption={\footnotesize vm private の実装}]
-#include "../../context.h"
-#interface "vm.h"
+private での CbC の記述を vm.c と比べて説明する。
+全体の記述量が多いため、if文とfor文のある loaduvm という関数で説明を行う。
+
+
+\begin{lstlisting}[frame=lrbt,label=vm_loaduvm,caption={\footnotesize vm.c のloaduvm}]
 
-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;
-}
+int loaduvm (pde_t *pgdir, char *addr, struct inode *ip, uint offset, uint sz)
+{
+    uint i, pa, n;
+    pte_t *pte;
 
-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 ((uint) addr % PTE_SZ != 0) {
+        panic("loaduvm: addr must be page aligned");
+    }
 
-   if (low < hi) {
-     _kpt_free((char*)low);
-     goto kpt_freerangevm_impl(vm, low + PT_SZ, hi, next(...));
-
-   }
-  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
+    for (i = 0; i < sz; i += PTE_SZ) {
+        if ((pte = walkpgdir(pgdir, addr + i, 0)) == 0) {
+            panic("loaduvm: address should exist");
+        }
 
-    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;
+        pa = PTE_ADDR(*pte);
 
-    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(...));
-}
+        if (sz - i < PTE_SZ) {
+            n = sz - i;
+        } else {
+            n = PTE_SZ;
+        }
 
-__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;
+        if (readi(ip, p2v(pa), offset + i, n) != n) {
+            return -1;
+        }
+    }
 
-    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;
+    return 0;
 }
 
 \end{lstlisting}
 
 
+
+
+\begin{lstlisting}[frame=lrbt,label=impl_vm_loaduvm,caption={\footnotesize privateでの loaduvm の実装}]
+#interface "vm_impl.h"
+
+__code loaduvm_ptesize_checkvm_impl(struct vm_impl* vm_impl, __code next(int ret, ...)) {
+    char* addr = vm_impl->addr;
+
+    if ((uint) addr %PTE_SZ != 0) {
+       // goto panic
+    }
+
+    goto loaduvm_loopvm_impl(vm_impl, next(ret, ...));
+}
+
+__code loaduvm_loopvm_impl(struct vm_impl* vm_impl, __code next(int ret, ...)) {
+    uint i = vm_impl->i;
+    uint sz = vm_impl->sz;
+
+    if (i < sz) {
+        goto loaduvm_check_pgdir(vm_impl, next(ret, ...));
+    }
+
+    goto loaduvm_exit(vm_impl, next(ret, ...));
+}
+
+
+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)];
+}
+
+
+__code loaduvm_check_pgdir(struct vm_impl* vm_impl, __code next(int ret, ...)) {
+    pte_t* pte = vm_impl->pte;
+    pde_t* pgdir = vm_impl->pgdir;
+    uint i = vm_impl->i;
+    char* addr = vm_impl->addr;
+    uint pa = vm_impl->pa;
+
+    if ((pte = walkpgdir(pgdir, addr + i, 0)) == 0) {
+        // goto panic
+    }
+    pa = PTE_ADDR(*pte);
+
+    vm_impl->pte = pte;
+    vm_impl->pgdir = pgdir;
+    vm_impl->addr = addr;
+    vm_impl->pa = pa;
+
+    goto loaduvm_check_PTE_SZ(vm_impl, next(ret, ...));
+}
+
+__code loaduvm_check_PTE_SZ(struct vm_impl* vm_impl, __code next(int ret, ...)) {
+    uint sz = vm_impl->sz;
+    uint i = vm_impl->i;
+    uint n = vm_impl->n;
+    struct inode* ip = vm_impl->ip;
+    uint pa = vm_impl->pa;
+    uint offset = vm_impl->offset;
+
+    if (sz - i < PTE_SZ) {
+        n = sz - i;
+    } else {
+        n = PTE_SZ;
+    }
+
+    if (readi(ip, p2v(pa), offset + i, n) != n) {
+        ret = -1;
+        goto next(ret, ...);
+    }
+
+    vm_impl->n = n;
+
+    goto loaduvm_loopvm_impl(vm_impl, next(ret, ...));
+}
+
+__code loaduvm_exit(struct vm_impl* vm_impl, __code next(int ret, ...)) {
+    ret = 0;
+    goto next(ret, ...);
+}
+
+\end{lstlisting}
+
+
+
+
+
 \section{インターフェースの呼び出し}
+定義したインターフェースの呼び出し方について説明する。
  CbC の場合 goto による遷移を行うので、関数呼び出しのように goto 以降のコードを実行できない。
-例として、\ref{cbc_goto} の16行目のように goto によってインターフェースで定義した命令を行うと、戻ってこれないため17行目以降が実行されなくなる。
+例として、ソースコード \ref{cbc_goto} の16行目のように goto によってインターフェースで定義した命令を行うと、戻ってこれないため17行目以降が実行されなくなる。
 
 
 \begin{lstlisting}[frame=lrbt,label=cbc_goto,caption={\footnotesize cbc インターフェースのgoto}]
@@ -518,3 +542,12 @@
 
 
 \end{lstlisting}
+ソースコードの説明
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/evaluation.tex	Tue Feb 04 15:35:28 2020 +0900
@@ -0,0 +1,1 @@
+\chapter{評価}
Binary file paper/fig/MemoryConstitution.pdf has changed
--- a/paper/master_paper.aux	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/master_paper.aux	Tue Feb 04 15:35:28 2020 +0900
@@ -29,28 +29,37 @@
 \@writefile{toc}{\contentsline {section}{\numberline {4.2}Paging}{9}\protected@file@percent }
 \@writefile{toc}{\contentsline {section}{\numberline {4.3}User Space で Paging をする利点}{9}\protected@file@percent }
 \@writefile{toc}{\contentsline {section}{\numberline {4.4}Paging の書き換え}{10}\protected@file@percent }
-\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Layout of the virtual address space of a process and the layout of the physical address space. Note that if a machine has more than 2 Gbyte of physical memory, xv6 can use only the memory that fits between KERNBASE and 0xFE00000. Russ Cox(2018) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)}}{11}\protected@file@percent }
+\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces On the left, xv6’s kernel address space. RWX refer to PTE read, write, and execute permissions. On the right, the RISC-V physical address space that xv6 expects to see. Russ Cox(2014) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)}}{11}\protected@file@percent }
 \newlabel{fig:MemoryConstitution}{{4.1}{11}}
 \@writefile{toc}{\contentsline {chapter}{\numberline {第5章}CbC インターフェース}{12}\protected@file@percent }
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
 \@writefile{toc}{\contentsline {section}{\numberline {5.1}インターフェースの定義}{12}\protected@file@percent }
 \newlabel{interface}{{5.1}{12}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.1}\footnotesize  vm のインターフェース}{12}\protected@file@percent }
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.1}\footnotesize  vm のインターフェースの定義(vm.h)}{12}\protected@file@percent }
 \@writefile{toc}{\contentsline {section}{\numberline {5.2}インターフェースの実装}{13}\protected@file@percent }
-\newlabel{impl_vm}{{5.2}{13}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.2}\footnotesize  vm インターフェースの実装}{13}\protected@file@percent }
-\@writefile{toc}{\contentsline {section}{\numberline {5.3}インターフェース内の private メソッド}{16}\protected@file@percent }
-\newlabel{impl_vm_privateh}{{5.3}{16}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.3}\footnotesize  vm private のヘッダーファイル}{16}\protected@file@percent }
-\newlabel{impl_vm_private}{{5.4}{18}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.4}\footnotesize  vm private の実装}{18}\protected@file@percent }
+\newlabel{impl_vm}{{5.2}{14}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.2}\footnotesize  vm インターフェースの実装}{14}\protected@file@percent }
+\@writefile{toc}{\contentsline {section}{\numberline {5.3}インターフェース内の private メソッド}{17}\protected@file@percent }
+\newlabel{impl_vm_privateh}{{5.3}{17}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.3}\footnotesize  vm private のヘッダーファイル}{17}\protected@file@percent }
+\newlabel{vm_loaduvm}{{5.4}{18}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.4}\footnotesize  vm.c のloaduvm}{18}\protected@file@percent }
+\newlabel{impl_vm_loaduvm}{{5.5}{19}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.5}\footnotesize  privateでの loaduvm の実装}{19}\protected@file@percent }
 \@writefile{toc}{\contentsline {section}{\numberline {5.4}インターフェースの呼び出し}{21}\protected@file@percent }
-\newlabel{cbc_goto}{{5.5}{21}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.5}\footnotesize  cbc インターフェースのgoto}{21}\protected@file@percent }
-\newlabel{dummy}{{5.6}{21}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.6}\footnotesize  dummy を使った呼び出し}{21}\protected@file@percent }
-\@writefile{toc}{\contentsline {chapter}{謝辞}{22}\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 }
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}まとめ}{24}\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 }
 \citation{*}
 \bibdata{reference}
 \bibcite{xv6}{1}
@@ -64,10 +73,10 @@
 \bibcite{Sigurbjarnarson:2016:PVF:3026877.3026879}{9}
 \bibcite{agda-ryokka}{10}
 \bibcite{agda}{11}
-\@writefile{toc}{\contentsline {chapter}{参考文献}{24}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{参考文献}{26}\protected@file@percent }
 \bibcite{llvm}{12}
 \bibcite{gcc}{13}
 \bibcite{gears}{14}
 \bibcite{arm}{15}
 \bibstyle{junsrt}
-\@writefile{toc}{\contentsline {chapter}{付録}{25}\protected@file@percent }
+\@writefile{toc}{\contentsline {chapter}{付録}{27}\protected@file@percent }
--- a/paper/master_paper.lof	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/master_paper.lof	Tue Feb 04 15:35:28 2020 +0900
@@ -4,5 +4,7 @@
 \contentsline {figure}{\numberline {2.2}{\ignorespaces ノーマルレベルとメタレベルの継続の見え方}}{4}%
 \addvspace {10\p@ }
 \addvspace {10\p@ }
-\contentsline {figure}{\numberline {4.1}{\ignorespaces Layout of the virtual address space of a process and the layout of the physical address space. Note that if a machine has more than 2 Gbyte of physical memory, xv6 can use only the memory that fits between KERNBASE and 0xFE00000. Russ Cox(2018) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)}}{11}%
+\contentsline {figure}{\numberline {4.1}{\ignorespaces On the left, xv6’s kernel address space. RWX refer to PTE read, write, and execute permissions. On the right, the RISC-V physical address space that xv6 expects to see. Russ Cox(2014) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)}}{11}%
 \addvspace {10\p@ }
+\addvspace {10\p@ }
+\addvspace {10\p@ }
--- a/paper/master_paper.log	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/master_paper.log	Tue Feb 04 15:35:28 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 10:53
+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
 entering extended mode
  restricted \write18 enabled.
  file:line:error style messages enabled.
@@ -318,25 +318,33 @@
 
 ]) [3
 
-] (./master_paper.toc)
+] (./master_paper.toc [1
+
+
+])
 \tf@toc=\write4
 \openout4 = `master_paper.toc'.
 
- [1
-
-
-] (./master_paper.lof)
+LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
+(Font)              scaled to size 10.53629pt on input line 87.
+LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
+(Font)              scaled to size 10.53629pt on input line 87.
+LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
+(Font)              scaled to size 10.53629pt on input line 87.
+LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
+(Font)              scaled to size 10.53629pt on input line 87.
+ [2] (./master_paper.lof)
 \tf@lof=\write5
 \openout5 = `master_paper.lof'.
 
 
-[2
+[3
 
 ] (./master_paper.lot)
 \tf@lot=\write6
 \openout6 = `master_paper.lot'.
 
- [3
+ [4
 
 ] (./master_paper.lol
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
@@ -370,14 +378,6 @@
 ]
 File: ./fig/meta_cg_dg.pdf Graphic file (type pdf)
 <./fig/meta_cg_dg.pdf>
-LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
-(Font)              scaled to size 10.53629pt on input line 53.
-LaTeX Font Info:    Font shape `JY1/hmc/m/n' will be
-(Font)              scaled to size 10.53629pt on input line 53.
-LaTeX Font Info:    Font shape `JT1/hmc/bx/n' will be
-(Font)              scaled to size 10.53629pt on input line 53.
-LaTeX Font Info:    Font shape `JY1/hmc/bx/n' will be
-(Font)              scaled to size 10.53629pt on input line 53.
  [4] (./src/context.h
 LaTeX Font Info:    Font shape `JT1/hmc/m/n' will be
 (Font)              scaled to size 7.69775pt on input line 1.
@@ -387,10 +387,6 @@
 
 ]) (./Paging.tex [8]
 第 4 章(9ページ)
-
-LaTeX Warning: Reference `fig:MEmoryConstitution' on page 9 undefined on input 
-line 14.
-
 File: ./fig/MemoryConstitution.pdf Graphic file (type pdf)
 <./fig/MemoryConstitution.pdf>
 ) (./cbc_interface.tex [9
@@ -399,8 +395,15 @@
 第 5 章(12ページ)
 [12
 
-] [13] [14] [15] [16] [17] [18] [19] [20] [21]) (./thanks.tex [22])
-(./master_paper.bbl [23
+] [13] [14] [15] [16] [17] [18] [19] [20] [21]) (./evaluation.tex [22]
+第 6 章(23ページ)
+) (./summary.tex [23
+
+]
+第 7 章(24ページ)
+) (./thanks.tex [24
+
+]) (./master_paper.bbl [25
 
 ]
 Underfull \hbox (badness 10000) in paragraph at lines 14--16
@@ -424,7 +427,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.
-[24
+[26
 
 ]
 Overfull \hbox (8.48145pt too wide) in paragraph at lines 86--89
@@ -432,7 +435,7 @@
 tp://infocenter.arm.com/help/topic/com.arm. 
  []
 
-) [25] (./master_paper.aux)
+) [27] (./master_paper.aux)
 
 LaTeX Font Warning: Size substitutions with differences
 (Font)              up to 1.28pt have occurred.
@@ -441,16 +444,16 @@
 LaTeX Font Warning: Some font shapes were not available, defaults substituted.
 
 
-LaTeX Warning: There were undefined references.
+LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
 
  ) 
 Here is how much of TeX's memory you used:
- 6354 strings out of 493985
- 90070 string characters out of 6166648
- 361248 words of memory out of 5000000
- 10664 multiletter control sequences out of 15000+600000
+ 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
  17126 words of font info for 87 fonts, out of 8000000 for 9000
  107 hyphenation exceptions out of 8191
- 32i,11n,36p,470b,1800s stack positions out of 5000i,500n,10000p,200000b,80000s
+ 32i,11n,36p,411b,1798s stack positions out of 5000i,500n,10000p,200000b,80000s
 
-Output written on master_paper.dvi (32 pages, 113080 bytes).
+Output written on master_paper.dvi (35 pages, 112988 bytes).
--- a/paper/master_paper.lol	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/master_paper.lol	Tue Feb 04 15:35:28 2020 +0900
@@ -1,8 +1,9 @@
 \contentsline {lstlisting}{./src/context.h}{5}%
 \contentsline {lstlisting}{\numberline {3.1}\footnotesize xv6 のシステムコールのリスト}{7}%
-\contentsline {lstlisting}{\numberline {5.1}\footnotesize vm のインターフェース}{12}%
-\contentsline {lstlisting}{\numberline {5.2}\footnotesize vm インターフェースの実装}{13}%
-\contentsline {lstlisting}{\numberline {5.3}\footnotesize vm private のヘッダーファイル}{16}%
-\contentsline {lstlisting}{\numberline {5.4}\footnotesize vm private の実装}{18}%
-\contentsline {lstlisting}{\numberline {5.5}\footnotesize cbc インターフェースのgoto}{21}%
-\contentsline {lstlisting}{\numberline {5.6}\footnotesize dummy を使った呼び出し}{21}%
+\contentsline {lstlisting}{\numberline {5.1}\footnotesize vm のインターフェースの定義(vm.h)}{12}%
+\contentsline {lstlisting}{\numberline {5.2}\footnotesize vm インターフェースの実装}{14}%
+\contentsline {lstlisting}{\numberline {5.3}\footnotesize vm private のヘッダーファイル}{17}%
+\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}%
--- a/paper/master_paper.lot	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/master_paper.lot	Tue Feb 04 15:35:28 2020 +0900
@@ -3,3 +3,5 @@
 \addvspace {10\p@ }
 \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 11:16:19 2020 +0900
+++ b/paper/master_paper.tex	Tue Feb 04 15:35:28 2020 +0900
@@ -99,7 +99,8 @@
 \input{Xv6.tex}
 \input{Paging.tex}
 \input{cbc_interface.tex}
-
+\input{evaluation.tex}
+\input{summary.tex}
 
 % 
 % %謝辞
--- a/paper/master_paper.toc	Tue Feb 04 11:16:19 2020 +0900
+++ b/paper/master_paper.toc	Tue Feb 04 15:35:28 2020 +0900
@@ -15,8 +15,11 @@
 \contentsline {chapter}{\numberline {第5章}CbC インターフェース}{12}%
 \contentsline {section}{\numberline {5.1}インターフェースの定義}{12}%
 \contentsline {section}{\numberline {5.2}インターフェースの実装}{13}%
-\contentsline {section}{\numberline {5.3}インターフェース内の private メソッド}{16}%
+\contentsline {section}{\numberline {5.3}インターフェース内の private メソッド}{17}%
 \contentsline {section}{\numberline {5.4}インターフェースの呼び出し}{21}%
-\contentsline {chapter}{謝辞}{22}%
-\contentsline {chapter}{参考文献}{24}%
-\contentsline {chapter}{付録}{25}%
+\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}%
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/summary.tex	Tue Feb 04 15:35:28 2020 +0900
@@ -0,0 +1,5 @@
+\chapter{まとめ}
+\section{今後の書き換え方針}
+本論文では、Paging 部分の書き換えの説明を行なった。今後 Xv6 全体の CbC による書き換えを行なっていく
+。
+
--- a/thsis_paging.mm	Tue Feb 04 11:16:19 2020 +0900
+++ b/thsis_paging.mm	Tue Feb 04 15:35:28 2020 +0900
@@ -31,7 +31,14 @@
 </node>
 <node CREATED="1580108797610" ID="ID_1365788482" MODIFIED="1580108810835" TEXT="Code Gear, Data Gear"/>
 <node CREATED="1580107798502" ID="ID_1870725834" MODIFIED="1580107827464" TEXT="Meta &#x306e;&#x8aac;&#x660e;&#x3068;&#x9077;&#x79fb;&#x56f3;"/>
-<node CREATED="1580107483687" ID="ID_1285374455" MODIFIED="1580107511777" TEXT="Context"/>
+<node CREATED="1580107483687" ID="ID_1285374455" MODIFIED="1580107511777" TEXT="Context">
+<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;">
+<icon BUILTIN="idea"/>
+</node>
+</node>
 <node CREATED="1580188243030" ID="ID_1781662530" MODIFIED="1580460456622" TEXT="Meta Computation">
 <icon BUILTIN="idea"/>
 </node>
@@ -89,10 +96,11 @@
 <icon BUILTIN="full-1"/>
 </node>
 </node>
-<node CREATED="1580205101060" ID="ID_1917641207" MODIFIED="1580464273604" TEXT="dummy ">
+<node CREATED="1580205101060" ID="ID_1917641207" MODIFIED="1580785827499" TEXT="dummy ">
+<node CREATED="1580785812168" ID="ID_40959579" MODIFIED="1580785825203" TEXT="&#x30b3;&#x30fc;&#x30c9;&#x306e;&#x8aac;&#x660e;">
 <icon BUILTIN="idea"/>
 <icon BUILTIN="full-1"/>
-<icon BUILTIN="yes"/>
+</node>
 </node>
 <node CREATED="1580459534075" ID="ID_1367211336" MODIFIED="1580461821289" TEXT="&#x4eca;&#x5f8c;&#x306e;&#x66f8;&#x304d;&#x63db;&#x3048;&#x65b9;&#x91dd;">
 <icon BUILTIN="idea"/>