本项目内容为 Linux 是怎样工作的 实验X图解 直击Linux核心工作原理 的实验程序
本项目中的代码以 Ubuntu 20.04 为运行环境,将书中所写的 C 程序移植到 Go 和 Python 中,同时对一部分代码进行了修改,使其也能进行图表绘制。
必须依赖的软件包如下所示:
binutils, build-essential, golang, python3-matplotlib, python3-pil, fonts-takao
- hello.py
- 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 程序。
- sched: 是 sched.c 对应的 Python 程序,并将结果以 "sched-<并发数>.jpg" 的文件名保存。
- sched_nice.c
以下是在单个 CPU 上运行 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
命令进行编译。 - vsz-rss.sh
- cache.go: 是 cache.c 对应的 Go 语言实现,可以使用
go build cache.go
命令进行编译。 - read-twice.sh
- write.sh
以下是当 CPU 的 L1d、L2、L3 高速缓存容量分别为 32KB,512KB,4MB 时,cahe 程序运行结果的图表。