Mercurial > hg > Papers > 2020 > anatofuz-sigos
changeset 30:1a9af340ad4a
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 05 May 2020 11:50:58 +0900 |
parents | 5dbe39f52406 |
children | 29369644f3a9 |
files | paper/anatofuz-sigos.md paper/anatofuz-sigos.pdf paper/anatofuz-sigos.tex |
diffstat | 3 files changed, 32 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/anatofuz-sigos.md Tue May 05 11:12:41 2020 +0900 +++ b/paper/anatofuz-sigos.md Tue May 05 11:50:58 2020 +0900 @@ -129,7 +129,7 @@ xv6 kernelのファイルシステムは階層構造で表現されており、 最も低レベルなものにディスク階層、 抽象度が最も高いレベルのものにファイル記述子がある。 -# xv6の継続の分析 +# xv6のシステムコールの継続の分析 xv6の処理を継続を中心とした記述で再実装を行う。 この際に、 xv6のどの処理に着目するかによって継続の実装が異なっていくことが実装につれてわかった。 @@ -138,6 +138,21 @@ ![lab:fig:cbc_readsyscall, cap:readシステムコールの状態遷移](fig/readsyscall_state.pdf) +CbCで再実装した`read`システムコールは、 xv6の`read`システムコールのディスパッチ部分から、 `cbc_read`CodeGearに`goto`文で軽量継続される。 +継続後はreadする対象によって`cbc_readi`や、 `cbc_consoleread`などに状態が変化していく。 +この実装の利点として、 CodeGearの命名と状態が対応しており、 状態遷移図などに落としても自然言語で説明が可能となる点が挙げられる。 +しかし実際には`cbc_readi`の状態はさらに複数のCodeGearに分離しており、 実際に`read`システムコールを実装するCodeGearの数は図の状態より多い。 +この事から、 複数のCodeGearを1つにまとめた上で見た状態と、 各CodeGearそれぞれの状態の2種類の状態があるといえる。 + +信頼性を向上させる観点から見ると、 複数のCodeGearをまとめた状態は実装した関数を組み合せてアルゴリズムに問題が無いかの確認として使用出来る。 +対して各CodeGearそれぞれはモデル検査や、 特定の関数の中の処理が適しているかどうかの検査として見ることが出来ると考えられる。 +この事からGearsOSでは、 各CodeGearのモジュール化の仕組みであるInterface機能を導入した。 + + +# xv6のシステムコール以外の継続の分析 + + + # Basic Blockに基づく分析 xv6のファイルシステムに関する定義ファイルはfs.c中に記述されている。
--- a/paper/anatofuz-sigos.tex Tue May 05 11:12:41 2020 +0900 +++ b/paper/anatofuz-sigos.tex Tue May 05 11:50:58 2020 +0900 @@ -229,7 +229,7 @@ xv6 kernelのファイルシステムは階層構造で表現されており、 最も低レベルなものにディスク階層、 抽象度が最も高いレベルのものにファイル記述子がある。 -\section{xv6の継続の分析} +\section{xv6のシステムコールの継続の分析} xv6の処理を継続を中心とした記述で再実装を行う。 この際に、 xv6のどの処理に着目するかによって継続の実装が異なっていくことが実装につれてわかった。 @@ -244,6 +244,21 @@ \label{fig:cbc_readsyscall} \end{figure} +CbCで再実装した\texttt{read}システムコールは、 xv6の\texttt{read}システムコールのディスパッチ部分から、 \texttt{cbc\_read}CodeGearに\texttt{goto}文で軽量継続される。 +継続後はreadする対象によって\texttt{cbc\_readi}や、 \texttt{cbc\_consoleread}などに状態が変化していく。 +この実装の利点として、 CodeGearの命名と状態が対応しており、 状態遷移図などに落としても自然言語で説明が可能となる点が挙げられる。 +しかし実際には\texttt{cbc\_readi}の状態はさらに複数のCodeGearに分離しており、 実際に\texttt{read}システムコールを実装するCodeGearの数は図の状態より多い。 +この事から、 複数のCodeGearを1つにまとめた上で見た状態と、 各CodeGearそれぞれの状態の2種類の状態があるといえる。 + +信頼性を向上させる観点から見ると、 複数のCodeGearをまとめた状態は実装した関数を組み合せてアルゴリズムに問題が無いかの確認として使用出来る。 +対して各CodeGearそれぞれはモデル検査や、 特定の関数の中の処理が適しているかどうかの検査として見ることが出来ると考えられる。 +この事からGearsOSでは、 各CodeGearのモジュール化の仕組みであるInterface機能を導入した。 + + +\section{xv6のシステムコール以外の継続の分析} + + + \section{Basic Blockに基づく分析} xv6のファイルシステムに関する定義ファイルはfs.c中に記述されている。