Mercurial > hg > Papers > 2020 > anatofuz-sigos
changeset 12:60693eee5ee3
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 30 Apr 2020 19:19:08 +0900 |
parents | 1e8d8d32fe30 |
children | cce07a6da420 |
files | paper/anatofuz-sigos.md paper/anatofuz-sigos.pdf paper/anatofuz-sigos.tex |
diffstat | 3 files changed, 31 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/anatofuz-sigos.md Thu Apr 30 14:39:17 2020 +0900 +++ b/paper/anatofuz-sigos.md Thu Apr 30 19:19:08 2020 +0900 @@ -19,10 +19,21 @@ 実装用の言語と証明用の言語の両方に適した言語としてContinuation Based C(CbC)がある。 CbCはCと互換性のあるCの下位言語であり、 状態遷移をベースとした記述に適したプログラミング言語である。 Cとの互換性のために、 CbCのプログラムをコンパイルすることで動作可能なバイナリに変換が可能である。 -すなわちCbCを用いて状態遷移を基本とした単位でプログラミングをすると、 形式手法で証明が可能かつ実際に動作するコードをプログラミングできる。 +すなわちCbCを用いて状態遷移を基本とした単位でプログラミングをすると、 形式手法で証明が可能かつ実際に動作するコードを記述できる。 現在小さなunixであるxv6 kernelをCbCを用いて再実装している。 再実装の為には、 既存のxv6 kernelの処理の状態遷移を分析し、継続を用いたプログラムに変換していく必要がある。 本論文ではこの書き換えに伴って得られたxv6 kernelの継続を分析し、 現在のCbCによる書き換えについて述べる。 +# xv6 kernel +xv6とはマサチューセッツ工科大学でv6 OSを元に開発された教育用のUNIX OSである。 +xv6はANSI Cで実装されており、 x86アーキテクチャ上で動作する。 +Raspberry Pi上での動作を目的としたARMアーキテクチャのバージョンも存在する。 +本論文では最終的にRaspberry Pi上での動作を目指しているために、 ARMアーキテクチャ上で動作するxv6を扱う。 + +xv6は小規模なOSだがファイルシステム、 プロセス、システムコールなどのUNIXの基本的な機能を持つ。 +またユーザー空間とカーネル空間が分離されており、 シェルやlsなどのユーザーコマンドも存在する。 + +本論文ではxv6のファイルシステム関連の内部処理と、システムコール実行時に実行される処理について分析を行う。 +xv6 kernelのファイルシステムは階層構造で表現されており、 最も低レベルなものにディスク階層、 抽象度が最も高いレベルのものにファイルディスクリプタがある。
--- a/paper/anatofuz-sigos.tex Thu Apr 30 14:39:17 2020 +0900 +++ b/paper/anatofuz-sigos.tex Thu Apr 30 19:19:08 2020 +0900 @@ -69,9 +69,26 @@ 実装のソースコードと検証用のソースコードは近いセマンティクスでプログラミングする必要がある。 実装用の言語と証明用の言語の両方に適した言語としてContinuation Based C(CbC)がある。 -現在小さなunixであるxv6 kernelを状態遷移を基本とした単位でのプログラミングに適した言語、 Continuation Based Cを用いて再実装している。 -再実装の為には、 既存のxv6 kernelの処理の状態遷移を、継続を用いたプログラムに変換していく必要がある。 +CbCはCと互換性のあるCの下位言語であり、 状態遷移をベースとした記述に適したプログラミング言語である。 +Cとの互換性のために、 CbCのプログラムをコンパイルすることで動作可能なバイナリに変換が可能である。 +すなわちCbCを用いて状態遷移を基本とした単位でプログラミングをすると、 形式手法で証明が可能かつ実際に動作するコードを記述できる。 + +現在小さなunixであるxv6 kernelをCbCを用いて再実装している。 +再実装の為には、 既存のxv6 kernelの処理の状態遷移を分析し、継続を用いたプログラムに変換していく必要がある。 +本論文ではこの書き換えに伴って得られたxv6 kernelの継続を分析し、 現在のCbCによる書き換えについて述べる。 + +\section{xv6 kernel} +xv6とはマサチューセッツ工科大学でv6 OSを元に開発された教育用のUNIX OSである。 +xv6はANSI Cで実装されており、 x86アーキテクチャ上で動作する。 +Raspberry Pi上での動作を目的としたARMアーキテクチャのバージョンも存在する。 +本論文では最終的にRaspberry Pi上での動作を目指しているために、 ARMアーキテクチャ上で動作するxv6を扱う。 + +xv6は小規模なOSだがファイルシステム、 プロセス、システムコールなどのUNIXの基本的な機能を持つ。 +またユーザー空間とカーネル空間が分離されており、 シェルやlsなどのユーザーコマンドも存在する。 + +本論文ではxv6のファイルシステム関連の内部処理と、システムコール実行時に実行される処理について分析を行う。 +xv6 kernelのファイルシステムは階層構造で表現されており、 最も低レベルなものにディスク階層、 抽象度が最も高いレベルのものにファイルディスクリプタがある。 \nocite{*} \bibliographystyle{ipsjunsrt}