投稿日
2012/2/6 月曜日
テキストの7,8ページ
xv6はユーザー空間とカーネル空間に分かれている。
ユーザー空間のプロセスからOSのインターフェースを通してカーネルが提供するサービスを呼び出すことをシステムコールという。
そしてこれはプロセスがユーザー空間とカーネル空間で交互に実行される事を示す。
カーネルはCPUにハードウェア実装された保護機構を使って、ユーザー空間のプロセスが自分自身のメモリ領域へのみアクセス可能なようにする。
xv6のシステムコール一覧
fork() プロセスの生成 exit() 現在のプロセスを終了 wait() 子プロセスを待つ kill(pid) pidのプロセスを終了 getpid() 現在のプロセスのpidを返す sleep(n) 単位時間 x nだけ寝る exec(filename, *argv) ファイルを読み込んで実行する sbrk(n) プロセスのメモリをnバイト増やす open(filename, flags) ファイルを開く(flagsは読み書きフラグ) read(fd, buf, n) 開いてるファイルからnバイト読み込んでbufに入れる write(fd, buf, n) 開いてるファイルにbufの内容をnバイト書き込み close(fd) 開いてたファイルを解放する dup(fd) fdを複製する pipe(p) パイプを生成してpのfdを返す chdir(dirname) 現在のディレクトリを変更する mkdir(dirname) 新しいディレクトリを作成する mknod(name, major, minor) デバイスファイルを作成する fstat(fd) 開いてるファイルの情報を返す link(f1, f2) ファイルf1の別名f2を作成 unlink(filename) ファイルを削除する
シェルはユーザー空間で実行される通常のプログラムであってカーネルの一部ではない。
内部でシステムコールを使ってるだけである。
だからシェルを入れ替えるのは簡単である。
世の中のUnixベースのシステムは多くのシェルの選択肢を持つ。
xv6のシェルはUnix Bourne shellを元にしたシンプルなものである。
Chapter 0のさわりって事もあって、OSのコード書いたり読んだりしたことなくても何となく知ってる内容でした。
読み違えてなければxv6のシステムコールは上記で全てなので、僕でも中身を理解できそうかもと思えてきました。
一日2ページぐらいのペースでテキストを読み進められればいいなぁ(*´∀`*)ポワワ
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…