changeset 5:910e143c28e7

modify style
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Tue, 09 Feb 2016 17:10:44 +0900
parents 52eec0b77576
children 8e6f52c249a0
files gearsos.tex images/allocation.pdf images/images.graffle master_paper.pdf master_paper.sty master_paper.tex src/context.h
diffstat 7 files changed, 87 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/gearsos.tex	Tue Feb 09 04:21:34 2016 +0900
+++ b/gearsos.tex	Tue Feb 09 17:10:44 2016 +0900
@@ -69,13 +69,14 @@
 \lstinputlisting[label=context, caption=Context]{src/context.h}
 \lstinputlisting[label=initcontext, caption=initContext]{src/initContext.c}
 
-Context はヒープサイズを示す heap\_limit, ヒープの初期位置を示す heap\_start, ヒープの現在位置を示す heap を持っている。
+Context はヒープサイズを示す heapLimit, ヒープの初期位置を示す heapStart, ヒープの現在位置を示す heap を持っている。
 必要な Data Gear のサイズに応じて heap の位置を動かすことで Allocation を実現する。
 
 allocate を行うには allocate に必要な Data Gear に情報を書き込む必要がある。
-この Data Gear は Context 生成時に生成する必要がある。
+この Data Gear は Context 生成時に生成する必要があり、ソースコード:\ref{context} 14行目の Allocate がそれに当たる。
+UniqueData で定義した Data Gear は Context と同時に生成される。
 
-Temporal Data Gear にある Data Gear は基本的には破棄可能なものなので heap\_limit を超えたら heap を heap\_start の位置に戻し、ヒープ領域を再利用する(図:\ref{fig:allocation})。
+Temporal Data Gear にある Data Gear は基本的には破棄可能なものなので heapLimit を超えたら heap を heapStart の位置に戻し、ヒープ領域を再利用する(図:\ref{fig:allocation})。
 必要な Data Gear は Persistent Data Tree に書き出すことで他の Worker からアクセスすることが可能になる。
 
 \begin{figure}[!ht]
@@ -86,7 +87,7 @@
   \label{fig:allocation}
 \end{figure}
 
-実際に allocate を行うコードはソースコード:\ref{allocate} の通りである。
+実際に allocate を行う Code Gear はソースコード:\ref{allocate} の通りである。
 
 Context 生成時に実行可能な Code Gear と名前が対応付けられる。
 その対応付けられた Code Gear が Context の code に格納される。
@@ -97,6 +98,27 @@
 
 \lstinputlisting[label=allocate, caption=allocate]{src/allocate.c}
 
-\section{List}
+\newpage
+
 \section{Synchronized Queue}
+Gears OS における Synchronized Queue は TaskQueue として利用される。
+メインとなる Context と Worker 用の Context で共有され、Woker が TaskQueue から Task を取得し実行することで並列処理を実現する。
+
+Gears OS での Queue を Queue を表す Data Gear と Queue の構成要素である Element によって表現する。
+Queue を表す Data Gear には先頭の Element を指す first, 末尾の Element を指す last, Element の個数を示す count が格納される。
+Element を表す Data Gear には Task を示す task, 次の Element を示す next が格納される。
+
+ソースコード:\ref{queue} は Context の定義(ソースコード:\ref{context})に追加する Queue と Element の定義である。
+
+\lstinputlisting[label=queue, caption=queue]{src/queue.h}
+
+新たに Queue に対する操作を行う Code Gear の名前を追加し、UniqueData には Queue の情報が入る Queue(ソースコード:\ref{queue} 9行目) と Enqueue に必要な情報を書き込む Element(ソースコード:\ref{queue} 10行目) を定義している。
+
+通常の Enqueue, Dequeue を行う Code Gear はソースコード:\ref{enqueue} と ソースコード:\ref{dequeue} の通りである。
+
+\lstinputlisting[label=enqueue, caption=Enqueue]{src/enqueue.c}
+\lstinputlisting[label=dequeue, caption=Dequeue]{src/dequeue.c}
+
+ソースコード:\ref{enqueue} とソースコード:\ref{dequeue} はシングルスレッドでは正常に動作するが、並列実行すると期待した値にならない。
+
 \section{Red-Black Tree}
Binary file images/allocation.pdf has changed
Binary file images/images.graffle has changed
Binary file master_paper.pdf has changed
--- a/master_paper.sty	Tue Feb 09 04:21:34 2016 +0900
+++ b/master_paper.sty	Tue Feb 09 17:10:44 2016 +0900
@@ -82,6 +82,8 @@
 %年度
 \def\@year{}
 \def\year#1{\gdef\@year{#1}}
+\def\@eyear{}
+\def\eyear#1{\gdef\@eyear{#1}}
 %和文タイトル
 \def\jetitle{}
 \def\jtitle#1{\gdef\@title{#1}}
@@ -94,8 +96,23 @@
 \def\@affiliation{}
 \def\affiliation#1{\gdef\@affiliation{#1}}
 \let\belongto\affiliation
+%名前
+\def\@name{}
+\def\name#1{\gdef\@name{#1}}
+\def\@ename{}
+\def\ename#1{\gdef\@ename{#1}}
 
-\def\thesis{学位論文(修士)}
+\def\thesis{修士(工学)学位論文}
+\def\ethesis{Master's Thesis of Engineering}
+
+\def\university{琉球大学}
+\def\euniversity{Universty of the Ryukyus}
+
+\def\department{大学院理工学研究科}
+\def\edepartment{Graduate School of Engineering and Science}
+
+\def\course{情報工学専攻}
+\def\ecourse{Infomation Engineering Course}
 
 %表紙
 %\renewcommand{\maketitle}{%
@@ -122,19 +139,38 @@
 \thispagestyle{empty}
 \vskip 1cm%
 \begin{center}%
-\let\footnote\thanks
-  {\huge\bfseries\mc\@title \par}%
-    \vskip 3.0em%
-  {\huge\textbf{\@etitle}\par}%
-    \vskip 1.5em%
-  {\LARGE \@year \ \thesis \par}%
-    \vskip 13em%
-  {\LARGE \@affiliation \par}%
-    \vskip 1.5em%
-  {\LARGE \@author \par}%
+  \let\footnote\thanks
+  {\Large\bfseries\thesis \par}
+    \vskip 0.3 em
+  {\Large\textbf\ethesis \par}
+    \vskip 2.0 em
+  {\LARGE\bfseries\mc\@title \par}
+    \vskip 0.3 em
+  {\LARGE\textbf{\@etitle} \par}
+    \vskip 1.0 em
+  {\large \@year \par}
+    \vskip 0.3 em
+  {\large\textbf\@eyear \par}
+    \vskip 2.0 em
+  {\large \@name \par}
+    \vskip 0.3 em
+  {\large \@ename \par}
+    \vskip 2.0 em
+  {\large \@affiliation \par}
+    \vskip 2.0 em
+  {\large\bfseries\university \par}
+    \vskip 0.3 em
+  {\large\bfseries\department \par}
+    \vskip 0.3 em
+  {\large\bfseries\course \par}
+    \vskip 1.0 em
+  {\large\textbf\euniversity \par}
+    \vskip 0.3 em
+  {\large\textbf\edepartment \par}
+    \vskip 0.3 em
+  {\large\textbf\ecourse \par}
 \end{center}}
 
-
 %abstract
 \renewenvironment{abstract}{%
       \titlepage
--- a/master_paper.tex	Tue Feb 09 04:21:34 2016 +0900
+++ b/master_paper.tex	Tue Feb 09 17:10:44 2016 +0900
@@ -9,18 +9,17 @@
 
 \jtitle{Code Segment と Data Segment によって構成される Gears OS の設計}
 \etitle{Design of Gears OS with consist of Code and Data Semgment}
-\year{平成27年度 3月}
+\year{2016年 3月}
+\eyear{March 2016}
 \affiliation{\center%
   \includegraphics[clip,keepaspectratio,width=.15\textwidth]
-                  {images/u-ryukyu-Mark.eps}\\
-                  \vskip10mm
-                  琉球大学大学院 \ 理工学研究科\\ 情報工学専攻}
+                  {images/u-ryukyu-Mark.eps}
+}
 
-\author{小久保 翔平}
-
+\name{小久保 翔平}
+\ename{Shohei KOKUBO}
 \marklefthead{% 左上に挿入
   \begin{minipage}[b]{.4\textwidth}
-    \includegraphics[height=1zw,clip,keepaspectratio]{images/emblem-bitmap.eps}
     琉球大学大学院学位論文(修士)
 \end{minipage}}
 \markleftfoot{% 左下に挿入
--- a/src/context.h	Tue Feb 09 04:21:34 2016 +0900
+++ b/src/context.h	Tue Feb 09 17:10:44 2016 +0900
@@ -1,6 +1,7 @@
 /* Context definition example */
 #define ALLOCATE_SIZE 1000
 
+// Code Gear Name
 enum Code {
     Code1,
     Code2,
@@ -8,6 +9,7 @@
     Exit,
 };
 
+// Unique Data Gear
 enum UniqueData {
     Allocate,
 };
@@ -23,14 +25,18 @@
     union Data **data;
 };
 
+// Data Gear definition
 union Data {
+    // size: 4 byte
     struct Data1 {
         int i;
     } data1;
+    // size: 5 byte
     struct Data2 {
         int i;
         char c;
     } data2;
+    // size: 8 byte
     struct Allocate {
         long size;
     } allocate;