Mercurial > hg > Papers > 2019 > anatofuz-thesis
view prepaper/finalpre.tex @ 13:cb746b5eac6e
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 07 Feb 2019 19:35:40 +0900 |
parents | bca5f3fa78f7 |
children | eea4271e6faa |
line wrap: on
line source
\documentclass[twocolumn,twoside,9.5pt]{jarticle} \usepackage[dvipdfmx]{graphicx} \usepackage{picins} \usepackage{fancyhdr} \usepackage{abstract} \usepackage{url} %\pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会} \rhead{} \cfoot{} \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} \setlength{\headheight}{0mm} \setlength{\headsep}{5mm} \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} \setlength{\textwidth}{181mm} \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} \pagestyle{empty} \input{dummy.tex} \renewcommand{\abstractname}{Abstract} \begin{document} \title{CbCによるPerl6処理系} %\title{Supporting NAT in Screen Sharing System TreeVNC} \author{135730B 氏名 {清水}{隆博} 指導教員 : 河野 真治} \date{} \twocolumn [ \maketitle \begin{onecolabstract} Current mainstream Perl6 is a project which is said to Rakudo. In Rakudo Perl6 itself written in a subset of Perl6 called NQP (NotQuitPerl). NQP is interpreted by VM. This VM is adapted any VM can be selected. Rakudo is slower in startup and evaluation than other scripting programming languages. We are developing Programing Language that name Continuation based C (CbC). CbC gives Code Gear and Data Gear as programing units. A transfer from a Code Gear to another Code Gear is implemented using a CbC's goto statement, which is compiled as a jump instruction in CbC. %CbC で OS を記述する。 %CbCはLLVMで実装されている。 %codeとcode のあいだをcall ではなくjmpで結ぶことができる(goto) %gotoをつかうことによりOSに必須なmeta計算を実現できる %メタ計算は例えばメモリ管理スレッド管理CPUやGPUの資源管理そしてData/Code Gear の管理などである %metaレベルではcode/data gear は一つの塊として操作される。これをcbcではunion dataとして実装している %code gear 間の接続はつぎのcode gearの番号とthread structure に相当するcontextをmeta code gear にgoto する %meta code gear で os の 機能であるメモリ管理やスレッド管理を行う。 %ユーザーレベルではmeta構造を直接見ることはなく、継続を用いた関数型プログラミングに見える %metaレベルから見たdata gearをゆーざーれべるのcode gearに接続するにはstub というmeta code gear を用いる %stubとmetaはユーザーレベルcodegear とdatagearから生成することができる %本論文ではstub とcontext 管理構造を生成するスクリプトを作成した %これによりcode gear とdeta gear をデータを操作するinterface というまとまりにすることができる。 %この仕組みの上に並列処理用のtaskmanagerを簡単なosとして構成することができた。 %こんごはgears os の様々な構成要素を作成していきたい。 %またメタ計算を用いて信頼性をあげる方法についても研究を進めていく。 %例えばユーザーレベルプログラムから定理証明支援系であるagdaのコードを生成することにより、プログラムの正しさを証明していくことが考えられる。 \end{onecolabstract}] \thispagestyle{fancy} \section{メタ計算の重要性} プログラムを記述する際、通常の処理の他に、メモリ管理、スレッドの待ち合わせやネットワークの管理、エラーハンドリング等、記述しなければならない処理が存在する。 これらの計算を Meta Computation と呼ぶ。 Meta Computation を通常の計算から切り離して記述するためには処理を細かく分割する必要がある。しかし、関数やクラスなどの単位は容易に分割できない。 そこで当研究室では Meta Computation を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。 Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在し、これらを用いて Meta Computation を実現する。 Continuation based C (CbC)\cite{kaito:2015} はこの Code Gear 単位を用いたプログラミング言語として開発している。 CbCは軽量継続による遷移を行うので、継続前の Code Gear に戻ることはなく、状態遷移ベースのプログラミングに適している。 また、当研究室で開発している Gears OS\cite{gears} は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。 本研究では CbC を用いての Gears OS の実装と CbC における ユーザーの関知しない Meta Computationの自動生成を行なう。 %\begin{figure}[htbp] % \begin{center} % \includegraphics[width=50mm]{./pic/treeVnc.pdf} % \end{center} % \caption{構成される木構造} % \label{fig:tree} %\end{figure} \section{Continuation based C (CbC)} CbC は 処理を Code Gear とした単位を用いて記述するプログラミング言語\cite{kaito:2015}である。 Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。 Code Gear から次の Code Gear へと goto による継続で遷移で処理を行い、引数として出力を与える。 図\ref{fig:cs}は Code Gear 間の処理の流れを表している。 \section{今後の課題} 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perlスクリプトの生成を行なった。 これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang\cite{llvm} 上で実装しコンパイラで直接 CbC を実行できるようにすることも優先する。 \nocite{*} \bibliographystyle{junsrt} \bibliography{reference} \end{document}