「試して理解 Linux のしくみ」実験用リポジトリ
各種リンク
- 書籍サイト
- 試して理解 Linux のしくみ - 実験と図解で学ぶ OS とハードウェアの基礎知識(技術評論者、2018)
- リポジトリ
実行環境
Vagrant で構築した Ubuntu の仮想環境上でサンプルコードを実行した。
- OS
- Host: macOS Big Sur 11.6
- Guest: Ubuntu 20.04.3 LTS
- Software for VM
- VirtualBox v6.1.32
- Vagrant 2.2.19
- Vagrant plugins
- vagrant-vbguest 0.3.0
- vagrant-disksize 0.1.3
- ディスク容量を設定するためのプラグイン
書籍の「はじめに」では、挙動が変わるために仮想マシン(VM)上ではなく実機上で Ubuntu を動作させることを推奨しているが、Ubuntu 用の実機がないので VM で妥協した。また、検証環境としては、Docker コンテナよりは VM が良いと判断した。
環境構築
- VM の起動
vagrant up
したディレクトリが VM の/vagrant
配下にマウントされる。
cd linux-in-practice/
vagrant init ubuntu/focal64
vagrant up
- VM 環境に入り、マウントの確認。その後、実験に必要なパッケージのインストール。
# ----- ローカル環境 -----
vagrant status # VM が起動中であることを認確
vagrant ssh # VM の中に入る
# ----- VM 環境 -----
cd /vagrant
ls
install.sh Makefile note README.md sample-code src Vagrantfile
# マウントされてることを確認
sh install.sh
- VM の停止
vagrant halt
VM のスペック
Vagrantfile
でマシンスペックの設定が行える。ディスクサイズのように一部プラグインが必要な部分もある。
全体
- CPU
- Intel(R) i9-9880H 2.30GHz
- 物理プロセッサ数:1(ハイパースレッディング on)
- コア数:2
- RAM
- 2 GiB
- DISK
- 100 GiB
CPU、メモリの確認
サーバ監視用の htop
コマンドで簡単にサーバの CPU のコア数とメモリ容量が確認できる。
# VM 環境
$ htop
- htop 実行時の様子
CPU の確認:物理プロセッサ数、コア数
CPU のハイパースレッディングが on の場合、物理プロセッサ数と OS が認識するプロセッサ数(コア数)が合わないので注意。
# VM 環境
# ハードウェアの確認
$ sudo lshw | grep -i cpu
*-cpu
product: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
bus info: cpu@0
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp x86-64 constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d arch_capabilities
# 物理プロセッサ数:id が 1 種類のため 1 個
$ cat /proc/cpuinfo | grep "physical id"
physical id : 0
physical id : 0
# 仮想プロセッサ数:OS 側が何個の CPU を認識しているか確認する:2 つの CPU を認識している
$ cat /proc/cpuinfo | grep processor
processor : 0
processor : 1
# コア数:仮想プロセッサ数の結果と一致するはず
vagrant@vagrant:~$ cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 2
cpu cores : 2