# HG changeset patch # User tobaru # Date 1582187068 -32400 # Node ID 0678e32fff26f9e72bffe875d114cdac43c323ae # Parent 51170476de392ddced81721c8994ee1ea16b084a xv.6 function diff -r 51170476de39 -r 0678e32fff26 paper/Paging.tex --- a/paper/Paging.tex Tue Feb 18 06:05:28 2020 +0900 +++ b/paper/Paging.tex Thu Feb 20 17:24:28 2020 +0900 @@ -10,7 +10,9 @@ \section{Paging} 実メモリをそのまま使うと様々な問題が生じる。 ユーザープログラム側で空いているメモリ番地を探す必要がでてきたり、メモリ間にデータとして扱うには小さな隙間ができるフラグメンテーションが起こる。 - メモリ管理の手法に、Paging がある。 +xv6 ではメモリ管理の手法の1つとして Paging を採用している。 + + Paging ではメモリを Page と呼ばれる固定長の単位に分割し、メモリとスワップ領域で Page を入れ替えて管理を行う。 Paging を扱うことでブロック単位で管理することによりフラグメンテーションが解消でき、MMUが実メモリを管理することによってプログラム側で空いているメモリを探す必要がなくなる。 @@ -28,6 +30,20 @@ % \label{fig:MemoryConstitution} % \end{figure} +\section{xv6 の Paging の主要関数} +xv6 の Paging は vm.c で行われる。vm.c で使われる主要関数の役割について説明する。 + + +\begin{description} + \item[init\_vmm] : 最初に外部ファイルの main.c から呼び出される関数。lock に使う側の id を入れ、誰も使ってなければ 0 を入れる。 + \item[kpt\_free] : カーネルのメモリを解放する。 + \item[kpt\_alloc] : メモリ割り当て。Page Table が NULL なら panic関数を呼び出す。 + \item[walkpgdir] : Page Table を探してアドレスを返す。loaduvm などの if文内で呼び出される。 + \item[loaduvm] : スワップ領域から呼び出され、カーネル内をループしながらユーザープロセスを待ち状態にする。 + \item[allocuvm] : 仮想メモリをユーザープロセスに割り当てる。 + \item[inituvm] : プロセス側である proc.c から呼び出され、Page ディレクトリを作成する。 +\end{description} + \section{CbCXv6 での Paging} Context に必要な Page Table を提供する Interface が必要である。 @@ -42,6 +58,6 @@ \section{Paging の書き換え} Xv6 では実メモリ(Physical memory) から仮想メモリ(Virtual memory)の変換を vm.c で行なっている。 vm.c を CbC で書き換えていく。 -次のチャプターで実際の書き換えについて説明する。 +次の章で実際の書き換えについて説明する。 diff -r 51170476de39 -r 0678e32fff26 paper/Xv6.tex --- a/paper/Xv6.tex Tue Feb 18 06:05:28 2020 +0900 +++ b/paper/Xv6.tex Thu Feb 20 17:24:28 2020 +0900 @@ -48,5 +48,7 @@ \section{Xv6-rpi} Xv6 は Arm のバイナリを出力するので、シングルボードコンピュータである Raspberry Pi や携帯電話など様々なハードウェアで動かすことができる。 -実際に Raspberry Pi 上で動かすために xv6-rpi という OS を用意して動作しているか検証中である。 +実際に Raspberry Pi 上で動かすために xv6-rpi\cite{xv6rpi} という OS を用意して動作しているか検証中である。 xv6-rpi は CbCXv6 と別で用意している。 + + diff -r 51170476de39 -r 0678e32fff26 paper/abstract.tex --- a/paper/abstract.tex Tue Feb 18 06:05:28 2020 +0900 +++ b/paper/abstract.tex Thu Feb 20 17:24:28 2020 +0900 @@ -6,7 +6,7 @@ CbC の軽量継続によりOSの動作を 状態遷移を基本としたモデルに落とし込むことができる。 これにより状態遷移機械の検証手法をOSに対して適用し信頼性を高めることができるようになると考えられる。 -本研究では小型のOSであるx.v6 をCbCで書き換えること +本研究では小型のOSであるxv6 をCbCで書き換えること の一部を行う。具体的にはOSのメモリ管理を担当するvm.cをCbCに変換する。 CbCではインターフェースを用いたモジュール化を行う。 diff -r 51170476de39 -r 0678e32fff26 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed diff -r 51170476de39 -r 0678e32fff26 paper/master_paper.synctex.gz Binary file paper/master_paper.synctex.gz has changed