なにこれ
この本を読んだメモ。
[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識
どんな本?
OSやハードウェアについて実際に手を動かして挙動を確認して学習していく本。
図解が多く、実際に試すので初学者にも理解できる。
以下は読みながらメモ
第1章 コンピュータシステムの概要
これからどんなことを学習していくのかを述べている章
この章だけでも知らないこと結構出てきた。。。
そういう知らないことを学んでいければ良いなと期待
- CPUにはユーザモードとカーネルモードがある
- Linuxではデバイス操作する処理をデバイスドライバというプログラムを介してアクセスする
など
第2章 ユーザモードで実現する機能
各種プロセスはプロセス生成、ハードウェア操作などカーネルの助けがいるときにはシステムコールによってカーネルに処理を依頼する。
システムコール呼び出しの様子はstraceコマンドというやつがいるので、そいつで見ることが出来る。
第3章 プロセス管理
簡単なプロセス生成の流れを追います。
clangでfork() execve() の関数をつかって実験します。
読んで実験した段階だとまだ何に聞いてくるのかそこまでイメージできず。。。
第4章 プロセススケジューラ
Linuxカーネルは複数プロセスを同時に動作さえるためのプロセススケジューラという機能をもっている。
このプロセススケジューラの挙動をプログラムからログを出力し、グラフにして確認する過程がおもしろい。
そして地味に勘違いしていたniceを正せた。ありがたや。
第5章 メモリ管理
タイトルの通りメモリ管理の話。
ムッチャ勉強になった。デマンドページングとかコピーオンライトとか知らないことが沢山あった。
sar コマンドが面白いぞということにこの章でやっと気づけた。
第6章 記憶階層
主にレジスタ、キャッシュメモリ、メモリ関連の話し。
CPUとメモリがどうやって動いているのかの入門の入門みたいな話しですね。
第7章 ファイルシステム
もしもファイルシステムが存在しなかったらどうな?という例を出してファイルシステムの必要性を認識させる。
その後ファイルシステムの説明をしている。この章は特にイメージしやすい。
第8章 ストレージデバイス
ここもハードウェア。HDD, SSDの仕組みについて解説している。
また、シーケンシャルアクセスとランダムアクセスの違いの等関連についても説明がある。
なんでSSDがHDDより高速なのかについても知れる。
まとめ
本書を通してLinuxがよしなにやってい事、ハードウェアがどんなことをしているか?ということが分かった気になれる。
以前に取り組んだコンピュータシステムの理論と実装より簡単に書かれていてイメージしやすく、より入門と行った感じだった。
また、単に説明だけではなくプログラムを作成する時にパフォーマンスとして気をつけるポイントも散りばめられていて、プログラムを書くうえで意識しておく事にも言及しているのが良い。
低レイヤやパフォーマンスを意識し始めるエンジニアに入門としてオススメしたいなと思えた本でした。
それ以上に「コンピュータすごいな。もっと知りたいな。」と思えて学習意欲を手に入れられることが素晴らしいとおもいました!