‍🦔 2024/4/27(土)
作成日: 2024/04/27
0

入門モダンLinux

第1章

  • OSが提供するAPIをシステムコールと呼ぶ
  • システムコールとデバイスドライバをまとめてLinuxカーネルと呼ぶ
  • カーネルとパッケージ管理、initシステム、シェルなどをまとめて呼ぶときはディストリビューションと呼ぶ
  • OSの役割はハードウェアを抽象化(システムコール)してアプリケーションで容易に使えるようにするもの
    • プロセスやメモリ、ネットワークなどを基本機能を提供することも含める

第2章

  • Linuxのアーキテクチャーは3層に分けられる
    • ユーザー空間
      • ハードウェアを操作しないもの(find,grep,ping)なども含まれる
    • カーネル
      • ユーザー空間とはシステムコールがインターフェースとなりCPUの操作を抽象化する
    • ハードウェア
      • 物理的なもの
  • lscpuでアーキテクチャーやCPUの数やモデル名などを調べることができる
  • ARMアーキテクチャは消費電力を抑えることに重点を置いているため、iphoneなどにも使われている
  • Linuxのプロセス管理
    • セッション
      • 複数のプロセスグループを含む
      • SID(セッションID)番号で識別する
    • プロセスグループ
      • 複数のプロセスを含む
      • PGID(プロセスグループ)番号で識別する
    • プロセス
      • プログラムの実行に必要なリソースをグループにしたもの
      • PID番号で識別する
    • スレッド
      • カーネル内ではプロセスと同じように扱われる
    • タスク
      • task_structというデータ構造でプロセスとスレッドを同じように扱う
  • メモリ管理は物理メモリを仮想的なメモリに割り当てて物理メモリサイズ以上に持っているように見せる機能
    • ページという固定長のチャンクに分割する(物理でも仮想でも)
    • ページサイズが大きいほどTLB(Translation Lokaside Buffer)のミスが減る
      • TLBでたくさんの仮想アドレスと物理アドレスの変換を行うが、ページサイズが広が
        れば少なく、広いデータが持てるため
      • cpuのキャッシュサイズはlscpu -cで見れる
  • シスコールの呼び出しは、ユーザー空間からsys_call_tableを介して行われる
    • ユーザー空間からカーネルモードとの切り替えは時間がかかるといわれている
    • straceでシスコールの流れが可視化できる
  • カーネル拡張の最新ではeBPFを使って行われる
    • シスコールで拡張を行う