# HG changeset patch # User Tatsuki IHA # Date 1462467375 -32400 # Node ID 600562c0d5d2becff3a82cfe46a4067cad41a608 # Parent fe6323d1602d4cadf0185ca5c6fb3dfd93758f13 Update diff -r fe6323d1602d -r 600562c0d5d2 paper/pic/cbc_goto.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/cbc_goto.graffle Fri May 06 01:56:15 2016 +0900 @@ -0,0 +1,1037 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 167.2.0.244490 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {558.99997329711914, 783}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-11-12 11:03:25 +0000 + Creator + Nobuyasu Oshiro + DisplayScale + 1 in = 1.00000 in + GraphDocumentVersion + 12 + GraphicsList + + + Bounds + {{315.5, 89.625}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 32 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{315.5, 171}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 31 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{190.20312000000001, 167}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 30 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{405.93358999999998, 125}, {54, 18}} + Class + ShapedGraphic + ID + 29 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + AllowLabelDrop + + Class + LineGraphic + ID + 28 + Points + + {412.93358999999998, 143.02043} + {462.43358999999998, 143} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.4285709857940674 + Legacy + + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{90, 126}, {54, 18}} + Class + ShapedGraphic + ID + 27 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{252, 134.3125}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 26 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 3 + + ID + 23 + Points + + {97, 144.03550999999999} + {146.49998746293761, 144.0150711098278} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.4285709857940674 + Legacy + + TailArrow + 0 + TailScale + 0.5 + + + + + Class + LineGraphic + Head + + ID + 5 + + ID + 11 + Points + + {307.06832644961662, 99.005708590904717} + {348.41386755785959, 126.00973315833174} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 1 + + + + Class + LineGraphic + Head + + ID + 5 + + ID + 38 + Points + + {307.26186045457405, 188.16336426740673} + {348.23813954515032, 161.83663573235037} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 34 + + + + Class + LineGraphic + Head + + ID + 34 + + ID + 37 + Points + + {210.76185637532367, 161.83663311602177} + {251.73814361460188, 188.16336689285151} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 8 + Points + + {210.56036004631343, 125.98738390291257} + {251.89396917594394, 98.972989609515338} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Class + LineGraphic + Head + + ID + 34 + + ID + 36 + Points + + {293.55569627859614, 106.37834050302079} + {315.5, 146} + {294.53436892560063, 180.94271845733229} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 1 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 35 + Points + + {263.99039783562887, 181.10804590903402} + {239, 141} + {262.95578718585557, 105.50994490984354} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 34 + + + + Bounds + {{340, 117}, {72, 54}} + Class + ShapedGraphic + ID + 5 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +D} + VerticalPad + 0.0 + + + + Bounds + {{243.5, 179}, {72, 54}} + Class + ShapedGraphic + ID + 34 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +C} + VerticalPad + 0.0 + + + + Bounds + {{147, 117}, {72, 54}} + Class + ShapedGraphic + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment A} + VerticalPad + 0.0 + + + + Bounds + {{243.5, 54}, {72, 54}} + Class + ShapedGraphic + ID + 1 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +B} + VerticalPad + 0.0 + + + + Bounds + {{197.56640999999999, 98.625}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 25 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2015-10-27 21:38:00 +0000 + Modifier + Tatsuki IHA + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {594.99997329711914, 842} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{4, -0}, {1913, 983}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{-420, -21}, {1399, 826}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r fe6323d1602d -r 600562c0d5d2 paper/pic/cbc_goto.pdf Binary file paper/pic/cbc_goto.pdf has changed diff -r fe6323d1602d -r 600562c0d5d2 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r fe6323d1602d -r 600562c0d5d2 paper/sigos.tex --- a/paper/sigos.tex Wed May 04 18:43:15 2016 +0900 +++ b/paper/sigos.tex Fri May 06 01:56:15 2016 +0900 @@ -88,10 +88,63 @@ % Introduce \section{GearsOS} + \section{Code Gear と Data Gear} +Gears OS はプログラムの単位として Gear を用いる。 +Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 + +Code Gear はプログラムの処理そのものである。 +Code Gear は任意の数の Input Data Gear を参照し、 処理が完了すると任意の数の Output Data Gear に書き込む。 +Code Gear は接続された Data Gear 以外には参照行わない。 + +Data Gear は Data そのものを表しており、int や文字列などの Primitive Data Type が入っている。 + +Gears OS では Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を可能とする。 +図\ref{fig:codeGear_dataGear} に Code Gear と Data Gear を使用した実行を示す。 + +Gear の特徴として処理やデータの構造が Code Gear、 Data Gear に閉じていることにある。 +これにより、実行時間、メモリ使用量などを予想可能なものにする事が可能になる。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/codeGear_dataGear.pdf} + \end{center} + \caption{Code Gear と Data Gear での実行} + \label{fig:codeGear_dataGear} +\end{figure} + +\section{Continuation based C} +Gears OS の実装は本研究室で開発している CbC(Continuation based C)を用いて行う。 +CbC は処理を Code Segment を用いて記述することを基本としているため、 Gears OS の Code Gear を記述するのに適している。 -\section{} -\section{} +CbC のプログラムでは C の関数の代わりに Code Segment を用いてい処理を記述している。 Code Segment は C の関数と異なり戻り値を持たない。 +Code Segment の宣言は C の関数の構文と同様に行い、 型に \_\_code を使うことで宣言できる。 + +Code Segment から Code Segment への移動は goto の後に Code Segment 名と引数を並べた記述するという構文を用いて行う。 +この goto による処理の遷移を継続と呼ぶ。 図\ref{fig:cbc_goto} は Code Segment 間の継続関係を表している。 + +C では関数呼び出しを行うたび、関数の引数の値がスタックに積まれていくが、Code Segment では戻り値を持たないため、スタックに値を積んでいく必要がなくスタックを変更する必要が無い。 +このようなスタックに値を積まない継続、つまり呼び出し元の環境を持たない継続を軽量継続と呼ぶ。 +軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/cbc_goto.pdf} + \end{center} + \caption{gotoによる Code Segment 間の接続} + \label{fig:cbc_goto} +\end{figure} +\section{CbC での Gears OS の構文サポート} +CbC は Gears OS の構文のサポートを行う。 + +Gesrs OS では Contextという接続可能な Data Gear のリストからデータを取り出して処理行う。 +しかし、 Context を直接扱うのはセキュリティ上好ましくない。 +そこで Gears OS では Context から必要なデータを取り出して Code Gear に接続する stub を定義する。 +stub は Code Gear から推論することが可能のため、 CbC は自動的に stub の生成を行う。 + +また、Code Gear の遷移には meta computation を行うために Meta Code Gear を挟む。 +CbC では Meta Code Gear への接続も自動的に行うようにする。 + \section{まとめ} \nocite{*}