5
|
1 \chapter{xv6}
|
11
|
2 \section{xv6 の概要}
|
6
|
3 xv6 \cite{xv6} とは MIT のオペレーティングコースの教育目的で2006年に開発されたオペレーティングシステムである. xv6 はオリジナルである v6 が非常に古い C 言語で書かれてい る為, ANSI-C に書き換えられ x86 に再実装された. xv6 は read や write などの systemcall, プロセス, 仮想メモリ, カーネルとユーザーの分離, 割り込み, ファイルシステムなど Unix の基本的な構造を持っている.
|
9
|
4 本研究で使われているのは ARM\cite{arm} 上で動作する Raspberry Pi 用に改良されたxv6を使用する.
|
|
5
|
|
6
|
|
7 %\section{FileSystem}
|
|
8 %どんなものか書く
|
|
9
|
|
10 %processについて(軽く)
|
6
|
11 \section{xv6 のFileSystem構造}
|
11
|
12 xv6 の FileSystem は図\ref{fig:xv6filesystem} のように7つの階層によって構成されている.
|
10
|
13 \begin{figure}[ht]
|
|
14 \begin{center}
|
|
15 \includegraphics[width=50mm]{fig/FileSystemLayout.pdf}
|
|
16 \end{center}
|
11
|
17 \caption{xv6 の FileSystem 構造}
|
10
|
18 \label{fig:xv6filesystem}
|
|
19 \end{figure}
|
|
20
|
11
|
21 \begin{itemize}
|
|
22 \item File descriptor 階層
|
|
23 Unixの資源はファイルとして表現され,コンソールのようなデバイスはもちろん,実際のファイルもファイルとして表現されている.
|
|
24 File descriptor 階層はこの
|
|
25
|
|
26 \item Pathname 階層
|
|
27 \item Directory 階層
|
|
28 \item Inode 階層
|
|
29 \item Logging 階層
|
|
30 \item Bffer cache 階層
|
|
31 \item Disk 階層
|
|
32 \end{itemize}
|
|
33
|
10
|
34 \newpage
|
11
|
35 xv6 の FileSystem の Disk の割り当てを以下の図\ref{fig:filesystem}に示す.
|
6
|
36
|
|
37 \begin{figure}[ht]
|
|
38 \begin{center}
|
8
|
39 \includegraphics[width=150mm]{fig/xv6filesystemlayout.pdf}
|
6
|
40 \end{center}
|
11
|
41 \caption{xv6 の FileSystem に関する Disk の割り当て}
|
6
|
42 \label{fig:filesystem}
|
|
43 \end{figure}
|
5
|
44
|
9
|
45 \begin{itemize}
|
|
46 \item boot sector
|
11
|
47 \\boot sectorを保持しているだけで FileSystem はこのブロックを使用することはない.
|
|
48
|
9
|
49 \item super block
|
11
|
50 \\ブロックのファイルサイズやデータブロックの数, inodeの数, log 中のブロック数などが格納されている.
|
|
51
|
|
52 \item inodes
|
|
53 \\inodeが格納されている.
|
|
54
|
10
|
55 \item block bitmap
|
11
|
56 \\block bitmap は使用しているブロックが記憶されている.
|
|
57
|
10
|
58 \item data blocks
|
11
|
59 \\block bitmap において使用可能であることが記録されており,ファイルやディレクトリが保持されている.
|
|
60
|
10
|
61 \item log
|
11
|
62 \\Logging 階層の log が格納されている.
|
|
63
|
9
|
64 \end{itemize}
|
8
|
65
|
9
|
66 \section{FilleSystem の API} %関数や構造体などを解説しそのまま利用されているところをかく
|
|
67
|
11
|
68 \begin{itemize}
|
|
69 \item
|
|
70 \item
|
|
71 \item
|
|
72 \item
|
|
73 \item
|
|
74 \item
|
|
75 \item
|
|
76 \end{itemize}
|