LinuxTweetLinuxのしくみを読んだので感想を書きます。見る本の内容Linuxのカーネルの動きやハードウェアの動きを、コマンドやプログラムを通して実験し体感できる内容となってます。第1章ではコンピュータシステムについての概要を説明しています。この章に触れた内容を、後述する章で詳しく解説していきます。第2章では、ユーザモードで実現する機能について説明しています。ユーザモードのプロセスがどうやってカーネルの機能を呼び出しているか、システムコールの動きを追っていきます。第3章では、プロセス管理について説明しています。「まったく別のプログラムを生成」する際に呼ばれるexecve()について動きを追っていきます。第4章では、プロセススケジューラについての説明です。Linuxカーネルはいかにして複数のプロセスを同時に動かしているのか、コンテキストスイッチの様子を見ながら動きを追っていきます。優先度(nice())の動きも見ていきます。第5章では、メモリ管理についての説明です。プロセスがどのように物理/仮想メモリにアクセスしているのかを動作を追っていきます。仮想アドレスから物理アドレスへの変換に使われる「ページテーブル」、ファイルの領域を仮想アドレス空間上にメモリマップするという機能の「ファイルマップ」、プロセスのメモリ使用を節約するため、仮想メモリを割り当て物理メモリを割り当てない機能の「デマンドページング」、fork()時にプロセスコピーする際、ページテーブルだけをコピーする「コピーオンライト」、これらの動きを、本当に丁寧に実験プログラムを通して見ていきます。第6章では、記憶階層についてです。以下のような階層にあり、それぞれどのような特性でどのような使われ方をするのか見ていきます。レジスタキャッシュメモリメモリストレージデバイス第7章では、ファイルシステムについてです。ストレージデバイス内のデータにどうやってアクセスしているのかを、ファイルシステムを使用して実際にアクセスして動作を追っていきます。ファイルシステム不整合を防ぐ技術である「ジャーナリング」と「コピーオンライト」も詳しく動きを見ていきます。ファイル、ディレクトリ以外のファイルである「キャラクタデバイス」「ブロックデバイス」についての説明もあります。第8章では、ストレージデバイスとそれに関するカーネルの説明です。HDD/SSDの特性をプログラムを通して見ていきます。感想なんとなく理解していた知識が「実験」を通してクリアになりました。プロセス生成時、仮想メモリは確保するが物理メモリは確保されていない。いう現象は理解していました。これが行われているのかどうやって行われているのかそもそもこの現象の名前は?っていう感じでした。このLinuxのしくみを呼んでその疑問が氷解しました。この現象は「デマンドページング」といい無駄なメモリ消費を減らすための仕組みで、実際どうやって動くのかをCのプログラムを使って見ていきます。このようなあやふやな知識をきちんと整理してくれたのが「Linuxのしくみ」です。これ以外にもたくさん同じ経験をしました。それは「本の内容」にも書いた通り、プログラムを通して実際の動きを見て自分の目で確かめるから理解がしやすいのです。Linuxの入門書として非常に良くできていて、これはもし自分が新人研修とかをやることになったら教材にしたいくらいです。今回Cのプログラムを使って実験していましたが、これをGo言語で書き直して(Goで再現できないところもあるかもだけど)改めて実験したらさらに自分の理解が深まるなーと思ったのでやっていきたいです。僕のように中途半端な知識を持っている人にもおすすめできる良書です。実際の動きを図やプログラムで具体的に表してくれるのでスッと頭に入ります。Managerセッションマネージャー経由で使えるか試してみたOS自作入門してみた&やりきった2018年の振り返り&2019年やりたいことFirebaseを広め隊!講師のお仕事をやってます🔥なるべくお金をかけず個人開発をしていくには月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。