@numa08 猫耳帽子の女の子

明日目が覚めたら俺達の業界が夢のような世界になっているとイイナ。

[試して理解]Linuxのしくみ を読んだ

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

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

普段使っているOS, Linux がどういう仕組みで成り立ち動作をしているのかをデバイスのレイヤーを含めて解説してくれている本。

以前、「Androidを支える技術I, II」を読んだときにLinuxに関する知識が全然足りてないなぁと感じたこともあって手に取った。

numa08.hateblo.jp

numa08.hateblo.jp

Androidを支える技術II」の後半では、アプリケーションのプロセス管理の仕組みを解説する章がある。その中では、Linuxのプロセス管理がどうなっているのかを解説した上で、Androidがどういうふうにその仕組をカスタマイズしたのかの解説が行われていた。この章を始めとして、「Androidを支える技術」の本の中では、AndroidがLinuxOSであるという仕組み上、Linuxの仕組みを知っておいたほうが理解が進むなと感じる章立てとなっていた。

自分はLinuxをわりと日常の中でもよく利用している。アプリケーションの運用こそは最近は行っていないけれど、1年前は業務の中でやっていた。他にもアプリケーションの開発環境をLinux上で行うことはよくあるし、今もやっている。その中で、よく発生するのが性能低下であったり、可用性の確保をしなければならないシーンだ。

アプリケーションの性能が低下したときに、一体何が起こっているのかをまずは解析しなければならない。幸い、Linuxには様々なOSの状態を表示するためのコマンドが揃っているが、それらが表示してくれる数字を理解するのはまだ人間の仕事だ。freeコマンドでメモリの使用量が出るが、様々な数字があって何を意味しているのかを知らなければならない。sarコマンドで様々な数字が出るが、一体この数字をどう読んで何をしなければならないのかを知っておかなければならない。

この本は、そう言ったアプリケーションの運用をする上でLinuxがどういう仕組でOSを動作させ、プロセスを実行し、デバイスを利用しているのかを丁寧に解説してくれる本だ。コマンドの利用方法ではなく、仕組みの解説を行うための本となっている。OSを動作させ、プロセスを実行し、システムコールを発行し処理して、デバイスにアクセスを行うことはそれだけでオーバーヘッドとなりシステムの性能低下を招く。従って、まずは仕組みを正しく理解しておくことで、どこでどういうオーバーヘッドが発生し、何を利用すればそれを発見することができるのかが分かる。発見ができたら次は対策だ。

この本は、更にサンプルコードを利用した実験もある。システムコールの発行やプロセスの実行、デバイスアクセスと言った動作を自分の書いたコードを使って実験し、観測することができる。言語としては主にC言語、ときどきPythonまたはシェルスクリプトと言った感じ。言語に関する詳しい解説はないので、一応C言語くらいは利用できる状態で読みたい本だ。

また、この本は良くも悪くも初心者向けの本だけれどLinuxを全く触ったことが無い場合にはしんどいかもしれない。基本的なファイル操作やエディタの操作、パッケージ管理ソフトの導入に関する部分については知っておいたほうが良さそう。そして、この本を読んでさらに次のレベルにステップアップをしたいと思える内容だった。

本の後ろの方に、次に読むべき本がいくつかリストアップされていたので手を出してみたい。

Linuxを使ってアプリケーションの開発や運用を行う上で、絶対に読んでおきたい本だった。