# HG changeset patch # User anatofuz # Date 1588569942 -32400 # Node ID 2be09c284a2e9c0111605cd087cd1921859f4484 # Parent d933923009db8f9b64f27dbd7842e24618fb93a2 add meta-cg-dg.pdf diff -r d933923009db -r 2be09c284a2e paper/anatofuz-sigos.md --- a/paper/anatofuz-sigos.md Mon May 04 11:43:11 2020 +0900 +++ b/paper/anatofuz-sigos.md Mon May 04 14:25:42 2020 +0900 @@ -84,8 +84,11 @@ GearsOSでは、 CodeGearとDataGearを元にプログラミングを行う。 遷移する各CodeGearの実行に必要なデータの整合性の確認などのメタ計算は、 MetaCodeGearと呼ばれる各CodeGearごと実装されたCodeGearで計算を行う。 このMetaCodeGearの中で参照されるDataGearをMetaDataGearと呼ぶ。 -Contextそのものは、 DataGearの実行に必要なMetaDataGearである。 -プログラマがプログラミングする上では別のCodeGearに直接遷移している様に見えるが、 実際はMetaCodeGearを一度経由してからCodeGearに遷移する。 + +各CodeGearの入出力や、各CodeGearそのものの関数ポインタなどは、関数型プログラミングの側面から見るとプログラマが直接操作するのを禁じる必要がある。 +このためにGearsOSには実行する処理に必要なCodeGear及びDataGearを管理する、 contextというMetaDataGearが存在する。 +コード上では別のCodeGearに直接遷移している様に見えるが、 実際はContext内の遷移先のCodeGearに対応するスロットから、対応するMetaCodeGearに遷移する。 +これらの変換はPerlスクリプトによって、 GearsOSのビルド時に静的に行われる。 # xv6 kernel @@ -111,3 +114,4 @@ したがって特定の関数内の処理のBasicBlockを分析し、 BasicBlockに対応したCodeGearへ変換することで状態遷移系への変換を行った。 +![perf, perl](./fig/meta-cg-dg.pdf) diff -r d933923009db -r 2be09c284a2e paper/anatofuz-sigos.pdf Binary file paper/anatofuz-sigos.pdf has changed diff -r d933923009db -r 2be09c284a2e paper/anatofuz-sigos.tex --- a/paper/anatofuz-sigos.tex Mon May 04 11:43:11 2020 +0900 +++ b/paper/anatofuz-sigos.tex Mon May 04 14:25:42 2020 +0900 @@ -11,7 +11,7 @@ -\usepackage[dvips]{graphicx} +\usepackage[dvips,dvipdfmx]{graphicx} \usepackage{latexsym} \usepackage{listings} \lstset{ @@ -160,8 +160,11 @@ GearsOSでは、 CodeGearとDataGearを元にプログラミングを行う。 遷移する各CodeGearの実行に必要なデータの整合性の確認などのメタ計算は、 MetaCodeGearと呼ばれる各CodeGearごと実装されたCodeGearで計算を行う。 このMetaCodeGearの中で参照されるDataGearをMetaDataGearと呼ぶ。 -Contextそのものは、 DataGearの実行に必要なMetaDataGearである。 -プログラマがプログラミングする上では別のCodeGearに直接遷移している様に見えるが、 実際はMetaCodeGearを一度経由してからCodeGearに遷移する。 + +各CodeGearの入出力や、各CodeGearそのものの関数ポインタなどは、関数型プログラミングの側面から見るとプログラマが直接操作するのを禁じる必要がある。 +このためにGearsOSには実行する処理に必要なCodeGear及びDataGearを管理する、 contextというMetaDataGearが存在する。 +コード上では別のCodeGearに直接遷移している様に見えるが、 実際はContext内の遷移先のCodeGearに対応するスロットから、対応するMetaCodeGearに遷移する。 +これらの変換はPerlスクリプトによって、 GearsOSのビルド時に静的に行われる。 \section{xv6 kernel} @@ -187,6 +190,13 @@ したがって特定の関数内の処理のBasicBlockを分析し、 BasicBlockに対応したCodeGearへ変換することで状態遷移系への変換を行った。 +\begin{figure}[tb] + \begin{center} + \includegraphics[width=70mm]{./fig/meta-cg-dg.pdf} + \end{center} + \caption{perl} + \label{perf} +\end{figure} \nocite{*} \bibliographystyle{ipsjunsrt} diff -r d933923009db -r 2be09c284a2e paper/fig/meta-cg-dg.pdf Binary file paper/fig/meta-cg-dg.pdf has changed diff -r d933923009db -r 2be09c284a2e paper/md2tex.pl --- a/paper/md2tex.pl Mon May 04 11:43:11 2020 +0900 +++ b/paper/md2tex.pl Mon May 04 14:25:42 2020 +0900 @@ -46,6 +46,18 @@ $line =~ s/`([\s\w_\-\\]+)`/\\texttt{$inlineCodeBlock}/; } + if ($line =~ /!\[(.*),\s*(.*)\]\((.*)\)/) { + $line = <<"EOF"; +\\begin{figure}[tb] + \\begin{center} + \\includegraphics[width=70mm]{$3} + \\end{center} + \\caption{$2} + \\label{$1} +\\end{figure} +EOF + } + if ($line =~ /^\[(.*),\s*(.*)\]\((.*)\)/) { $line = '\l' ."stinputlisting[label=$1, caption={$2}]{$3}\n"; } diff -r d933923009db -r 2be09c284a2e paper/md2tex/first.tex --- a/paper/md2tex/first.tex Mon May 04 11:43:11 2020 +0900 +++ b/paper/md2tex/first.tex Mon May 04 14:25:42 2020 +0900 @@ -11,7 +11,7 @@ -\usepackage[dvips]{graphicx} +\usepackage[dvips,dvipdfmx]{graphicx} \usepackage{latexsym} \usepackage{listings} \lstset{