view paper/Paging.tex @ 18:afc36230cf4f

slide chapter3,4
author tobaru
date Fri, 07 Feb 2020 20:06:13 +0900
parents 1ef114182e80
children ee9435951c31
line wrap: on
line source

\chapter{CbCXv6 での Paging} 
 OS の信頼性の基本である メモリ管理 の書き換えについて説明する。


\section{Xv6 を元にした Gears OS の実装}
Gears OS ではハードウェア上でメタレベルの計算や並列実行を行いたいので、
Raspberry Pi でもバイナリを出力できる Xv6 を CbC で書き換える。
ANSI-C で書かれている Xv6 を CbC に書き直し、それを元に Gears OS を実装していく。

\section{Paging}
実メモリをそのまま使うと様々な問題が生じる。
ユーザープログラム側で空いているメモリ番地を探す必要がでてきたり、メモリ間にデータとして扱うには小さな隙間ができるフラグメンテーションが起こる。
  メモリ管理の手法に、Paging がある。
Paging ではメモリを Page と呼ばれる固定長の単位に分割し、メモリとスワップ領域で Page を入れ替えて管理を行う。
Paging を扱うことでブロック単位で管理することによりフラグメンテーションが解消でき、MMUが実メモリを管理することによってプログラム側で空いているメモリを探す必要がなくなる。


図 \ref{fig:MemoryConstitution} で Xv6の仮想メモリと実メモリについて説明する。
図のRWX は読み込み、書き込み、実行の権限を表している。


 \begin{figure}[ht]
 \begin{center}
  \includegraphics[width=160mm]{./fig/MemoryConstitution}
 \end{center}
 \caption{On the left, xv6’s kernel address space. RWX refer to PTE read, write, and execute
permissions. On the right, the RISC-V physical address space that xv6 expects to see. Russ Cox(2014) xv6 a simple, Unix-like teaching operating system (Frans Kaashoek, Robert Morris)} 
 \label{fig:MemoryConstitution}
\end{figure}


\section{CbCXv6 での Paging}
 Context に必要な Page Table を提供する Interface が必要である。
% と User Space からアクセスする API が必要である。
Page Table に相当するデータを Input Data Gear で受け取って変更した後、Context にあるメモリコントロールを担当する Meta Data Gear に goto で遷移してアクセスする。 
% Meta Computation レベルで処理することで Use Spaceでも Page Table を操作することができる。
メタレベルで処理することで カーネル側の処理である Page Table を操作することができる。
% Meta Computation に戻る際に、
Page Table Entry のバリデーションをチェックして反映することで、他のプロセスから Page Table を書き換えられることを防ぐ。また、サンドボックスにしておいて、他のプロセスが書き換えられた時にエクセプションを飛ばすようにすることで信頼性の保証を行う。


\section{Paging の書き換え}
 Xv6 では実メモリ(Physical memory) から仮想メモリ(Virtual memory)の変換を vm.c で行なっている。
vm.c を CbC で書き換えていく。
次のチャプターで実際の書き換えについて説明する。