changeset 42:d6cf9ceea3d4

Add go section
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Mon, 05 Feb 2018 04:04:16 +0900
parents 5e604f9f9022
children 1d8a79195742
files paper/evaluation.tex paper/master_paper.pdf paper/reference.bib
diffstat 3 files changed, 33 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/paper/evaluation.tex	Mon Feb 05 03:11:35 2018 +0900
+++ b/paper/evaluation.tex	Mon Feb 05 04:04:16 2018 +0900
@@ -149,7 +149,24 @@
 また、 OpenMPはコードとデータを厳密に分離していないため、データの待ち合わせ処理をバリア等のアノテーションで記述する。
 
 Gears OS では Input Data Gear が揃った Code Gear は並列に実行されるため、プログラム全体の並列度を高めることが出来る。
-また 並列処理のコードとデータの依存関係を``par goto'' で簡潔に記述することが出来る。
+また 並列処理のコードとデータの依存関係を par goto 文で簡潔に記述することが出来る。
 
 \section{Go との比較}
-Go言語\cite{go} 
+Go言語\cite{go} は Google社が開発しているプログラミング言語である。
+Go 言語によるTwice の実装例を\coderef{go}に示す。
+
+\lstinputlisting[caption=Go 言語での Twice, label=code:go]{./src/go.go}
+
+Go は並列実行を ``go function(argv)'' のような構文で行う。
+この並列実行を goroutine と呼ぶ。
+
+Go は goroutin 間のデータ送受信をチャネルというデータ構造で行う。
+チャネルによるデータの送受信は ``\textless-'' を使って行われる。
+例えばチャネルのデータ構造であるchannel に対して ``channel \textless- data'' とすると、 data を channel に送信を行う。
+``\textless- channel'' とすると、 channel から送信されたデータを1つ取り出す。
+channel にデータが送信されていない場合はchannel にデータが送信されるまで実行をブロックする。
+Go 言語はチャネルにより、データの送受信が簡潔に書ける。
+しかし、チャネルは複数の goroutine で参照できるためデータの送受信は送信元が推測しづらいという問題がある。
+
+Gears OS では goroutine は par goto 文とほぼ同等に扱うことが出来る。
+また、Code Gear は par goto 文で書き出す Output Data Gear を指定して実行するため、Data Gear の書き出し元が推測しやすい。
Binary file paper/master_paper.pdf has changed
--- a/paper/reference.bib	Mon Feb 05 03:11:35 2018 +0900
+++ b/paper/reference.bib	Mon Feb 05 04:04:16 2018 +0900
@@ -85,6 +85,19 @@
  keywords = {operating system, run-time system, type safety, verification},
 }
 
+@article{go, 
+author={J. Meyerson}, 
+journal={IEEE Software}, 
+title={The Go Programming Language}, 
+year={2014}, 
+volume={31}, 
+number={5}, 
+pages={104-104}, 
+keywords={Andrew Gerrand;C;Go;Google;arrays;build times;compilers;garbage collection;golang;imports;interfaces;open source;readability;scalability;slices;standard library;syntax}, 
+doi={10.1109/MS.2014.127}, 
+ISSN={0740-7459}, 
+month={Sept},}
+
 @article{moggi-monad,
     author     = {Moggi, Eugenio},
     title      = {Notions of Computation and Monads},
@@ -199,3 +212,4 @@
     school = "琉球大学 大学院理工学研究科 情報工学専攻",
     year   = "2016"
 }
+