[試して理解]Linuxのしくみ~実験と図解で学ぶOSとハードウェアの基礎知識実験プログラム
Ubuntu20.04において動作する、本書において書かれたCプログラムをGoやPythonに移植して、かつ、コメントを日本語にしたものを各章のmiscディレクトリに入れています。一部についてはグラフ描画もしてくれるように変更しました。
必要なパッケージは以下の通り。
binutils, build-essential, golang, python3-matplotlib, python3-pil, fonts-takao
- hello.go: hello.cに対応するGoプログラム。
go build hello.go
でビルドできる - inf-loop: loop.cに対応するPythonプログラム
- syscall-inf-loop: ppidloop.cに対応するPythonプログラム
- fork: fork.cに対応するPythonプログラム
- fork-and-exec: fork-and-exec.cに対応するPythonプログラム
以下、1CPU上でschedプログラムを動かした結果を示すグラフです。順番に1並列、2並列、3並列のものです。
- cow: cow.cに対応するPythonプログラム
- demand-paging: demand-paging.cに対応するPythonプログラム
- mmap.go: mmap.cに対応するGoプログラム。
go build mmap.go
でビルドできる - filemap.go: filemap.cに対応するGoプログラム。
go build filemap.go
でビルドできる - segv.go: segv.cに対応するGoプログラム。
go build segv.go
でビルドできる
以下、cacheプログラムを1CPUコアあたりのL1d,L2,L3キャッシュ容量がそれぞれ32KB,512KB,4MBのCPU上で動かした結果を示すグラフです。