msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「試して理解Linuxのしくみ」 感想 まとめ

「試して理解 Linux のしくみ」を一応読み終わりました.

感想とについて書いていきます.

感想

"本格的な linux の仕組みについて学ぶ本"に手を出すのは初めてでした.

本書は,図解がふんだんに用いられており,抽象的な内容を丁寧に説明されていて,わかりやすいと思います.

PC が重くなったときにメモリの詳細な仕組みを知ると,適切に原因を理解できるようになったと思います

CPU は「PC の頭脳」と言われが,具体的な処理内容は知らなかったし,ファイルは「ファイルシステム」にのっとって動作しているのも,改めて説明されないと気づかない部分も多かったです.

難易度自体は高く感じました. これから Linux を学ぼうとしていてコマンドを知りたい人むけではなく,元々 UbuntuCentOS などを使っていて,システムに関連するコマンドを使ったことがある人が「パフォーマンスについて詳細な理解をしたい」,「自作 OS をしたい」などといった詳細な理解をしたい人むけだと感じました.

まとめ

ユーザモード,カーネルモード

  • 安全な処理をするための,OS はユーザモードとカーネルモードの二つで動作をする.

プロセス管理,fork(),execuve()

  • コマンドの処理は fork()によって複製し親プロセスと子プロセスを作る,execuve()によって子プロセスに違う処理をおこなう(PID がかわる)

プロセススケジューラ

  • 単一 cpu のとき
    • 一つの CPU 上で同時に動作に処理するプロセスは1つだけ
    • 複数のプロセスが実行可能の場合,ここのプロセスを適当な長さの時間ごとに CPU 上で順番に処理する
  • マルチ CPU 環境では
    • 複数プロセスを同時に動かさないとスループットがあがらない
    • 単一 CPU と同様に,プロセス数を論理 CPU 数より多くしてもスループットは上がらない

プロセスの状態

  • プロセスの一生は,以下の状態を行き来する

    • 実行状態
    • 実行待ち状態
    • スリープ状態
    • ゾンビ状態

メモリ管理

  • free によって得られるメモリに関する情報
  • total:全メモリの量
  • free:見かけ上の空きメモリ
  • buff/cache:バッファキャッシュ,およびページキャッシュが利用するメモリ
  • available:実質的な空きメモリ

記憶階層

  • 物理メモリを直接利用しようとしたときに発生する問題を解決できる
    • メモリの断片化
      • 物理メモリで断片化しているメモリが,仮想記憶では一塊にみえる
    • 別用途のメモリにアクセスできてしまう
      • 仮想記憶では,他のプロセスが見えずアクセスできなくなる
    • マルチプロセスの扱いが困難
      • 仮想アドレス空間は,プロセスごとに存在するため,他のプロセスとの干渉を気にしなくてよくなる

仮想化記憶の応用

  • ファイルマップ
    • ファイルの仮想領域を仮想アドレス空間上にメモリマップするという機能
  • デマンドページング
    • メモリを獲得してから当分,あるいはプロセス終了まで使わない領域が存在することで発生する,「メモリの無駄な消費」を解決する方法.
  • コピーオンライト方式の高速なプロセス生成
    • 親プロセスあるいは子プロセスのどちらかが,ページのどこかを更新しようとしたときに,共有を解除する手順のこと
  • スワップ
    • ストレージデバイスの一部を一時的にメモリ代わりとして使用するしくみ
    • 使用中の物理メモリのうち一部を,移動させる.
    • 物理メモリにあきができたら,ストレージから戻す
    • スワップアウト
    • スワップイン
  • 階層型ページテーブル
    • ページテーブルに必要なメモリ量を節約するために階層型にしていること
  • ヒュージページ
    • 通常より大きなサイズのページのこと
    • 仮想メモリをたくさん使うプロセスにおいて,ページテーブルに必要なメモリ量が減るメリットがあがる

キャッシュメモリ

  • レジスタ上の計算とメモリアクセスの両者の計算時間を差を埋めるためのもの

階層型キャッシュメモリ

ページキャッシュ

  • ストレージデバイス上のファイルデータをメモリにキャッシュするもの

ハイパースレッド機能

  • CPU コアの中のレジスタなどの一部の資源を複数用意して,それぞれシステムからは論理 CPU として認識されるハイパースレッドというものに分割するハードウェア機構

ファイルシステム

  • ユーザにとって意味のあるひとかたまりのデータと,名前,位置サイズ,情報などを付加した上で,ファイルという単位
  • linuxファイルシステムの代表例は「ext4」,「XFS」,「Btrfs」

ファイルの不整合への対処

  • cp や mv しているときに電源が遮断するなどに発生する不整合への対処方が二つ,「ジャーナリング」.「コピーオンライト」
  • ジャーナリングext4,XFS
  • コピーオンライト:Btrfs

仮想化ファイルシステム

  • procfs
    • プロセスの情報(cpu,メモリなど)を得るためのファイルシステム
    • /proc 以下にマウントされる.
    • ps,sar,top,free などのコマンドは procfs から情報を得ている
  • sysfs
  • cgroupfs
  • cpu,メモリなどの制限をする

Btrfs

  • ext4 や XFS がサポートしている機能(ファイルの作成,削除,読み書き)以上の豊富な機能を提供するファイルシステム

Btrfs の一部機能

  • マルチボリューム
  • スナップショット
  • RAID
  • データ破損検知/修復

ストレージデバイス

  • HDD
    • データ転送にフラッタの回転や,スイングアームの動作などの,機械的な処理があるため遅い
  • SSD
    • 電気的な動作のため,HDD よりも早い.