概要
[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】
の 第4章 メモリ管理システム まで読んだので自分なりに理解した部分をメモ書き程度にまとめました。
内容
- CPUは高速で様々な処理をスイッチしながら処理することで同時に処理しているように見せている
- このスイッチをコンテキストスイッチといい、オーバーヘッドが発生する
- いつコンテキストスイッチするかはプロセススケジューラが管理している
- スイッチしてからまたスイッチが発生するまでの処理時間をタイムスライスと言う
- プロセスはツリー構造になっている
- 親プロセスから子プロセスを生やすためにforkが呼ばれてexecveによってプロセスが別プログラムに置き換わったりする
- カーネルはプロセスのためにメモリを確保する
- メモリの中は変数だったりソースコードのテキストだったりが配置されるために中では領域が分割されている
- 物理メモリを直接触ることはできない代わりに仮想メモリを扱う
- 仮想メモリによってあたかもメモリがプロセスごとに一塊に確保されているように見えたり別プロセスから不用意に参照されたりするのを防ぐことができる
- 仮想メモリと物理メモリはページテーブルによって紐付けられている
- マシン全体のメモリ使用量の内訳はfreeコマンドで調べることが可能で、なんかtotalやbuff/cacheなど色々ある
- メモリが足りなくなるとbuff/cacheの中の解放可能な部分を解放してメモリを確保したりするがそれでも足りないとプロセスを強制終了してメモリを確保するのでいわゆるOOMが発生する
最後に
引き続き5章以降を読み進めていきます。