Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/satoru-takeuchi/linux-in-practice
https://github.com/satoru-takeuchi/linux-in-practice
Last synced: 16 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/satoru-takeuchi/linux-in-practice
- Owner: satoru-takeuchi
- License: gpl-2.0
- Created: 2018-01-18T21:38:05.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2021-12-25T09:54:09.000Z (almost 3 years ago)
- Last Synced: 2024-10-14T19:09:16.389Z (28 days ago)
- Language: C
- Size: 92.8 KB
- Stars: 404
- Watchers: 9
- Forks: 121
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
[[試して理解]Linuxのしくみ~実験と図解で学ぶOSとハードウェアの基礎知識](http://gihyo.jp/book/2018/978-4-7741-9607-7)実験プログラム
# おまけ
Ubuntu20.04において動作する、本書において書かれたCプログラムをGoやPythonに移植して、かつ、コメントを日本語にしたものを各章のmiscディレクトリに入れています。一部についてはグラフ描画もしてくれるように変更しました。
必要なパッケージは以下の通り。
binutils, build-essential, golang, python3-matplotlib, python3-pil, fonts-takao
## 2章
- [hello.go](02-syscall-and-non-kernel-os/misc/hello.go): [hello.c](02-syscall-and-non-kernel-os/hello.c)に対応するGoプログラム。`go build hello.go`でビルドできる
- [inf-loop](02-syscall-and-non-kernel-os/misc/inf-loop): [loop.c](02-syscall-and-non-kernel-os/loop.c)に対応するPythonプログラム
- [syscall-inf-loop](02-syscall-and-non-kernel-os/misc/syscall-inf-loop): [ppidloop.c](02-syscall-and-non-kernel-os/ppidloop.c)に対応するPythonプログラム## 3章
- [fork](03-process-management/misc/fork): [fork.c](03-process-management/fork.c)に対応するPythonプログラム
- [fork-and-exec](03-process-management/misc/fork-and-exec): [fork-and-exec.c](03-process-management/fork-and-exec.c)に対応するPythonプログラム## 4章
- [sched](04-process-scheduler/misc/sched): [sched.c](04-process-scheduler/sched.c)に対応するPythonプログラム。結果をグラフ化にして"sched-<並列度>.jpg"に保存。
以下、1CPU上でschedプログラムを動かした結果を示すグラフです。順番に1並列、2並列、3並列のものです。
![sched-1.jpg](04-process-scheduler/misc/sched-1.jpg)
![sched-2.jpg](04-process-scheduler/misc/sched-2.jpg)
![sched-3.jpg](04-process-scheduler/misc/sched-3.jpg)## 5章
- [cow](05-memory-management/misc/cow): [cow.c](05-memory-management/cow.c)に対応するPythonプログラム
- [demand-paging](05-memory-management/misc/demand-paging): [demand-paging.c](05-memory-management/demand-paging.c)に対応するPythonプログラム
- [mmap.go](05-memory-management/misc/mmap.go): [mmap.c](05-memory-management/mmap.c)に対応するGoプログラム。`go build mmap.go`でビルドできる
- [filemap.go](05-memory-management/misc/filemap.go): [filemap.c](05-memory-management/filemap.c)に対応するGoプログラム。`go build filemap.go`でビルドできる
- [segv.go](05-memory-management/misc/segv.go): [segv.c](05-memory-management/segv.c)に対応するGoプログラム。`go build segv.go`でビルドできる# 6章
- [cache.go](06-storage-hierarchy/misc/cache.go): [cache.c](06-storage-hierarchy/cache.c)に対応するGoプログラム。`go build cache.go`でビルドできる。
以下、cacheプログラムを1CPUコアあたりのL1d,L2,L3キャッシュ容量がそれぞれ32KB,512KB,4MBのCPU上で動かした結果を示すグラフです。
![cache.jpg](06-storage-hierarchy/misc/cache.jpg)