# HG changeset patch # User matac42 # Date 1643100300 -32400 # Node ID 80c934004af43f94733b0c163f7503bb05f41ade # Parent 37f2e50bdcf1217707aafefd28f8390cba80d23f ... diff -r 37f2e50bdcf1 -r 80c934004af4 paper/text/chapter2.tex --- a/paper/text/chapter2.tex Tue Jan 25 14:38:22 2022 +0900 +++ b/paper/text/chapter2.tex Tue Jan 25 17:45:00 2022 +0900 @@ -188,10 +188,10 @@ \section{Treeによるdirectory構造} ディレクトリ構造は2つのRedBlackTreeで実装する. 1つ目はinode numberとfileのポインタのペアを持つ木である. -inode numberをkey,inodeをvalueとして持つためinode numberからinodeを検索するために用いる. +inode numberをkey,inodeをvalueとして持つためinode numberからinodeを検索するために用いる(以下,inode treeとする). 2つ目はfilenameとinode numberのペアを持つ木である. filenameをkey, inode numberをvalueとして持つため,filenameからinode numberを検索するために用いる. -これはinodeをfilenameで検索するためのindex treeであるといえる. +これはinodeをfilenameで検索するためのindex treeであるといえる(以下,index treeとする). 図\ref{fig:inode}はindex treeを用いたinodeの検索の流れを表す. まずindex treeからkeyが2のnodeをgetする. @@ -214,16 +214,31 @@ \subsection{mkdir} Unixにおいてmkdirは新しくdirectoryを作成するコマンドである. GearsDirectoryのmkdirはindex treeとinode treeにnodeをputすることでdirectoryを作成する. -ソースコード\ref{src:mkdir}はmkdirのCodeGearである. +ソースコード\ref{src:mkdir}はgearsDirectoryにおける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で +FileSystemTreeのputを2回行うため,mkdirは\emph{\_\_code mkdir}と\emph{\_\_code mkdir2}の2つのCodeGearで構成されている. +InputDataGearの\emph{name}はfilenameを表す. \lstinputlisting[caption=mkdirのCodeGear,label=src:mkdir]{src/mkdir.cbc} \subsection{ls} +Unixにおいてlsはファイルやディレクトリの一覧,メタ情報を表示するコマンドである. +GearsDirectoryのlsはindex treeに対し,getをすることでディレクトリのnameを取得する. +Unixのlsコマンドにおける\emph{\$ls filename}に等しい機能である. +ソースコード\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下のディレクトリやファイルを一覧で表示する. +一覧表示の機能はfilenameのリストをディレクトリに持たせることで実装可能であると思われる. \lstinputlisting[caption=lsのCodeGear,label=src:ls]{src/ls.cbc} \subsection{cd} +Unixにおいてcdはディレクトリを移動するコマンドである. +GearsDirectoryのcdはindex treeとinode treeに対しgetを行いcurrentDirectoryを書き換えることでcdを実装する. +機能としてはディレクトリが持つ子ディレクトリへの移動ができる. +ソースコード\ref{src:cd}はgearsDirectoryにおけるcdのCodeGearである. +まず1行目の\emph{\_\_code cd2Child}でindex treeに対しgetを行うため,index treeのgetへgotoしている. +次に,9行目の\emph{\_\_code cd2Child2} \lstinputlisting[caption=cdのCodeGear,label=src:cd]{src/cd.cbc} \section{非破壊的編集によるBackup} diff -r 37f2e50bdcf1 -r 80c934004af4 paper/thesis.pdf Binary file paper/thesis.pdf has changed