Mercurial > hg > Papers > 2022 > matac-thesis
changeset 21:14faefbdd1b5
...
author | matac42 <matac@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 26 Jan 2022 23:58:28 +0900 |
parents | 737734bb3877 |
children | 078181f08214 |
files | paper/text/chapter2.tex paper/thesis.pdf paper/thesis.tex |
diffstat | 3 files changed, 29 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/text/chapter2.tex Wed Jan 26 18:53:42 2022 +0900 +++ b/paper/text/chapter2.tex Wed Jan 26 23:58:28 2022 +0900 @@ -15,7 +15,7 @@ \begin{center} \includegraphics[width=120mm]{figs/dgcgdg.png} \end{center} - \caption{非破壊的なTree編集} + \caption{CodeGearとDataGearの関係} \label{fig:dgcg} \end{figure} @@ -87,7 +87,7 @@ CPUやGPUごとに存在するCPU Contextがある. \begin{figure}[h] \begin{center} - \includegraphics[width=100mm]{figs/context.png} + \includegraphics[width=130mm]{figs/context.png} \end{center} \caption{Contextを参照する流れ} \label{fig:context} @@ -175,18 +175,19 @@ ファイルシステムを大まかにディレクトリシステムとファイルの二つに分けて考える. ディレクトリシステムはUnixのinodeの仕組みを取り入れる. 今回作成した,GearsOSのディレクトリシステムであるgearsDirectoryについて説明する. +ファイルについては次章で述べる. \section{FileSystemTree} FileSystemTreeはdirectory構造,inodeの仕組みを取り入れる際に用いるTreeである. ソースコード\ref{src:ftree}はFileSystemTreeのinterfaceである. gearsOSにおけるinterfaceはCodeGearと各CodeGearが用いるI/O DataGearの集合を記述する. FileSystemTreeのinterfaceはfTreeとnodeのDataGearとput,get,remove,nextのCodeGearを持つ. -FileSystemTreeの実体はRedBlackTreeであり,put,get,removeはRedBlackTreeの操作を行うためのCodeGearである. +FileSystemTreeの実体はgearsOSの永続データを構築する際に使用されるRedBlackTreeであり,put,get,removeはRedBlackTreeの操作を行うためのCodeGearである. nextは遷移先のCodeGearを参照するために用いる. \lstinputlisting[caption=FTreeのinterface,label=src:ftree]{src/FTree.h} \section{Treeによるdirectory構造} -ディレクトリ構造は2つのRedBlackTreeで実装する. +ディレクトリ構造は2つのFileSystemTreeで実装する. 1つ目はinode numberとfileのポインタのペアを持つ木である. inode numberをkey,inodeをvalueとして持つためinode numberからinodeを検索するために用いる(以下,inode treeとする). 2つ目はfilenameとinode numberのペアを持つ木である. @@ -228,20 +229,32 @@ ソースコード\ref{src:ls}はgearsDirectoryにおけるlsのCodeGearである. まず1行目の\emph{\_\_code ls}ではindex treeに対しgetを行うため,index treeのgetへgotoしている. その後,9行目の\emph{\_\_code ls2}ではnode\verb|->|keyに格納されたgetの結果をprintfで出力する. -本来lsコマンドは引数を渡さずに実行するとcurrent directory下のディレクトリやファイルを一覧で表示する. +本来lsコマンドは引数を渡さずに実行するとcurrent directory下のディレクトリやファイルを一覧で表示するが, +現時点では未実装である. 一覧表示の機能はfilenameのリストをディレクトリに持たせることで実装可能であると思われる. \lstinputlisting[caption=lsのCodeGear,label=src:ls]{src/ls.cbc} \subsection{cd} Unixにおいてcdはディレクトリを移動するコマンドである. -GearsDirectoryのcdはindex treeとinode treeに対しgetを行いcurrentDirectoryを書き換えることでcdを実装する. +GearsDirectoryのcdはindex treeとinode treeに対しgetを行い,currentDirectoryを書き換えることで実装する. 機能としてはディレクトリが持つ子ディレクトリへの移動ができる. ソースコード\ref{src:cd}はgearsDirectoryにおけるcdのCodeGearである. まず1行目の\emph{\_\_code cd2Child}でindex treeに対しgetを行うため,index treeのgetへgotoしている. -次に,9行目の\emph{\_\_code cd2Child2} +次に,9行目の\emph{\_\_code cd2Child2}でinode treeに対しgetを行うため,inode treeのgetへgotoしている. +その後,15行目の\emph{\_\_code cd2Child3}でcurrent directoryを保存しているgearsDirectory\verb|->|currentDirectoryを +getしたnode\verb|->|valueに書き換える. \lstinputlisting[caption=cdのCodeGear,label=src:cd]{src/cd.cbc} \section{非破壊的編集によるBackup} +GearsOSにおける永続データは非破壊的な編集を行う木構造を用いて保存される. +図\ref{fig:TreeEdit}は非破壊的編集を木構造に対し行う様子である. +赤で示されたノード6をAに編集する場合,まずルートノードから編集ノードまでのパスを全てコピーする. +コピーしたパス上に存在しないノードは,コピー元の木構造と共有する. +それにより,編集後の木構造の赤のルートノードから探索を行う場合は編集されたAのノードが見え, +黒のルートノードから探索を行う場合は編集前の6のノードを見ることができる. +ファイルシステムを非破壊的な木構造の編集を用いて実装することにより, +標準でバックアップの機能を搭載することを目指している. + \begin{figure}[h] \begin{center} \includegraphics[width=120mm]{figs/nonDestroyTreeEdit.pdf} @@ -252,6 +265,7 @@ \chapter{File構造} ファイルシステムはディレクトリ構造の他にファイル構造を持つ. +ファイル構造に関して GearsOSにおけるファイル構造を説明する. \section{I/O Stream}
--- a/paper/thesis.tex Wed Jan 26 18:53:42 2022 +0900 +++ b/paper/thesis.tex Wed Jan 26 23:58:28 2022 +0900 @@ -71,6 +71,14 @@ \chapter*{謝辞} +本研究を行うにあたりご多忙にも関わらず日頃より多くのご助言、ご指導をいただきました河野真治准教授に心より感謝いたします。 +研究を行うにあたり、研究に対する意見、実装、実験に協力いただいた並列信頼研究室の皆さまに感謝いたします。 +最後に、長年に渡り理解を示し、支援してくださった家族に感謝いたします。 + +\begin{flushright} +2021年 2月 \\又吉 雄斗 +\end{flushright} + % reference \bibliography{thesis} \bibliographystyle{junsrt}