# HG changeset patch # User tobaru # Date 1580294661 -32400 # Node ID 4dd10e3e45d2b185bbfc0323368d2fda385cf00e # Parent 73697739a74de530dba04d5d0588517ff726fce3 chapter exchange diff -r 73697739a74d -r 4dd10e3e45d2 paper/GearsOS.tex --- a/paper/GearsOS.tex Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/GearsOS.tex Wed Jan 29 19:44:21 2020 +0900 @@ -1,5 +1,6 @@ -\chapter{Geas OS} - 信頼性の保証と並列実行のサポートを目的として、 Gears OS を開発している。 +\chapter{CbC による Geas OS の開発} + 信頼性の保証と並列実行のサポートを目的として、 本研究室では CbC というプログラミング言語を開発してきた。 + さらにその CbC を使って Gears OS を開発している。 従来の OS が行うメモリ管理並列実行は Meta レベル(kernel space)で処理される。 ノーマルレベルからメタレベルの記述ができる GearsOS を開発している。 @@ -60,8 +61,3 @@ ソースコードの説明書く -\section{Interface} - Gears OS では Meta Code Gear で Context から値を取り出し、ノーマルレベルの Code Gear に値を渡す。しかし、メタレベルからノーマルレベルの継続の記述が煩雑になるため、Interface 化をしている。 -Interface は Data Gear に対しての操作を行う Code Gear であり、実装は別で定義する。 -Interface で定義した Code Gear に - diff -r 73697739a74d -r 4dd10e3e45d2 paper/Paging.tex --- a/paper/Paging.tex Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/Paging.tex Wed Jan 29 19:44:21 2020 +0900 @@ -1,9 +1,27 @@ -\chapter{Gears OS での Paging} +\chapter{CbCXv6 での Paging の書き換え} + +\section{Xv6 を元にした Gears OS の実装} +Gears OS ではハードウェア上でメタレベルの計算や並列実行を行いたいので、Raspberry Pi でもバイナリを>出力できる Xv6 を CbC で書き換える。 +ANSI-C で書かれている Xv6 を CbC に書き直し、それを元に Gears OS を実装していく。 + +\section{Xv6 のインターフェース化} +構造図書く(今のcbcxv6と同じか確認してから) +\par + + Gears OS では Meta Code Gear で Context から値を取り出し、ノーマルレベルの Code Gear に値を渡す。 +しかし、メタレベルからノーマルレベルの継続の記述が煩雑になるため、Interface 化をしている。 +Interface は Data Gear に対しての操作を行う Code Gear であり、実装は別で定義する。 +% Interface で定義した Code Gear に + + +% Xv6 の書き換えは Interface を用いてモジュール化する。 +そうすることで Gears OS の機能を置き換えることできるようになる。 + \section{Paging} メモリ管理の手法に、Paging がある。Paging ではメモリを Page と呼ばれる固定長の単位に分割し、メモリとスワップ領域で Page を入れ替えて管理を行う。 -\section{Gears OS での Paging} +\section{User Space で Paging をする利点} Context に必要な Page Tbale を提供する Interface と User Space からアクセスする API が必要である。 Page Table に相当するデータを Input Data Gear で受け取って変更した後、Context にあるメモリコントロールを担当する Meta Data Gear に goto で遷移してアクセスする。 Meta Computation レベルで処理することで Use Spaceでも Page Table を操作することができる。 Meta Computation に戻る際に、Page Table Entry のバリデーションをチェックして反映することで、他のプロセスから Page Table を書き換えられることを防ぐ。また、サンドボックスにしておいて、他のプロセスが書き換えられた時にエクセプションを飛ばすようにすることで信頼性の保証を行う。 diff -r 73697739a74d -r 4dd10e3e45d2 paper/Xv6.tex --- a/paper/Xv6.tex Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/Xv6.tex Wed Jan 29 19:44:21 2020 +0900 @@ -1,27 +1,15 @@ -\chapter{Xv6 から Gears OS への書き換え} - -\section{Xv6 について} +\chapter{Xv6} Xv6 とは、マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 という OS を ANSI-C(規格化されたC言語) に書き換え、x86 に移植した Xv6 OS である。 Xv6 は Arm のバイナリを出力するので、シングルボードコンピュータである Raspberry Pi や携帯電話など様々なハードウェアで動かすことができる。 -\section{Xv6 を元にした Gears OS の実装} -Gears OS ではハードウェア上でメタレベルの計算や並列実行を行いたいので、Raspberry Pi でもバイナリを出力できる Xv6 を CbC で書き換える。 -ANSI-C で書かれている Xv6 を CbC に書き直し、それを元に Gears OS を実装していく。 - -\section{Xv6 のインターフェース化} -構造図書く(今のcbcxv6と同じか確認してから) -\par - Xv6 の書き換えは Interface を用いてモジュール化する。そうすることで Gears OS の機能を置き換えることできるようになる。 - - -\par - +\section{Kernel Space と User Space} Xv6 は Kernel を採用している。 Kernel は OS にとって中核となるプログラムである。 Xv6 では Kernel と User プログラムは分離されており、kernel はプログラムにプロセス管理、メモリ管理、I/O やファイルの管理などのサービスを提供する。 User プログラムは kernel に直接アクセスできない。これは重要なファイルを書き換えられたり、アクセスされるのを防ぐためだと考えられる。 User プログラムが Kernel のサービスを呼び出す場合、system call を用いて User Space から Kernel Space Space へ入り実行される。Kernel は CPU のハードウェア保護機構を使用して、 User Space で実行されているプロセスが自身のメモリのみアクセスできるように保護している。 User プログラムが system call をすると、ハードウェアが一時的に特権レベルを上げ、kernel のプログラムが実行される。この特権レベルを持つプロセッサの状態を kernel モード、特権のない状態を User モードと言う。 + \section{system call} User プログラムが Kernel の処理を行う場合、system call を用いる。 User プログラムが system call を呼び出すと、トラップが発生する。 diff -r 73697739a74d -r 4dd10e3e45d2 paper/master_paper.aux --- a/paper/master_paper.aux Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/master_paper.aux Wed Jan 29 19:44:21 2020 +0900 @@ -2,7 +2,7 @@ \@writefile{toc}{\contentsline {chapter}{\numberline {第1章}メモリ管理による信頼性の保証}{2}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {chapter}{\numberline {第2章}Geas OS}{3}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {第2章}CbC による Geas OS の開発}{3}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {2.1}Code Gear と Data Gear}{3}\protected@file@percent } @@ -12,22 +12,21 @@ \@writefile{toc}{\contentsline {section}{\numberline {2.3}Context}{4}\protected@file@percent } \newlabel{contexth、 caption}{{2.3}{4}} \@writefile{lol}{\contentsline {lstlisting}{./src/context.h}{4}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {2.4}Interface}{6}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces ノーマルレベルとメタレベルの継続の見え方}}{7}\protected@file@percent } \newlabel{fig:meta_cg_dg}{{2.2}{7}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第3章}Xv6 から Gears OS への書き換え}{8}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {第3章}Xv6}{8}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {3.1}Xv6 について}{8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {3.2}Xv6 を元にした Gears OS の実装}{8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {3.3}Xv6 のインターフェース化}{8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {3.4}system call}{9}\protected@file@percent } -\newlabel{syscall_list}{{3.1}{9}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}\footnotesize xv6 のシステムコールのリスト}{9}\protected@file@percent } -\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}Gears OS での Paging}{10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Kernel Space と User Space}{8}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3.2}system call}{8}\protected@file@percent } +\newlabel{syscall_list}{{3.1}{8}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}\footnotesize xv6 のシステムコールのリスト}{8}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}CbCXv6 での Paging の書き換え}{10}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {4.1}Paging}{10}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4.2}Gears OS での Paging}{10}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4.3}Paging の書き換え}{10}\protected@file@percent } -\@writefile{toc}{\contentsline {chapter}{付録}{10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Xv6 を元にした Gears OS の実装}{10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Xv6 のインターフェース化}{10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Paging}{10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Gears OS での Paging}{10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Paging の書き換え}{11}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{付録}{11}\protected@file@percent } diff -r 73697739a74d -r 4dd10e3e45d2 paper/master_paper.log --- a/paper/master_paper.log Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/master_paper.log Wed Jan 29 19:44:21 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) 29 JAN 2020 18:21 +This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex 2020.1.16) 29 JAN 2020 19:13 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -356,13 +356,13 @@ ] 第 2 章(3ページ) LaTeX Font Info: Font shape `JT1/hmc/m/n' will be -(Font) scaled to size 16.62714pt on input line 6. +(Font) scaled to size 16.62714pt on input line 7. LaTeX Font Info: Font shape `JY1/hmc/m/n' will be -(Font) scaled to size 16.62714pt on input line 6. +(Font) scaled to size 16.62714pt on input line 7. LaTeX Font Info: Font shape `JT1/hmc/bx/n' will be -(Font) scaled to size 16.62714pt on input line 6. +(Font) scaled to size 16.62714pt on input line 7. LaTeX Font Info: Font shape `JY1/hmc/bx/n' will be -(Font) scaled to size 16.62714pt on input line 6. +(Font) scaled to size 16.62714pt on input line 7. File: ./fig/codegear.pdf Graphic file (type pdf) <./fig/codegear.pdf> [3 @@ -372,40 +372,43 @@ <./fig/meta_cg_dg.pdf> -LaTeX Warning: Float too large for page by 43.27322pt on input line 42. +LaTeX Warning: Float too large for page by 43.27322pt on input line 43. (./src/context.h LaTeX Font Info: Font shape `JT1/hmc/m/n' will be (Font) scaled to size 7.69775pt on input line 1. LaTeX Font Info: Font shape `JT1/hmc/m/n' will be -(Font) scaled to size 10.53629pt on input line 12. +(Font) scaled to size 10.53629pt on input line 9. LaTeX Font Info: Font shape `JY1/hmc/m/n' will be -(Font) scaled to size 10.53629pt on input line 12. +(Font) scaled to size 10.53629pt on input line 9. LaTeX Font Info: Font shape `JT1/hmc/bx/n' will be -(Font) scaled to size 10.53629pt on input line 12. +(Font) scaled to size 10.53629pt on input line 9. LaTeX Font Info: Font shape `JY1/hmc/bx/n' will be -(Font) scaled to size 10.53629pt on input line 12. +(Font) scaled to size 10.53629pt on input line 9. [4]) [5]) (./Xv6.tex [6] [7] 第 3 章(8ページ) [8 ]) (./Paging.tex [9] 第 4 章(10ページ) -) [10 +[10 -] (./master_paper.aux) +]) [11] (./master_paper.aux) LaTeX Font Warning: Size substitutions with differences (Font) up to 1.28pt have occurred. + +LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. + ) Here is how much of TeX's memory you used: 6304 strings out of 493985 89327 string characters out of 6166648 - 323120 words of memory out of 5000000 + 330120 words of memory out of 5000000 10626 multiletter control sequences out of 15000+600000 16577 words of font info for 84 fonts, out of 8000000 for 9000 107 hyphenation exceptions out of 8191 - 39i,11n,36p,411b,1817s stack positions out of 5000i,500n,10000p,200000b,80000s + 38i,11n,36p,411b,1817s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on master_paper.dvi (17 pages, 34624 bytes). +Output written on master_paper.dvi (18 pages, 34848 bytes). diff -r 73697739a74d -r 4dd10e3e45d2 paper/master_paper.lol --- a/paper/master_paper.lol Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/master_paper.lol Wed Jan 29 19:44:21 2020 +0900 @@ -1,2 +1,2 @@ \contentsline {lstlisting}{./src/context.h}{4}% -\contentsline {lstlisting}{\numberline {3.1}\footnotesize xv6 のシステムコールのリスト}{9}% +\contentsline {lstlisting}{\numberline {3.1}\footnotesize xv6 のシステムコールのリスト}{8}% diff -r 73697739a74d -r 4dd10e3e45d2 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed diff -r 73697739a74d -r 4dd10e3e45d2 paper/master_paper.synctex.gz Binary file paper/master_paper.synctex.gz has changed diff -r 73697739a74d -r 4dd10e3e45d2 paper/master_paper.toc --- a/paper/master_paper.toc Wed Jan 29 18:31:09 2020 +0900 +++ b/paper/master_paper.toc Wed Jan 29 19:44:21 2020 +0900 @@ -1,16 +1,15 @@ \contentsline {chapter}{\numberline {第1章}メモリ管理による信頼性の保証}{2}% -\contentsline {chapter}{\numberline {第2章}Geas OS}{3}% +\contentsline {chapter}{\numberline {第2章}CbC による Geas OS の開発}{3}% \contentsline {section}{\numberline {2.1}Code Gear と Data Gear}{3}% \contentsline {section}{\numberline {2.2}Meta Code Gear と Meta Data Gear}{4}% \contentsline {section}{\numberline {2.3}Context}{4}% -\contentsline {section}{\numberline {2.4}Interface}{6}% -\contentsline {chapter}{\numberline {第3章}Xv6 から Gears OS への書き換え}{8}% -\contentsline {section}{\numberline {3.1}Xv6 について}{8}% -\contentsline {section}{\numberline {3.2}Xv6 を元にした Gears OS の実装}{8}% -\contentsline {section}{\numberline {3.3}Xv6 のインターフェース化}{8}% -\contentsline {section}{\numberline {3.4}system call}{9}% -\contentsline {chapter}{\numberline {第4章}Gears OS での Paging}{10}% -\contentsline {section}{\numberline {4.1}Paging}{10}% -\contentsline {section}{\numberline {4.2}Gears OS での Paging}{10}% -\contentsline {section}{\numberline {4.3}Paging の書き換え}{10}% -\contentsline {chapter}{付録}{10}% +\contentsline {chapter}{\numberline {第3章}Xv6}{8}% +\contentsline {section}{\numberline {3.1}Kernel Space と User Space}{8}% +\contentsline {section}{\numberline {3.2}system call}{8}% +\contentsline {chapter}{\numberline {第4章}CbCXv6 での Paging の書き換え}{10}% +\contentsline {section}{\numberline {4.1}Xv6 を元にした Gears OS の実装}{10}% +\contentsline {section}{\numberline {4.2}Xv6 のインターフェース化}{10}% +\contentsline {section}{\numberline {4.3}Paging}{10}% +\contentsline {section}{\numberline {4.4}Gears OS での Paging}{10}% +\contentsline {section}{\numberline {4.5}Paging の書き換え}{11}% +\contentsline {chapter}{付録}{11}% diff -r 73697739a74d -r 4dd10e3e45d2 thsis_paging.mm --- a/thsis_paging.mm Wed Jan 29 18:31:09 2020 +0900 +++ b/thsis_paging.mm Wed Jan 29 19:44:21 2020 +0900 @@ -5,7 +5,7 @@ - + @@ -19,17 +19,19 @@ - - + + + - - + + +