changeset 34:ed7a29ed96b7

update
author mir3636
date Thu, 07 Feb 2019 10:22:21 +0900
parents a531f74c8ec6
children 52521f53f29d
files paper/master_paper.pdf paper/xv6.tex
diffstat 2 files changed, 33 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
Binary file paper/master_paper.pdf has changed
--- a/paper/xv6.tex	Wed Feb 06 20:54:15 2019 +0900
+++ b/paper/xv6.tex	Thu Feb 07 10:22:21 2019 +0900
@@ -17,6 +17,39 @@
 ユーザープログラムがシステムコールを呼び出すと、ハードウェアが特権レベルを上げ、カーネルのプログラムが実行される。
 この特権レベルを持つプロセッサの状態をカーネルモード、特権のない状態をユーザーモードという。
 
+\subsection{システムコール}
+
+ユーザープログラムがカーネルの提供するサービスを呼び出す際にはシステムコールを用いる。
+ユーザープログラムがシステムコールを呼び出すと、トラップが発生する。
+トラップが発生すると、ユーザープログラムは中断され、カーネルに切り替わり処理を行う。
+ソースコード \ref{syscall} は xv6 のシステムコールのリストである。
+
+\begin{lstlisting}[frame=lrbt,label=syscall,caption={\footnotesize xv6 のシステムコールのリスト}]
+static int (*syscalls[])(void) = {
+        [SYS_fork]    =sys_fork,
+        [SYS_exit]    =sys_exit,
+        [SYS_wait]    =sys_wait,
+        [SYS_pipe]    =sys_pipe,
+        [SYS_read]    =sys_read,
+        [SYS_kill]    =sys_kill,
+        [SYS_exec]    =sys_exec,
+        [SYS_fstat]   =sys_fstat,
+        [SYS_chdir]   =sys_chdir,
+        [SYS_dup]     =sys_dup,
+        [SYS_getpid]  =sys_getpid,
+        [SYS_sbrk]    =sys_sbrk,
+        [SYS_sleep]   =sys_sleep,
+        [SYS_uptime]  =sys_uptime,
+        [SYS_open]    =sys_open,
+        [SYS_write]   =sys_write,
+        [SYS_mknod]   =sys_mknod,
+        [SYS_unlink]  =sys_unlink,
+        [SYS_link]    =sys_link,
+        [SYS_mkdir]   =sys_mkdir,
+        [SYS_close]   =sys_close,
+};
+\end{lstlisting}
+
 \subsection{プロセス}
 プロセスとは、カーネルが実行するプログラムの単位である。
 xv6 のプロセスは、ユーザー空間メモリとカーネル用のプロセスの状態を持つ空間で構成されている。
@@ -49,10 +82,6 @@
 絶対パスである "/dir1/dir2/file1" というパスは root ディレクトリ内の dir1 という名前のディレクトリ内の dir2 という名前のディレクトリ内の file というデータファイルを指す。
 相対パスである "dir2/file2" のようなパスは、現在のディレクトリ内の dir2 という名前のディレクトリ内の file というデータファイルを指す。
 
-\subsection{システムコール}
-
-ユーザープログラムがカーネルの提供するサービスを呼び出す際にはシステムコールを用いる。
-
 \section{xv6-rpi の CbC 対応}
 
 オリジナルの Xv6 は x86 アーキテクチャで実装されたものだが、xv6-rpi は Raspberry Pi 用に実装されたものである。