PDF: peta-okechan/xv6textjp
- [xv6 #0] xv6ソースコードリーディングの準備 継続的にブログを更新するネタとしてxv6という教育用OSのソースコードを読んでいき、その感想をメモ書き程…
- [xv6 #1] Chapter 0 - Operating system interfaces テキストの7,8ページ
概要
xv6はユーザー空間とカーネル空間に分かれている。
ユーザー空間のプロセ…
- [xv6 #2] Chapter 0 - Operating system interfaces - Code: Processes and memory テキストの8〜10ページ
概要
xv6のプロセスは、命令とデータとスタックを置くためのユーザー空間のメ…
- [xv6 #3] Chapter 0 - Operating system interfaces - Code: File descriptors テキストの10〜12ページ
概要
ファイルディスクリプタそのものは(小さな)整数値であり、カーネルが…
- [xv6 #4] Chapter 0 - Operating system interfaces - Code: Pipes テキストの12〜14ページ
本文
pipeは、ファイルディスクリプタの組(一方は読み込み、もう一方は書き…
- [xv6 #5] Chapter 0 - Operating system interfaces - Code: File system テキストの14〜15ページ
本文
xv6は、データファイル(解釈されていない生のバイト列)と、ディレクト…
- [xv6 #6] Chapter 0 - Operating system interfaces - Real world テキストの15〜16ページ
本文
Unixを操作するための、標準のファイルディスクリプタ、パイプ、便利な…
- [xv6 #7] Chapter 1 - The first process テキストの17ページ
本文
この章では、xv6が起動し始めてから最初のプロセスを生成するまでの間に、何が…
- [xv6 #8] Chapter 1 - The first process - Paging hardware テキストの17〜18ページ
本文
xv6はIntel 80386以降のx86プロセッサを積んだPCで動作する。
そしてxv6に…
- [xv6 #9] Chapter 1 - The first process - Address space overview テキストの18〜19ページ
本文
それぞれのプロセスにそのプロセス専用のメモリの見え方(アドレス空間と呼…
- [xv6 #10] Chapter 1 - The first process - Code: entry page table テキストの19〜20ページ
本文
PCの電源が入ったとき、初期化処理が実行され(BIOSレベルの話)、そし…
- [xv6 #11] Chapter 1 - The first process - Address space details テキストの20〜21ページ
本文
entryルーチンによって作られたページテーブルは、カーネルのCコードを実行…
- [xv6 #12] Chapter 1 - The first process - Code: creating an address space テキストの21〜22ページ
本文
main関数は、カーネルを実行するために必要とされるKERNBASEより上位へ…
- [xv6 #13] Chapter 1 - The first process - Physical memory allocation テキストの22ページ
本文
カーネルは、ページテーブル・ユーザメモリの処理・カーネルのスタックやパイプ…
- [xv6 #14] Chapter 1 - The first process - Code: Physical memory allocator テキストの22〜23ページ
本文
アロケータのデータ構造は、割り当て可能な物理メモリページの空きリス…
- [xv6 #15] Chapter 1 - The first process - Code: Process creation テキストの23〜25ページ
本文
この節では、xv6がどうやって最初のプロセスを生成するかについて述べる。
…
- [xv6 #16] Chapter 1 - The first process - Code: Running a process テキストの25〜27ページ
本文
最初のプロセスの状態が準備できたら、実行することができる。
main関数がu…
- [xv6 #17] Chapter 1 - The first process - Exec テキストの27ページ
本文
第0章で見たように、execは現在のプロセスのメモリとレジスタを新しいプログラ…
- [xv6 #18] Chapter 1 - The first process - Code: exec テキストの27〜29ページ
本文
システムコールが到達したとき(第2章でどうやってそれが起きるか説明する…
- [xv6 #19] Chapter 1 - The first process - Real world テキストの29〜30ページ
本文
多くのオペレーティングシステムは、そのプロセスのコンセプトを採用さ…
- [xv6 #20] Chapter 1 - The first process - Exercises テキストの30ページ
本文
1. swtchにブレークポイントをセットしなさい。
gdbのstepiでswtchのforkretへ…
- [xv6 #21] Chapter 2 - Traps, interrupts, and drivers テキストの31ページ
本文
プロセスの実行中、CPUは通常のプロセッサループを実行する。
通常のプロセッサ…
- [xv6 #22] Chapter 2 - Traps, interrupts, and drivers - Systems calls, exceptions, and interrupts テキストの31〜32ページ
本文
ユーザプログラムはシステムコールを使って、第1章の最後で見たように、OS…
- [xv6 #23] Chapter 2 - Traps, interrupts, and drivers - X86 protection テキストの32〜33ページ
本文
x86は4つの保護レベルを持つ。
0番(一番権限が高い)から3番(一番権限が…
- [xv6 #24] Chapter 2 - Traps, interrupts, and drivers - Code: The first system call テキストの33〜34ページ
本文
前の章は、initcode.Sがシステムコールを呼び出すところで終わった。
もう…
- [xv6 #25] Chapter 2 - Traps, interrupts, and drivers - Code: Assembly trap handlers テキストの34〜36ページ
本文
xv6は、プロセッサにトラップを引き起こさせるようなint命令に遭遇したとき…
- [xv6 #26] Chapter 2 - Traps, interrupts, and drivers - Code: C trap handler テキストの36ページ
本文
我々は前節で、どのハンドラもトラップフレームをセットアップし、そしてCの関…
- [xv6 #27] Chapter 2 - Traps, interrupts, and drivers - Code: System calls テキストの36〜37ページ
本文
システムコールの場合、trap関数はsyscall関数を呼ぶ。
syscall関数は…
- [xv6 #28] Chapter 2 - Traps, interrupts, and drivers - Code: Interrupts テキストの37〜39ページ
本文
マザーボード上のデバイスは、割り込みを生成することが出来、xv6はそれら…
- [xv6 #29] Chapter 2 - Traps, interrupts, and drivers - Drivers テキストの39ページ
本文
ドライバは、個別のデバイスを管理するOSの中のコードの欠片である。
ドライバ…
- [xv6 #30] Chapter 2 - Traps, interrupts, and drivers - Code: Disk driver テキストの39〜41ページ
本文
IDEデバイスは、PCの標準IDEコントローラに接続されたディスクへのアクセス…
- [xv6 #31] Chapter 2 - Traps, interrupts, and drivers - Real world テキストの41〜42ページ
本文
実に様々なPCマザーボード上のすべてのデバイスをサポートすることは、大仕…
- [xv6 #32] Chapter 2 - Traps, interrupts, and drivers - Exercises テキストの42ページ
本文
1. 最初のシステムコールをキャッチするために、syscall()の最初の命令にブレー…
- [xv6 #33] Chapter 3 - Locking テキストの43ページ
本文
xv6は、マルチプロセッサ上で実行され、コンピュータは複数のCPUで独立してコー…
- [xv6 #34] Chapter 3 - Locking - Race conditions テキストの43〜45ページ
本文
なぜロックが必要か、その例として、xv6におけるIDEのディスクのように、い…
- [xv6 #35] Chapter 3 - Locking - Code: Locks テキストの45〜46ページ
本文
xv6は、spinlock構造体としてロックを表現する。
その構造体のなかで重要な…
- [xv6 #36] Chapter 3 - Locking - Modularity and recursive locks テキストの46ページ
本文
システムは、モジュール式の抽象概念を用いてクリーンさを保つよう設計される。…
- [xv6 #37] Chapter 3 - Locking - Code: Using locks テキストの46〜47ページ
本文
xv6は、競合状態を避けるためにロックを利用して慎重にプログラムされてい…
- [xv6 #38] Chapter 3 - Locking - Lock ordering テキストの47ページ
本文
カーネルを通るコードパスが、いくつかのロックを取らなければならない場合、全…
- [xv6 #39] Chapter 3 - Locking - Interrupt handlers テキストの48ページ
本文
xv6は、あるCPUで実行される割り込みハンドラを、他のCPUで実行され同じデータ…
- [xv6 #40] Chapter 3 - Locking - Memory ordering テキストの48〜49ページ
本文
この章では、プロセッサが、プログラムの中で現れる順番で一連の命令を…
- [xv6 #41] Chapter 3 - Locking - Real world テキストの49ページ
本文
ロックを使ったプログラミングは未だ難しくやりがいがあるので、同期プリミ…
- [xv6 #42] Chapter 3 - Locking - Exercises テキストの49〜50ページ
本文
1. acquire関数からxchg命令を取り除きなさい。
そしてxv6を実行したと…
- [xv6 #43] Chapter 4 - Scheduling テキストの51ページ
本文
あらゆるOSは、コンピュータが持っているプロセッサの数より多くのプロセス…
- [xv6 #44] Chapter 4 - Scheduling - Multiplexing テキストの51ページ
本文
xv6は、次の多重化方法を採用する。
あるプロセスがディスクへのリクエスト…
- [xv6 #45] Chapter 4 - Scheduling - Code: Context switching テキストの51〜53ページ
本文
図4-1で示されるように、プロセスを切り替えるために、xv6はローレベル…
- [xv6 #46] Chapter 4 - Scheduling - Code: Scheduling テキストの53〜55ページ
本文
前の節では、swtchのローレベルにおける詳細について見た。
では、swtc…
- [xv6 #47] Chapter 4 - Scheduling - Sleep and wakeup テキストの55〜57ページ
本文
ロックは、CPU同士やプロセス同士がお互いに干渉し合うのを避けるのに役…
- [xv6 #48] Chapter 4 - Scheduling - Code: Sleep and wakeup テキストの58〜59ページ
本文
xv6におけるsleepとwakeupの実装について見てみよう。
sleepに現在のプ…
- [xv6 #49] Chapter 4 - Scheduling - Code: Pipes テキストの59〜60ページ
本文
この章の最初のほうで扱ったシンプルなキューは、まるでおもちゃである…
- [xv6 #50] Chapter 4 - Scheduling - Code: Wait and exit テキストの60ページ
本文
sleepとwakeupは、条件が整うまで待つ事が必要な、様々な状況で使用され得る…
- [xv6 #51] Chapter 4 - Scheduling - Real world テキストの60〜61ページ
本文
xv6のスケジューラは、各プロセスを順番に実行するだけという簡単なスケ…
- [xv6 #52] Chapter 4 - Scheduling - Exercises テキストの62ページ
本文
1. sleepはデッドロックを回避するために lk != &ptable.lock であるか…
- [xv6 #53] Chapter 5 - File system テキストの63ページ
本文
ファイルシステムの目的は、データを整理し保管することである。
ファイル…
- [xv6 #54] Chapter 5 - File system - Overview テキストの63ページ
本文
xv6のファイルシステムの実装は、図5-1のように、6層で構成される。
一番下…
- [xv6 #55] Chapter 5 - File system - Buffer cache Layer テキストの64ページ
本文
バッファキャッシュには2つの仕事がある。
(1) あるブロックのメモリ上のコ…
- [xv6 #56] Chapter 5 - File system - Code: Buffer cache テキストの65〜66ページ
本文
バッファキャッシュは、バッファの2重リンクリスト(次の要素だけでなく…
- [xv6 #57] Chapter 5 - File system - Logging layer テキストの67ページ
本文
ファイルシステムのデザインにおけるとても興味深い側面は、クラッシュリカ…
- [xv6 #58] Chapter 5 - File system - Log design テキストの67〜68ページ
本文
ログは、ディスクの一番最後の決まった場所にある。
データブロック群…
- [xv6 #59] Chapter 5 - File system - Code: logging テキストの68〜69ページ
本文
システムコールにおけるログの典型的な使い方は次のような感じである。
…
- [xv6 #60] Chapter 5 - File system - Inodes テキストの69〜70ページ
本文
inodeという用語は関連する2つの意味を持つ。
ひとつは、ファイルのサ…
- [xv6 #61] Chapter 5 - File system - Code: Block allocator テキストの70ページ
本文
inodeが指すブロックは、割り当てられていなければならない。
xv6のブロッ…
- [xv6 #62] Chapter 5 - File system - Code: Inodes テキストの70〜71ページ
本文
新しいinodeを割り当てるために(例えば、ファイルを作るときなど)、xv…
- [xv6 #63] Chapter 5 - File system - Code: Inode contents テキストの71〜73ページ
本文
ディスク上のinodeの構造を表すdinode構造体は、サイズとブロック番号の…
- [xv6 #64] Chapter 5 - File system - Code: directory layer テキストの71〜73ページ
本文
ディレクトリの層はシンプルである。
なぜならディレクトリは、今まで…
- [xv6 #65] Chapter 5 - File system - Code: Path names テキストの73〜74ページ
本文
ディレクトリのように、パス名を実現するために必要となる追加のコード…
- [xv6 #66] Chapter 5 - File system - File descriptor layer テキストの74ページ
本文
Unixのインターフェイスの一つのクールな側面は、多くのリソース(コンソー…
- [xv6 #67] Chapter 5 - File system - Code: System calls テキストの74ページ
本文
低レイヤが提供する関数を使って実装される多くのシステムコールは些細なも…
- [xv6 #68] Chapter 5 - File system - Real world テキストの76〜77ページ
本文
実際のOSにおけるバッファキャッシュは、xv6のものより複雑で興味深いが…
- [xv6 #69] Chapter 5 - File system - Exercises テキストの77ページ
本文
1. どういう場合にballocでpanicが起きるか? それを回復することはできるか…
- xv6のテキストの和訳をPDF化した 要望があったからでもあるけど、PDFもあった方が便利かなと思ったのでやってみた。
peta-okechan/xv6text…
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…