Mercurial > hg > Papers > 2022 > matac-thesis
changeset 7:124583e0b372
...
author | matac42 <matac@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 20 Jan 2022 15:02:59 +0900 |
parents | 3c9b5f9cff85 |
children | c59b95705898 |
files | paper/src/cd.cbc paper/src/ls.cbc paper/src/mkdir.cbc paper/text/chapter2.tex paper/thesis.pdf |
diffstat | 3 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/mkdir.cbc Thu Jan 20 15:02:59 2022 +0900 @@ -0,0 +1,21 @@ +__code mkdir(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) { + struct FTree* newDirectory = createFileSystemTree(context, gearsDirectory->currentDirectory); + Node* inode = new Node(); + inode->key = gearsDirectory->INodeNumber; + inode->value = newDirectory; + struct FTree* cDirectory = new FTree(); + cDirectory = gearsDirectory->iNodeTree; + goto cDirectory->put(inode, mkdir2); +} + +__code mkdir2(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) { + Node* dir = new Node(); + dir->key = name->value; + Integer* iNum = new Integer(); + iNum->value = gearsDirectory->INodeNumber; + dir->value = iNum; + gearsDirectory->INodeNumber = gearsDirectory->INodeNumber + 1; + struct FTree* cDirectory = new FTree(); + cDirectory = gearsDirectory->currentDirectory; + goto cDirectory->put(dir, next(...)); +} \ No newline at end of file
--- a/paper/text/chapter2.tex Thu Jan 20 13:46:45 2022 +0900 +++ b/paper/text/chapter2.tex Thu Jan 20 15:02:59 2022 +0900 @@ -129,16 +129,40 @@ \end{table} \chapter{GearsFileSystemのdirectory} +実装はFileとしてDataGearManagerをRedBlackTreeに格納する形で行う. +また,Unixのinodeの仕組みをディレクトリシステムとして取り入れる. + \section{Treeによるdirectory構造} +ディレクトリ構造は2つのRedBlackTreeで実装する. +1つ目はinode numberとfileのポインタのペアを持つ木である. +inode numberをkey,file pointerをvalueとして持つためinode numberからfile pointerを検索するために用いる. +2つ目はfilenameとinode numberのペアを持つ木である. +filenameをkey, inode numberをvalueとして持つため,filenameからinode numberを検索するために用いる. + \section{Unix Like な interface} +ファイルやディレクトリの操作を行うinterfaceをUnix Likeに実装を行った. +実装を行ったmkdir, ls, cdを説明する. + \subsection{mkdir} +ソースコード\ref{src:mkdir}はmkdirのCodeGearである. +\lstinputlisting[caption=mkdirのCodeGear,label=src:mkdir]{src/mkdir.cbc} + \subsection{ls} +\lstinputlisting[caption=lsのCodeGear,label=src:ls]{src/ls.cbc} + \subsection{cd} +\lstinputlisting[caption=cdのCodeGear,label=src:cd]{src/cd.cbc} + \section{inodeを用いたdirectory entry} \section{非破壊的編集によるBackup} \chapter{File構造} +ファイルシステムはディレクトリ構造の他にファイル構造を持つ. +GearsOSにおけるファイル構造を説明する. + \section{I/O Stream} + + \section{logによるバージョン管理} \chapter{WordCount}