# HG changeset patch # User menikon # Date 1581076484 -32400 # Node ID 102c403101426db6cc8eeabe89be306379bd2d50 # Parent a592714b3c3501a1dc87778c47ece65045f89041 add fig diff -r a592714b3c35 -r 102c40310142 final_main/chapter2.tex --- a/final_main/chapter2.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/chapter2.tex Fri Feb 07 20:54:44 2020 +0900 @@ -1,11 +1,39 @@ \chapter{Continuation based C} %\label{chap:concept} -%\cite{cbc} -Continuation based C (以下CbC) は基本的な処理単位を CodeGear として定義し, CodeGea 間で遷移するようにプログラムを記述する C 言語と互換性のある当研究室で開発されたプログラミング言語である. -\section{DataGearとCodeGear} + +Continuation based C \cite{cbc} (以下CbC) は基本的な処理単位を CodeGear として定義し, CodeGea 間で遷移するようにプログラムを記述する C 言語と互換性のある当研究室で開発されたプログラミング言語である.図2.1はCodeGear間の継続する際の処理の流れを示している. + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=150mm]{fig/gotoCodeGear.pdf} + \end{center} + \caption{CodeGear間の継続} + \label{fig:codegear} +\end{figure} + +現在 CbC は C コンパイラであるGCC\cite{gcc}及びLLVM\cite{llvm}をバックエンドとした clang 上で実装されている. +本研究ではこのプログラミング言語を用いて xv6 の Filesystemを書き換える. +\section{CodeGear} +CodeGear は CbCにおける基本的な処理単位である. 以下のソースコード2.1は CodeGear の継続の例である. +\lstinputlisting[label=cbcexample, caption=CodeGearの継続の例]{src/cbc_example.cbc} +CodeGear は\_\_code CodeGear名 (引数) の形で記述される. +CodeGear は返り値を持たない為, 関数内で処理が終了すると呼び出し 元の関数に戻ることがなく別の CodeGear へ遷移する. +ソースコード2.1の5行目のgoto cg1(c); や8行目のgoto cg2(c); などがこれにあたる.図2.2はソースコード2.1の状態遷移を表している. + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=100mm]{fig/goto.pdf} + \end{center} + \caption{ソースコード2.1が表しているCodeGearの状態遷移} + \label{fig:goto} +\end{figure} + +また CbC における CodeGear 間の継続にはスタックが使用されず, 呼び出し元の環境などを持たない為軽量継続と呼ぶ. +この CbC における CodeGear 間の継続にスタックが使用されない性質は信頼性の高い OS の開発に適している. + +\section{DataGear} -CodeGear は返り値を持たない為, 関数内で処理が終了すると呼び出し 元の関数に戻ることがなく別の CodeGear へ遷移する. 以下のソースコード2.1に CodeGear 遷移時のコード例を示す. -\lstinputlisting[label=cbcexample, caption=CodeGearの継続の例]{src/cbc_example.cbc} -また CbC における CodeGear 間の継続にはスタックが使 用できず, 呼び出し元の環境などを持たない為軽量継続と呼ぶ.現在 CbC は C コンパイラであるGCC及びLLVMをバックエンドとした clang 上で実装されている. -\section{} + + + diff -r a592714b3c35 -r 102c40310142 final_main/chapter3.tex --- a/final_main/chapter3.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/chapter3.tex Fri Feb 07 20:54:44 2020 +0900 @@ -3,12 +3,34 @@ \section{Context} -context とは一連の実行が行われる際に使用される CodeGear と DataGear の集合である. 従来のスレッドやプ ロセスに対応する.Context は接続可能な CodeGear, Data Gear のリスト. Data Gear を確保するメモリ空間, 実行さ れる Task への Code Gear 等を持っている. CodeGear が 別の CodeGear に遷移する際, 必ず context を参照し enum -で定義された CodeGear の番号を指定し遷移する. ノーマル レベルで見た際の CodeGar,DataGer および context の関係 を以下の図 1 に簡潔に示す. +context とは一連の実行が行われる際に使用される CodeGear と DataGear の集合である. 従来のスレッドやプロセスに対応する.Context は接続可能な CodeGear, Data Gear のリスト. Data Gear を確保するメモリ空間, 実行される Task への Code Gear 等を持っている. CodeGear が 別の CodeGear に遷移する際, 必ず context を参照し enum +で定義された CodeGear の番号を指定し遷移する. ノーマルレベルで見た際の CodeGar,DataGer および context の関係を以下の図 3.1 に簡潔に示す. + +\vspace{10mm} +\begin{figure}[ht] + \begin{center} + \includegraphics[width=100mm]{fig/context.pdf} + \end{center} + \caption{CodeGear,DataGear,contxtの関係図} + \label{fig:cbc} +\end{figure} + \section{inetrface} +Interface は Gears OS のモジュール化の仕組みである. Interface は呼び出しの引数になる Data Gear の集合であり,そこで呼び出される Code Gear のエントリである.呼び出される Code Gear の引数となる Data Gear はここで全て定義される. Interface を定義することで複数の実装を持つことができる. +この Interface は, Java の Interface や Haskell の型クラスに対応し, 導入することで仕様と実装に分けて記述することが出来る. +図 3.2 は 先行研究\cite{GearsOS}において作成された Stack の Interface とその実装を表したものである. -\section{} +\vspace{10mm} +\begin{figure}[ht] + \begin{center} + \includegraphics[width=100mm]{fig/interface.pdf} + \end{center} + \caption{Stack の Interface とその実装} + \label{fig:interface} +\end{figure} + +%\section{} -\section{} +%\section{} diff -r a592714b3c35 -r 102c40310142 final_main/chapter4.tex --- a/final_main/chapter4.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/chapter4.tex Fri Feb 07 20:54:44 2020 +0900 @@ -1,7 +1,16 @@ \chapter{xv6} +xv6 \cite{xv6} とは MIT のオペレーティングコースの教育目的で2006年に開発されたオペレーティングシステムである. xv6 はオリジナルである v6 が非常に古い C 言語で書かれてい る為, ANSI-C に書き換えられ x86 に再実装された. xv6 は read や write などの systemcall, プロセス, 仮想メモリ, カーネルとユーザーの分離, 割り込み, ファイルシステムなど Unix の基本的な構造を持っている. +\section{xv6 のFileSystem構造} +xv6 の FileSystem の構造を以下の図4.1に示す. + +\vspace{10mm} +\begin{figure}[ht] + \begin{center} + \includegraphics[width=100mm]{fig/xv6filesystemlayout.pdf} + \end{center} + \caption{xv6 の FileSystem Layout} + \label{fig:filesystem} +\end{figure} \section{} - - -\section{} diff -r a592714b3c35 -r 102c40310142 final_main/chapter5.tex --- a/final_main/chapter5.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/chapter5.tex Fri Feb 07 20:54:44 2020 +0900 @@ -2,7 +2,9 @@ -\section{} +\section{書き換え方針} +\section{FileSystemのInterface} +\lstinputlisting[label=fs_interface, caption=FileSystemのInterface]{src/fs.dg} -\section{} +\section{CbC による FileSystem の書き換え} diff -r a592714b3c35 -r 102c40310142 final_main/fig/Interface.graffle Binary file final_main/fig/Interface.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/Interface.pdf Binary file final_main/fig/Interface.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/context.graffle Binary file final_main/fig/context.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/context.pdf Binary file final_main/fig/context.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/emblem-bitmap.pdf Binary file final_main/fig/emblem-bitmap.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/goto.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_main/fig/goto.graffle Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,459 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 163.7.0.243167 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559.00000476837158, 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 + {{414.71999073028564, 106.55999761819839}, {116, 35}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 21 + + ID + 37 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs42 \cf0 goto cg2(c)} + + Wrap + NO + + + Bounds + {{191.23999530076981, 106.55999761819839}, {116, 35}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 21 + + ID + 36 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs42 \cf0 goto cg1(c)} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 35 + Points + + {363.13999296724796, 144} + {518, 144.55999761819839} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 33 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 33 + + ID + 34 + Points + + {135.09999589622021, 144} + {363.13999296724796, 144} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Bounds + {{307.23999530076981, 117}, {111.79999533295631, 54}} + Class + ShapedGraphic + FontInfo + + Size + 21 + + ID + 33 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs42 \cf0 cg1} + VerticalPad + 0.0 + + + + Bounds + {{79.19999822974205, 117}, {111.79999533295631, 54}} + Class + ShapedGraphic + FontInfo + + Size + 21 + + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs42 \cf0 cg0} + 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 + 2020-02-07 08:43:25 +0000 + Modifier + 坂本昂弘 + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.00000476837158, 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 + {{1827, -192}, {989, 747}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{68, 0}, {460, 574}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r a592714b3c35 -r 102c40310142 final_main/fig/goto.pdf Binary file final_main/fig/goto.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/gotoCodeGear.graffle Binary file final_main/fig/gotoCodeGear.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/gotoCodeGear.pdf Binary file final_main/fig/gotoCodeGear.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/gotoInterface.graffle Binary file final_main/fig/gotoInterface.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/gotoInterface.pdf Binary file final_main/fig/gotoInterface.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/xv6filesystemlayout.graffle Binary file final_main/fig/xv6filesystemlayout.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_main/fig/xv6filesystemlayout.pdf Binary file final_main/fig/xv6filesystemlayout.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/future.tex --- a/final_main/future.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/future.tex Fri Feb 07 20:54:44 2020 +0900 @@ -1,1 +1,1 @@ -\chapter{今後の課題} +\chapter{まとめと今後の課題} diff -r a592714b3c35 -r 102c40310142 final_main/main.out --- a/final_main/main.out Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/main.out Fri Feb 07 20:54:44 2020 +0900 @@ -2,17 +2,16 @@ \BOOKMARK [1][-]{section.1.1}{1.1 背景と目的}{chapter.1}% 2 \BOOKMARK [1][-]{section.1.2}{1.2 論文の構成}{chapter.1}% 3 \BOOKMARK [0][-]{chapter.2}{第2章 Continuation based C}{}% 4 -\BOOKMARK [1][-]{section.2.1}{2.1 DataGearとCodeGear}{chapter.2}% 5 -\BOOKMARK [1][-]{section.2.2}{2.2 }{chapter.2}% 6 +\BOOKMARK [1][-]{section.2.1}{2.1 CodeGear}{chapter.2}% 5 +\BOOKMARK [1][-]{section.2.2}{2.2 DataGear}{chapter.2}% 6 \BOOKMARK [0][-]{chapter.3}{第3章 GearsOS}{}% 7 \BOOKMARK [1][-]{section.3.1}{3.1 Context}{chapter.3}% 8 \BOOKMARK [1][-]{section.3.2}{3.2 inetrface}{chapter.3}% 9 -\BOOKMARK [1][-]{section.3.3}{3.3 }{chapter.3}% 10 -\BOOKMARK [1][-]{section.3.4}{3.4 }{chapter.3}% 11 -\BOOKMARK [0][-]{chapter.4}{第4章 xv6}{}% 12 -\BOOKMARK [1][-]{section.4.1}{4.1 }{chapter.4}% 13 -\BOOKMARK [1][-]{section.4.2}{4.2 }{chapter.4}% 14 -\BOOKMARK [0][-]{chapter.5}{第5章 CbCによるFileSystemの書き換え}{}% 15 -\BOOKMARK [1][-]{section.5.1}{5.1 }{chapter.5}% 16 -\BOOKMARK [1][-]{section.5.2}{5.2 }{chapter.5}% 17 -\BOOKMARK [0][-]{chapter.6}{第6章 今後の課題}{}% 18 +\BOOKMARK [0][-]{chapter.4}{第4章 xv6}{}% 10 +\BOOKMARK [1][-]{section.4.1}{4.1 xv6 のFileSystem構造}{chapter.4}% 11 +\BOOKMARK [1][-]{section.4.2}{4.2 }{chapter.4}% 12 +\BOOKMARK [0][-]{chapter.5}{第5章 CbCによるFileSystemの書き換え}{}% 13 +\BOOKMARK [1][-]{section.5.1}{5.1 書き換え方針}{chapter.5}% 14 +\BOOKMARK [1][-]{section.5.2}{5.2 FileSystemのInterface}{chapter.5}% 15 +\BOOKMARK [1][-]{section.5.3}{5.3 CbC による FileSystem の書き換え}{chapter.5}% 16 +\BOOKMARK [0][-]{chapter.6}{第6章 まとめと今後の課題}{}% 17 diff -r a592714b3c35 -r 102c40310142 final_main/main.pdf Binary file final_main/main.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_main/main.tex --- a/final_main/main.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_main/main.tex Fri Feb 07 20:54:44 2020 +0900 @@ -28,7 +28,7 @@ ndkeywordstyle={\footnotesize}, % stringstyle={\footnotesize\ttfamily}, breaklines=true, - captionpos=b, + captionpos=t, columns=[l]{fullflexible}, % xrightmargin=0zw, % xleftmargin=1zw, % @@ -95,7 +95,11 @@ \input{future.tex} % 参考文献 -\input{bibliography.tex} +%\input{bibliography.tex} +\def\line{−\hspace*{-.7zw}−} +\nocite{*} +\bibliographystyle{junsrt} +\bibliography{reference} % 謝辞 \input{thanks.tex} diff -r a592714b3c35 -r 102c40310142 final_main/reference.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_main/reference.bib Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,41 @@ +@article{cbc, + author = "Kaito TOKKMORI and Shinji KONO", + title = "Implementing Continuation based language in LLVM and Clang", + journal = "LOLA 2015", + month = "July", + year = 2015 +} + +@misc{xv6, +title = "{Xv6, a simple Unix-like teaching operating system}", +note = "(2019年10月19日閲覧)", +howpublished = {\url{https://pdos.csail.mit.edu/6.828/2019/xv6.html}}, +} + +@InProceedings{llvm, +author = {Chris Lattner and Vikram Adve}, +title = "{LLVM: A Compilation Framework for Lifelong Program Analysis \& Transformation}", +booktitle = "{Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04)}", +address = {Palo Alto, California}, +month = {Mar}, +year = {2004} +} + +@manual{gcc, +author = "{GNU Compiler Collection (GCC) Internals}", +title ="{http://gcc.gnu.org/onlinedocs/gccint/}", +} + +@article{GearsOS, + author = "伊波立樹 and 河野真治", + title = "Gears OS の並列処理", + journal = "琉球大学工学部情報工学科平成30年度学位論文(修士)", + year = 2018 +} + +@article{CbC2, + author = "宮城光希 and 河野真治", + title = "継続を基本とした言語による OS のモジュール化", + journal = "琉球大学工学部情報工学科平成31年度学位論文(修士)", + year = 2019 +} diff -r a592714b3c35 -r 102c40310142 final_main/src/fs.dg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_main/src/fs.dg Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,42 @@ +typedef struct fs { + union Data* fs; + struct superblock* sb; + uint dev; + short type; + struct inode* ip; + struct stat* st; + char* dst; + uint off; + uint n; + const char* s; + const char* t; + struct inode* dp; + char* name; + uint* poff; + uint inum; + char* path; + char* src; + int namex_val; + int strncmp_val; + dirent* de; + int ret; + uint tot; + __code readsb(Impl* fs, uint dev, struct superblock* sb, __code next(...)); + __code iinit(Impl* fs, __code next(...)); + __code ialloc(Impl* fs, uint dev, short type, __code next(...)); + __code iupdate(Impl* fs, struct inode* ip, __code next(...)); + __code idup(Impl* fs, struct inode* ip, __code next(...)); + __code ilock(Impl* fs, struct inode* ip, __code next(...)); + __code iunlock(Impl* fs, struct inode* ip, __code next(...)); + __code iput(Impl* fs, struct inode* ip, __code next(...)); + __code iunlockput(Impl* fs, struct inode* ip, __code next(...)); + __code stati(Impl* fs , struct inode* ip, struct stat* st, __code next(...)); + __code readi(Impl* fs, struct inode* ip, char* dst, uint off, uint tot, uint n, __code next(int ret, ...)); + __code writei(Impl* fs, struct inode* ip, char* src, uint off, uint tot, uint n, __code next(int ret, ...)); + __code namecmp(Impl* fs, const char* s, const char* t, __code next(int strncmp_val, ...)); + __code dirlookup(Impl* fs, struct inode* dp, char* name, uint off, uint* poff, dirent* de, __code next(int ret, ...)); + __code dirlink(struct fs_impl* fs, struct inode* ip, struct dirent* de, struct inode* dp, char* name, uint off, uint inum, __code next(...)); + __code namei(Impl* fs, char* path, __code next(int namex_val, ...)); + __code nameiparent(Impl* fs, char* path, char* name, __code next(int namex_val, ...)); + __code next(...); +} fs; diff -r a592714b3c35 -r 102c40310142 final_sub/mythesis.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_sub/mythesis.sty Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,156 @@ +% +% 卒業論文スタイルファイル(mythesis.sty) +% version 1.0e +% +% ver 1.0e 02/07/2000 since +% usage: + +%\documentclass[a4j]{jreport} +%\usepackage{master_paper} +% +% +%\title{卒論タイトル \\ 長い} +%\etitle{\pLaTeX2e style test file for Teri's thesis } +%\year{平成11年度} +%\belongto{琉球大学大学工学部\\ 情報工学科} +%\author{豊平 絵梨} +% +%\begin{document} +% +%\maketitle +% +%%要旨 +%\input{abstract.tex} +% +%%目次 +%\tableofcontents +% +%%図目次 +%\listoffigures +% +%%表目次 +%\listoftables +% +%%第一章 +%\input{chapter1.tex} +%%chapter1.texの\chapter{}の後ろに次のコマンドを追加してください。 +%%ページカウントがリセットされ、ページ数がアラビア文字になります。 +%% \pagenumbering{arabic} +%%第二章 +%\input{chapter2.tex} +%%第三章 +%\input{chapter3.tex} +% +%%付録 +%\input{appendix.tex} +% +%%謝辞 +%%\input{thanx.tex} +% +%%参考文献 +%\input{biblography.tex} +% +%\end{document} + + +%長さ設定 +%\setlength{\topmargin}{-30mm} +%\addtolength{\oddsidemargin}{-15mm} +%\addtolength{\textwidth}{60mm} + +\topmargin -1in \addtolength{\topmargin}{35mm} +\headheight 0mm +\headsep 0mm +\oddsidemargin -1in \addtolength{\oddsidemargin}{30mm} +%\evensidemargin -1in \addtolength{\evensidemargin}{8mm} +\textwidth 160mm +\textheight 230mm +%\footheight 0mm +%\footskip 0mm +%\pagestyle{empty} + + +%年度 +\def\@year{} +\def\year#1{\gdef\@year{#1}} +%英文タイトル +\def\@etitle{} +\def\etitle#1{\gdef\@etitle{#1}} +%アイコン +\def\@icon{} +\def\icon#1{\gdef\@icon{#1}} +%所属 +\def\@belongto{} +\def\belongto#1{\gdef\@belongto{#1}} + +%表紙 +\renewcommand{\maketitle}{% +\newpage\null +\thispagestyle{empty} +\vskip 0cm% +\begin{center}% +\let\footnote\thanks + {\huge \@year \par}% + \vskip 3em% + {\Huge \@title \par}% + \vskip 1em% + {\huge \@etitle \par}% + \vskip 8em% + {\huge \@icon \par}% + \vskip 0.5em% + {\huge \@belongto \par}% + \vskip 1.0em% + {\huge \@author \par}% + +\end{center}% +\par\vskip 1.5em +} + + +%abstract +\renewenvironment{abstract}{% + \titlepage + \thispagestyle{empty} + \null\vfil + \@beginparpenalty\@lowpenalty + {\Huge \bfseries \abstractname}% + \begin{center}% + \@endparpenalty\@M + \end{center} +}% + + +%目次 +\renewcommand{\tableofcontents}{% + \pagestyle{plain} + \if@twocolumn\@restonecoltrue\onecolumn + \else\@restonecolfalse\fi + \chapter*{\contentsname + \@mkboth{\contentsname}{\contentsname}% + } \pagenumbering{roman}\@starttoc{toc}% + \if@restonecol\twocolumn\fi +} + +%章 +\renewcommand{\chapter}{% + \pagestyle{plain} + \if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{jpl@in}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} + + +\renewcommand{\prepartname}{} %\renewcommand{\prepartname}{第} +\renewcommand{\postpartname}{部} +\renewcommand{\prechaptername}{第}%\renewcommand{\prechaptername}{第} +\renewcommand{\postchaptername}{章} +\renewcommand{\contentsname}{目 次} +\renewcommand{\listfigurename}{図 目 次} +\renewcommand{\listtablename}{表 目 次} +\renewcommand{\bibname}{参考文献} +\renewcommand{\indexname}{索 引} +\renewcommand{\figurename}{図} +\renewcommand{\tablename}{表} +\renewcommand{\appendixname}{付 録} +\renewcommand{\abstractname}{要 旨} diff -r a592714b3c35 -r 102c40310142 final_sub/pic/Interface.graffle Binary file final_sub/pic/Interface.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/Interface.pdf Binary file final_sub/pic/Interface.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/context.graffle Binary file final_sub/pic/context.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/context.pdf Binary file final_sub/pic/context.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/goto.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_sub/pic/goto.graffle Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,459 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 163.7.0.243167 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559.00000476837158, 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 + {{414.71999073028564, 106.55999761819839}, {116, 35}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 21 + + ID + 37 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs42 \cf0 goto cg2(c)} + + Wrap + NO + + + Bounds + {{191.23999530076981, 106.55999761819839}, {116, 35}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 21 + + ID + 36 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs42 \cf0 goto cg1(c)} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 35 + Points + + {363.13999296724796, 144} + {518, 144.55999761819839} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 33 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 33 + + ID + 34 + Points + + {135.09999589622021, 144} + {363.13999296724796, 144} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Bounds + {{307.23999530076981, 117}, {111.79999533295631, 54}} + Class + ShapedGraphic + FontInfo + + Size + 21 + + ID + 33 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs42 \cf0 cg1} + VerticalPad + 0.0 + + + + Bounds + {{79.19999822974205, 117}, {111.79999533295631, 54}} + Class + ShapedGraphic + FontInfo + + Size + 21 + + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1561\cocoasubrtf610 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs42 \cf0 cg0} + 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 + 2020-02-07 08:43:25 +0000 + Modifier + 坂本昂弘 + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.00000476837158, 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 + {{1827, -192}, {989, 747}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{68, 0}, {460, 574}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r a592714b3c35 -r 102c40310142 final_sub/pic/goto.pdf Binary file final_sub/pic/goto.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/gotoCodeGear.graffle Binary file final_sub/pic/gotoCodeGear.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/gotoCodeGear.pdf Binary file final_sub/pic/gotoCodeGear.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/gotoInterface.graffle Binary file final_sub/pic/gotoInterface.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/gotoInterface.pdf Binary file final_sub/pic/gotoInterface.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/xv6filesystemlayout.graffle Binary file final_sub/pic/xv6filesystemlayout.graffle has changed diff -r a592714b3c35 -r 102c40310142 final_sub/pic/xv6filesystemlayout.pdf Binary file final_sub/pic/xv6filesystemlayout.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/picins.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_sub/picins.sty Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,578 @@ +% PICINS.STY --- Style File zum Einbinden von Bildern +% Autor: J. Bleser, E. Lang +% Hochschulrechenzentrum +% Technische Hochschule Darmstadt +% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!! +% !!! Aenderungen nur mit Zustimmung der Autoren !!! +\message{Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ} +\newbox\@BILD% +\newbox\@TEXT% +\newdimen\d@breite% +\newdimen\d@hoehe% +\newdimen\d@xoff% +\newdimen\d@yoff% +\newdimen\d@shad% +\newdimen\d@dash% +\newdimen\d@boxl% +\newdimen\d@pichskip% +\newdimen\d@tmp +\newdimen\d@tmpa +\newdimen\d@bskip +\newdimen\hsiz@% +\newdimen\p@getot@l% +\newcount\c@breite +\newcount\c@hoehe +\newcount\c@xoff +\newcount\c@yoff +\newcount\c@pos +\newcount\c@shad +\newcount\c@dash +\newcount\c@boxl +\newcount\c@zeilen% +\newcount\@changemode% +\newcount\c@piccaption% +\newcount\c@piccaptionpos% +\newcount\c@picpos +\newcount\c@whole% +\newcount\c@half% +\newcount\c@tmp +\newcount\c@tmpa +\newcount\c@tmpb +\newcount\c@tmpc +\newcount\c@tmpd +\newskip\d@leftskip +\newif\if@list \@listfalse% +\newif\if@offset% + + +\c@piccaptionpos=1% +\c@picpos=0 +\d@shad=4pt% +\d@dash=4pt% +\d@boxl=10pt% +\d@pichskip=1em% +\@changemode=0% +\def\@captype{figure}% +\let\old@par=\par% + +\def\pichskip#1{\d@pichskip #1\relax} + + +\def\shadowthickness#1{\d@shad #1\relax} + + +\def\dashlength#1{\d@dash #1\relax} + + +\def\boxlength#1{\d@boxl #1\relax} + + +\def\picchangemode{\@changemode=1}% +\def\nopicchangemode{\@changemode=0}% + + +\def\piccaptionoutside{\c@piccaptionpos=1}% +\def\piccaptioninside{\c@piccaptionpos=2}% +\def\piccaptionside{\c@piccaptionpos=3}% +\def\piccaptiontopside{\c@piccaptionpos=4}% + +\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}} +\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}} +\def\make@piccaption{% + \hsiz@\d@breite% + \ifnum\c@piccaptionpos=2% + \advance\hsiz@ -2\fboxsep% + \fi% + \ifnum\c@piccaptionpos>2% + \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip% + \fi% + \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}% +} + + + +\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}} +\long\def\@newcaption#1[#2]#3{% + \old@par% + \addcontentsline{\csname ext@#1\endcsname }{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}} + \begingroup\@parboxrestore\normalsize% + \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\old@par% + \endgroup% +} +\long\def\@newmakecaption#1#2{% + \vskip 10pt% + \setbox\@tempboxa \hbox {#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0 + \setbox1=\vtop{\hsize=\dimen0 #2} + \hbox{\box0 \box1} + \par + \else \hbox to\hsize {\hfil \box \@tempboxa \hfil} + \fi +} + + + + + +\def\parpic{% + \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)} +} +\def\iparpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}% + {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)} +} +\def\iiparpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]} +} +\def\iiiparpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{% + \let\par=\old@par\par% + \hangindent0pt\hangafter1% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \multiply\c@piccaption\c@piccaptionpos% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=1\unitlength1pt% + \if@offset% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \ifnum\c@piccaption=2% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}% + \hbox{\hspace{\fboxsep}\box\@TEXT}% + \vspace{4pt}}% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa l\c@pos=1\fi% + \if\@tempa r\c@pos=2\fi% + }% + \ifnum\c@piccaption=1% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}% + \fi% + \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi% + \pagetotal=\the\pagetotal% + \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip% + \ifdim\d@hoehe>\d@tmp% + \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax% + \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi% + \fi% + \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi% + \ifnum\@listdepth>0 + \@listtrue\parshape 0% + \advance\hsize -\rightmargin% + \d@leftskip \leftskip% + \leftskip \@totalleftmargin% + \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi% + \else\@listfalse\medskip% + \fi% + \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi% + \ifnum\c@piccaption=3% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \ifdim\d@hoehe>\d@tmp% + \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}% + \else% + \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}% + \d@hoehe\d@tmp% + \fi% + \fi% + \ifnum\c@piccaption=4% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}% + \advance\d@hoehe-\d@tmp% + \fi% + \ifnum\c@pos=1\d@tmpa=0pt% + \ifnum\c@piccaption>2% + \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}% + \fi% + \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite% + \ifnum\c@piccaption>2% + \d@tmpa=0pt% + \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}% + \fi% + \fi% + \p@getot@l\the\pagetotal% + \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip% + {\noindent\hspace*{\d@tmpa}\relax% + \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}% + \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip% + \c@zeilen=\d@tmp\advance\c@zeilen by-1% + \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip% + \else\advance\d@breite by\d@pichskip% + \fi% + \hangindent=\d@breite% + \hangafter=\c@zeilen% + \let\par=\x@par% + \ifnum\c@piccaption=3% + \hangindent0pt\hangafter1\let\par=\old@par% + \vskip\d@hoehe\vskip.2\baselineskip% + \fi% + \c@piccaption=0% +} + + + + +\newdimen\ptoti +\newdimen\ptotii +\def\x@par{% + \ptoti\pagetotal% + \old@par% + \ptotii\pagetotal% + \ifdim\ptoti=\ptotii% + \d@tmp\d@hoehe% + \else% + \d@tmp\baselineskip% + \multiply\d@tmp by\prevgraf% + \advance\d@tmp by\parskip% + \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe% + \fi% + \ifdim\d@hoehe>0pt% + \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1% + \c@zeilen=\the\c@zeilen% + \else\c@zeilen=0 + \fi + \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite% + \else\let\par=\old@par% + \hangindent 0pt% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% + \fi% +} + + +\def\picskip#1{% + \let\par=\old@par% + \par% + \pagetotal\the\pagetotal% + \c@tmp=#1\relax% + \ifnum\c@tmp=0% + \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip% + \ifdim\p@getot@l<\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \ifdim\p@getot@l=\pagetotal% + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \else\hangafter=-\c@tmp\hangindent=\d@breite% + \fi% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% +} + + + + + + +\def\hpic{% + \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)} +} +\def\ihpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}% + {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)} +} +\def\iihpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]} +} +\def\iiihpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt% + \if@offset + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa t\c@pos=1\fi% + \if\@tempa b\c@pos=2\fi% + }% + \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \parindent=\d@tmpa% +} + + + + + + +\def\Rahmen(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole% + \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Schatten(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@shad=\d@shad\divide\c@shad by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp% + \advance\c@tmp by\c@shad% + \advance\c@tmpd by#1% + \advance\c@half by\c@shad% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}% + \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad% + \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad% +} + + +\def\Oval(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@tmpa=\the#1\divide\c@tmpa by2% + \c@tmpb=\the#2\divide\c@tmpb by2% + \begin{picture}(#1,#2)% + \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}% + \put(0.4,0.4){#3}% + \end{picture}% + \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt% +} + + +\def\Strich(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@dash=\d@dash\divide\c@dash by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \c@tmpc=#1\advance\c@tmpc by\c@whole% + \c@tmpd=#2\advance\c@tmpd by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Kasten(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl% + \c@tmpa=#1\advance\c@tmpa by\c@boxl% + \c@tmpb=#2\advance\c@tmpb by\c@boxl% + \c@tmp=#2% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(0,\c@boxl){\framebox(#1,#2){#3}}% + \put(\c@boxl,0){\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}% + \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}% + \end{picture}% + \global\advance\d@breite by\d@boxl% + \global\advance\d@hoehe by\d@boxl% +} + + + + + +\newbox\env@box% +\newdimen\d@envdp +\newcount\c@hsize +\newcount\c@envdp +\newdimen\d@envb + +\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}} +\long\def\@frameenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endframeenv{% + \egroup% + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \vskip\@wholewidth% + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + + +\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}} +\long\def\@shadowenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \advance\textwidth by-\d@shad% + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endshadowenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \d@tmpa=\d@envb + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp + \advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@shad =\d@shad \divide\c@shad by65536 + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \advance\d@tmpa by-2\d@shad + \c@xoff =\d@tmpa \divide\c@xoff by65536 + \advance\c@xoff by\c@shad \advance\c@xoff by-1 + \advance\d@envdp by\@wholewidth + \vskip\@halfwidth + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}% + \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}% + \end{picture}% + \vskip\@halfwidth +} + + +\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}} +\long\def\@dashenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\enddashenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \advance\d@envdp by\@wholewidth + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@dash=\d@dash \divide\c@dash by65536% + \c@whole=\@wholewidth \divide\c@whole by65536 + \c@half=\@halfwidth \divide\c@half by 65536 + \noindent\unitlength 1pt + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + +\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}% +\long\def\@ovalenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-4\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\endovalenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \@wholewidth=0.4pt + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by4\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@tmpa=\c@hsize \divide\c@tmpa by2% + \c@tmpb=\c@envdp \divide\c@tmpb by2% + \d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth + \c@xoff=\d@tmpa \divide\c@xoff by65536% + \advance\d@tmpa by\dp\env@box + \c@yoff=\d@tmpa \divide\c@yoff by65536% + \unitlength 1pt\noindent + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)} + \put(\c@xoff,\c@yoff){\box\env@box}% + \end{picture}% +} diff -r a592714b3c35 -r 102c40310142 final_sub/reference.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_sub/reference.bib Fri Feb 07 20:54:44 2020 +0900 @@ -0,0 +1,41 @@ +@article{cbc, + author = "Kaito TOKKMORI and Shinji KONO", + title = "Implementing Continuation based language in LLVM and Clang", + journal = "LOLA 2015", + month = "July", + year = 2015 +} + +@misc{xv6, +title = "{Xv6, a simple Unix-like teaching operating system}", +note = "(2019年10月19日閲覧)", +howpublished = {\url{https://pdos.csail.mit.edu/6.828/2019/xv6.html}}, +} + +@InProceedings{llvm, +author = {Chris Lattner and Vikram Adve}, +title = "{LLVM: A Compilation Framework for Lifelong Program Analysis \& Transformation}", +booktitle = "{Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04)}", +address = {Palo Alto, California}, +month = {Mar}, +year = {2004} +} + +@manual{gcc, +author = "{GNU Compiler Collection (GCC) Internals}", +title ="{http://gcc.gnu.org/onlinedocs/gccint/}", +} + +@article{GearsOS, + author = "伊波立樹 and 河野真治", + title = "Gears OS の並列処理", + journal = "琉球大学工学部情報工学科平成30年度学位論文(修士)", + year = 2018 +} + +@article{CbC2, + author = "宮城光希 and 河野真治", + title = "継続を基本とした言語による OS のモジュール化", + journal = "琉球大学工学部情報工学科平成31年度学位論文(修士)", + year = 2019 +} diff -r a592714b3c35 -r 102c40310142 final_sub/utf8.pdf Binary file final_sub/utf8.pdf has changed diff -r a592714b3c35 -r 102c40310142 final_sub/utf8.tex --- a/final_sub/utf8.tex Thu Feb 06 13:51:33 2020 +0900 +++ b/final_sub/utf8.tex Fri Feb 07 20:54:44 2020 +0900 @@ -1,7 +1,13 @@ \documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} +\usepackage[dvipdfmx]{graphicx} \usepackage{picins} \usepackage{fancyhdr} +\usepackage{listings} +\usepackage{caption} +\usepackage{latexsym} +\usepackage{url} +\usepackage{abstract} +\usepackage{float} \pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会} \rhead{} @@ -17,26 +23,82 @@ \setlength{\footskip}{0mm} \pagestyle{empty} +\usepackage{comment} +\usepackage{listings} +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize}, % + identifierstyle={\footnotesize}, % + commentstyle={\footnotesize\itshape}, % + keywordstyle={\footnotesize\bfseries}, % + ndkeywordstyle={\footnotesize}, % + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible}, % + xrightmargin=0zw, % + xleftmargin=1zw, % + aboveskip=1zw, + numberstyle={\scriptsize}, % + stepnumber=1, + numbersep=0.5zw, % + lineskip=-0.5ex, +} +\renewcommand{\lstlistingname}{Code} +\usepackage{caption} +\captionsetup[lstlisting]{font={small, tt}} + + + \begin{document} -\title{題名} -\author{学籍番号 氏名 {}{} 指導教員 : 指導教員名} -\date{} +\title{CbC による xv6 の FileSystem の書き換え} +\author{学籍番号 : 165723C 氏名 : 坂本昂弘 {}{} 指導教員 : 河野真治} +\date{2020年2月17日} \maketitle \thispagestyle{fancy} \section{section1} -\section{section2} +\section{xv6} +xv6\cite{xv6}とはMITのオペレーティングコースの教育目的で2006年に開発されたオペレーティングシステムである. +xv6 はオリジナルである v6 が非常に古いC言語で書かれている為, ANSI-Cに書き換えられ x86 に再実装された. xv6 はreadやwriteなどのsystemcall,プロセス,仮想メモリ,カーネルとユーザーの分離,割り込み,ファイルシステムなどUnixの基本的な構造を持っている. -\section{section3} +section{Continuation based C} +xv6 kernel上でinterfaceを実装する際,当研究室で開発されたプログラミング言語 Continuation based C (CbC)を用いる. +CbC は基本的な処理単位を CodeGearとして定義し,CodeGea間で遷移するようにプログラムを記述するC言語と互換性のあるプログラミング言語である. +CodeGearは返り値を持たない為,関数内で処理が終了すると呼び出し元の関数に戻ることがなく別のCodeGearへ遷移する. +以下のCode1にCodeGear遷移時のコード例を示す. +\lstinputlisting[label=cbcexample, caption=CodeGearの継続の例]{src/cbc_example.cbc} -\section{section4} +またCbCにおけるCodeGear間の継続にはスタックが使用できず,呼び出し元の環境などを持たない為軽量継続と呼ぶ. +現在CbCはCコンパイラであるGCC及びLLVMをバックエンドとしたclang上で実装されている. + +\section{context} +contextとは一連の実行が行われる際に使用されるCodeGearとDataGearの集合である. +従来のスレッドやプロセスに対応する.Context は接続可能な CodeGear, Data Gear のリスト. Data Gear を確保するメモリ空間,実行される Task への Code Gear 等を持っている. +CodeGearが別のCodeGearに遷移する際,必ずcontextを参照しenumで定義されたCodeGearの番号を指定し遷移する.ノーマルレベルで見た際のCodeGar,DataGerおよびcontextの関係を以下の図1に簡潔に示す. + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=65mm]{pic/context.pdf} + \end{center} + \caption{CodeGear,DataGear,contxtの関係図} + \label{fig:perl6buil} +\end{figure} + +\section{CbCのInterface} +先述した通り, CbCのInterface は Gears OS のモジュール化の仕組みである. Interface は呼び出しの引数になる Data Gear の集合であり,そこで呼び出される Code Gear のエントリである.呼び出される Code Gear の引数となる Data Gear はここで 全て定義される. Interface を定義することで複数の実装を持つことができる.このInterfaceは,JavaのInterfaceやHaskellの型クラスに対応し,導入することで仕様と実装に分けて記述することが出来る. + \thispagestyle{fancy} -\begin{thebibliography}{9} +%\begin{thebibliography}{9} -\bibitem{1} +\nocite{*} +\bibliographystyle{junsrt} +\bibliography{reference} -\end{thebibliography} +%\end{thebibliography} \end{document} \ No newline at end of file