Linuxのしくみを読んで

読んだ本

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

https://www.amazon.co.jp/dp/477419607X/ref=cm_sw_em_r_mt_dp_U_uAxpDb2BB37CE

 

動機

文系で大学を出て、エンジニアになり実務経験はまだ一年半の自分にとって低レイヤーは未知の領域です。
 
一度転職しているのですが、前職ではシステム構築はベテランの仕事であり、自分はアプリケーション層のみ、言われた仕様通りの実装をするいわゆるコードモンキーでした。
 
オンプレシステムだったのでlinux(Cento OS)を使う機会自体はありましたが、周りに詳しい人はおらず、最低限の知識しか持っていませんでした。(上司はviを使いながら矢印キーで移動してたぐらい)
 
一年目の終わりに転職して自社サービスを作る会社でバックエンドを担当しているのですが、新しいことだらけで業務についていくのも大変でした。今もですが・・・
 
現在業務ではGCPを使っています。
cloudサービスでは直接linuxを扱う場面は少なく隠蔽されていることが大半ですが、
やっている領域はインフラに近くなってきたこと、具体的にはk8sネットワークやDNS、コンテナなど基礎知識がないと厳しい領域を扱うことが多くなり、
その辺の知識が新入社員研修レベルでは流石にやばいと思い、
大学の同期で優秀なエンジニアから薦めてもらった[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識を読むことにしました。
 

内容

冒頭でも説明されているのですが、比較的浅めの知識の方が読んでも概要は掴めるような内容だと思います。
osのカーネルモード、ユーザーモードの違いなどから始まり、プロセスの仕組み、CPU、メモリ、ストレージについて概念を説明してあります。
度々図やC言語で実装を伴った説明があり、コードを読みつつベンチマークを確認できるので、抽象度と具体度がちょうどいい本だと感じました。
全部のコードを理解できれば良いのですが、この辺に詳しくない方は概念を追うだけでも十分学ぶことは多いと思います。
 

ポイント

新卒研修で大雑把な話はわかっているつもりでしたが、
- プロセススケジューラー
- メモリキャッシュ、メモリ、ストレージの関係、特にページテーブルの考え方
などは今まで知らなかったことが多く勉強になりました。
 

感想

正直なところ今のところほぼ業務では役立っていませんが、今後表面的な策では解決できない問題が起きた時のアプローチの幅が増えるのではないかと期待しています。
あとこの本を読んでよかった点として、他の低レイヤー関連の本を読むハードルが低くなったと感じています。
現在は『

マスタリング TCP IP 

』『

30日でできる Os自作入門

』を少しずつ読みすすめています。
インフラ関連への興味がかなり湧いてきたので、今後はバックエンドよりもdevops系を優先的に学んでいきたいというお気持ちです。