# HG changeset patch # User atton # Date 1484879821 -32400 # Node ID 3ffd17f96e0611bcf0013e376d3a2089e92d1a15 # Parent 6dedd4ed6b6d3bbd9844812d129d6150ecb78795 Add meta computations diff -r 6dedd4ed6b6d -r 3ffd17f96e06 paper/cbc.tex --- a/paper/cbc.tex Thu Jan 19 11:39:10 2017 +0900 +++ b/paper/cbc.tex Fri Jan 20 11:37:01 2017 +0900 @@ -70,7 +70,34 @@ % }}} +% {{{ MetaCodeSegment と MetaDataSegment + \section{MetaCodeSegment と MetaDataSegment} +プログラムを記述する際、本来行ないたい計算の他にも記述しなければならない部分が存在する。 +メモリの管理やネットワーク処理、エラーハンドリングや並列処理などがこれにあたり、本来行ないたい計算と区別してメタ計算と呼ぶ。 +プログラムを動作させるためにメタ計算部分は必須であり、しばしば本来の処理よりも複雑度が高い。 + +CodeSegment を用いたプログラミングスタイルでは計算とメタ計算を分離して記述する。 +分離した計算は階層構造を持ち、本来行ないたい処理をノーマルレベルとし、メタ計算はメタレベルとしてノーマルレベルよりも上の存在に位置する。 +複雑なメタ計算部分をライブラリやOS側が提供することで、ユーザはノーマルレベルの計算の記述に集中することができる。 +また、ノーマルレベルのプログラムに必要なメタ計算を追加することで、並列処理やネットワーク処理などを含むプログラムに拡張できる。 +さらに、ノーマルレベルからはメタレベルは隠蔽されているため、メタ計算の実装を切り替えることも可能である。 +例えば、並列処理のメタ計算用いたプログラムを作成する際、CPUで並列処理を行なうメタ計算とGPUで並列処理メタ計算を環境に応じて作成することができる。 + +なお、メタ計算を行なう CodeSegment は Meta CodeSegment と呼び、メタ計算に必要な DataSegment は Meta DataSegment と呼ぶ。 +Meta CodeSegment は CodeSegment の前後にメタ計算を挟むことで実現され、Meta DataSegment は DataSegment を含む上位の DataSegment として実現できる。 +よって、メタ計算は通常の計算を覆うように計算を拡張するものだと考えられる(図\ref{fig:meta})。 + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=1.0]{fig/meta.pdf} + \caption{Meta CodeSegment と Meta DataSegment} + \label{fig:meta} + \end{center} +\end{figure} + +% }}} + \section{GearsOS} \section{メタ計算ライブラリ akasha} \section{akasha を用いた赤黒木の実装の検証} diff -r 6dedd4ed6b6d -r 3ffd17f96e06 paper/fig/meta.pdf Binary file paper/fig/meta.pdf has changed