# HG changeset patch # User matac42 # Date 1643089102 -32400 # Node ID 37f2e50bdcf1217707aafefd28f8390cba80d23f # Parent 7027403d8e90c24e84f27b91faa0008a32aedeec ... diff -r 7027403d8e90 -r 37f2e50bdcf1 paper/text/chapter2.tex --- a/paper/text/chapter2.tex Tue Jan 25 13:03:30 2022 +0900 +++ b/paper/text/chapter2.tex Tue Jan 25 14:38:22 2022 +0900 @@ -174,9 +174,10 @@ GearsOSへUnixのFile systemの仕組みを取り入れるアプローチをとる. ファイルシステムを大まかにディレクトリシステムとファイルの二つに分けて考える. ディレクトリシステムはUnixのinodeの仕組みを取り入れる. +今回作成した,GearsOSのディレクトリシステムであるgearsDirectoryについて説明する. \section{FileSystemTree} -FileSystemTreeは今回directory構造,inodeの仕組みを取り入れる際に用いるTreeである. +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を持つ. @@ -191,7 +192,13 @@ 2つ目はfilenameとinode numberのペアを持つ木である. filenameをkey, inode numberをvalueとして持つため,filenameからinode numberを検索するために用いる. これはinodeをfilenameで検索するためのindex treeであるといえる. + 図\ref{fig:inode}はindex treeを用いたinodeの検索の流れを表す. +まずindex treeからkeyが2のnodeをgetする. +keyが2のnodeのvalueよりinode numberが0であることがわかる. +次に取得したinode numberをkeyとしてinode treeを検索する. +keyが0のnodeはinode0を持っていて,inodeを参照することができる. + \begin{figure}[h] \begin{center} \includegraphics[width=120mm]{figs/inode.png} @@ -205,7 +212,12 @@ 実装を行ったmkdir, ls, cdを説明する. \subsection{mkdir} +Unixにおいてmkdirは新しくdirectoryを作成するコマンドである. +GearsDirectoryのmkdirはindex treeとinode treeにnodeをputすることでdirectoryを作成する. ソースコード\ref{src:mkdir}はmkdirのCodeGearである. +まず1行目の\emph{\_\_code mkdir}ではinode treeへinodeのputが行われ,\emph{\_\_code mkdir2}へ遷移する. +次に,11行目の\emph{\_\_code mkdir2}ではindex treeへkeyがfilenameのnodeのputが行われ,nextのCodeGearへ遷移する. +FileSystemTreeのputを2回行うため,mkdirは\emph{\_\_code mkdir}と\emph{\_\_code mkdir2}の2つのCodeGearで \lstinputlisting[caption=mkdirのCodeGear,label=src:mkdir]{src/mkdir.cbc} \subsection{ls} diff -r 7027403d8e90 -r 37f2e50bdcf1 paper/thesis.pdf Binary file paper/thesis.pdf has changed