試して理解 Linuxのしくみの第1章を読んだ

f:id:ryskit:20190609202759j:plain

「Linuxのしくみ」はOSやハードウェアについて、実際に手を動かして挙動を確認しながら学べる本です。

仕事で一緒に働いている方々が低レイヤに詳しいので、感化されてこの本を手に取った。 理由は、試して理解と書いてあったから。

手を動かさずに理解するのは得意じゃなく、手を動かして、どういった動きをするのか自分の目で確認しつつ学びたかったので、この本は僕にはちょうど良かった。

全部で8章で、1章の概要はすでに読んだからあと4週間もあれば試して少しは理解できる状態になっているのではないかと期待している。

実験プログラムの環境はUbuntu 16.04/x86_64環境なので、とりあえずConohaで月640円のVPS借りて試してみることにする。 ローカルで立ててもいいのだけれど、会社のPCしか持ち合わせていないことも考えて、いつでもログインできるようにしておきたかったからだ。

パラッと全体に目を通してみた感じだと図が多く、分かりやすそうといった印象。 とにかく、手を動かすしかない。

ノート

第1章 コンピュータシステムの概要

  • OSは各種プログラムをプロセス単位で実行する
  • 各プログラムは1つないし複数のプロセスから構成される
  • Linuxの重要な役割として、外部デバイスの操作がある
    • LinuxのようなOSがないと、各プロセスが独自にデバイスを操作するコードを書く必要がある
    • LInuxではデバイスを操作する処理をデバイスドライバというプログラムにまとめており、プロセスからデバイスには、このデバイスドライバを介してアクセスする
  • Linuxはハードウェアの助けを借りて、プロセスからデバイスに直セスアクセスできないようにしている
    • CPUには2つのモードがある
      • カーネルモード
        • カーネルモードの場合に、デバイスにアクセスできるようにする
        • デバイスドライバはカーネルモードで動作する
        • プロセス管理システム
        • プロセススケジューラ
        • メモリ管理システム
      • ユーザーモード
        • プロセスはユーザーモードで動作する
  • カーネルモードで動作する、OSの核となる処理をまとめたプログラムを「カーネル」と呼ぶ
  • プロセスは、カーネルが提供する機能を使いたければ、システムコールという特殊な処理を介してカーネルに依頼する