Mercurial > hg > Papers > 2019 > tobaru-sigos
changeset 16:3c086874fe94
Chapter : Paging of GearsOS
author | tobaru |
---|---|
date | Thu, 09 May 2019 22:10:25 +0900 |
parents | f4aee7339546 |
children | e758335d4729 |
files | paper/sigos.pdf paper/sigos.tex |
diffstat | 2 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/sigos.tex Thu May 09 21:26:30 2019 +0900 +++ b/paper/sigos.tex Thu May 09 22:10:25 2019 +0900 @@ -46,7 +46,6 @@ 本研究室ではメタレベルの処理を記述できる CbC と CbC を用いて実装する GearsOS の開発を行っている。 CbC を用いることでメモリ管理などの資源管理を行えるようになるが, 現在の GearsOS でのメモリ管理では単に Page Table Entry をコピーする Fork で実装している。さらに, 資源管理を行える CbC で軽量なハードウェアでも動かせるように Arm のバイナリを出力する Xv6 という OS を CbC で書き直して GearsOS を開発する手法も行なっている。本論文ではXv6 を参考に GearsOS にメモリ管理を行う API を考察する。 - \end{abstract} \begin{eabstract} @@ -119,6 +118,10 @@ \label{fig:metacodegear} \end{figure} +\subsection{Meta Competition} +Gears OS では通常の処理を Computation, Computation のための Computation を Meta Computation として扱う。 +Meta Computation の例として, 並列処理の依存関係の解決や, OS が行うネットワーク管理, メモリ管理などの資源制御が挙げられる。GearsOS では Meta Computation を Meta Code Gear, Meta Data Gear で表現する。 +Meta Code Gear は通常の Code Gear 直後に遷移され, Meta Computation を実行する。 %3 \section{Paging と Segmentation} @@ -127,8 +130,18 @@ \section{GearsOS での Paging} +Context に必要な Page Table を提供する Interface と User Space からアクセスする API が必要である。 +Page Table に相当するデータを Input Data Gear で受け取って変更した後, Context にあるメモリコントロールを担当する Meta Data Gear に goto してアクセスする。Meta Computation レベルで 処理する事で User プログラムでも Page Table を操作することができる。 +Meta Computation に戻る際に, Page Table Entry のバリデーションをチェックして反映することで, 他のプロセスから Page Table を書き換えられることを防ぐ。また, サンドボックスにしておいて, 他のプロセスが書き換えられた時にエクセプションを飛ばすようにする。 + +\subsection{Segmentation の切り替え} +Code Gear を切り替えるたびに Segmentation を切り替えると処理が遅くなる。Context は Thread ごとにあり, Code Gear Data Gear は自由に入れ替えることができる。しかし, Code Gear と Data Gear は煩雑に切り替わるので, Context に沿ってアクセスできる範囲を制限する必要がある。Context と Segmentation を組み合わせることで, Gears OS のPaging を実装する。 + + \section{User Space で Page Table を操作する利点} + + \section{Xv6 からの書き換え} \subsection{Xv6} Xv6 とは, マサチューセッツ工科大の大学院生向け講義の教材として使うために, UNIX V6 とい う OS を ANSI-C に書き換え, x86 に移植した Xv6 OS である。Xv6 は Arm のバイナリを出力するので, Raspberry Pi や 携帯など様々なハードウェアで動かすことができる。 @@ -137,10 +150,6 @@ Gears OS はメモリ管理やCPUの管理を User Space から操作できることを目標に実装しているので, メモリに限りのあるハードウェアで動くように実装できる方が好ましい。ANSI-C で書かれている Xv6 を CbC に書き直し, それを元に Gears OS を実装していく。 Xv6 の新しい要素として Gears OS の Context の部分を User Space 側で実行する。 -\subsection{メモリコントロール} -Context に必要な Page Table を提供する Interface と User Space からアクセスする API が必要である。 -Page Table に相当するデータを Input Data Gear で受け取って変更した後, Context にあるメモリコントロールを担当する Meta Data Gear に goto してアクセスする。 -その際に, Page Table Entry のバリデーションをチェックして反映することで, 他のプロセスから Page Table を書き換えられることを防ぐ。 %4.1