Linuxのしくみ Day2:導入
こんにちは。
急に寒くなりましたね。寒がりの冷え性にはつらい季節がやってきました。暑がりの汗っかきでもあるんですけど。
今からセーター×ヒートテックでぬくぬくしていて、この冬を乗り越えられるか心配になっています。
先日の宣言から日を開けてしまいましたが、今週は平日昼休み中に「Linuxのしくみ」とiPadでちまちま勉強していました。そんな「ちま勉」を復習がてら記しておこうと思います。
第1章「コンピュータシステムの概要」を読む
本日の内容は以下です。
OSは各プログラムを
プロセス
単位で実行するデバイスの操作は
デバイスドライバ
が請け負うプロセスには
ユーザモード
とカーネルモード
がある- OSの核となる処理群をまとめたプログラムを
カーネル
と呼ぶ
- OSの核となる処理群をまとめたプログラムを
カーネルを使う処理がしたければ
システムコール
を使う
見慣れてはいるけど、ぼんやりとした理解の単語が並んでいます。ちゃんと「輪郭」を知りたいと思います。
OSの役割を「デバイス」の観点で考える
例えば、外部デバイスの操作をプログラムから行いたいとき、以下のような課題が発生する。
上記の問題を解決するためにLinuxではデバイスドライバ
を介してプロセスからデバイスにアクセスするように制御している。
デバイスドライバの特徴
しかし、デバイスドライバを介さずにデバイスにアクセスするようなルール違反が起こると、複数のプロセスが同時にデバイス操作してしまう。
これを回避するために、プロセスからデバイスに直接アクセスできない仕組みがある。それがCPUの「モード」である。
CPUの「モード」
CPUには2つのモードが存在し、それぞれ扱う動作が異なる。
カーネルモード
- デバイスドライバ
- プロセスの管理システム
- プロセススケジューラ
- メモリの管理システム
ユーザモード
- プロセス
つまりCPUがカーネルモードの時だけデバイスにアクセスすることができるように制御することで、上記のような違反を防いでいる。
システムコール
じゃあ何でもかんでもカーネルモードが自由に呼び出せちゃったら意味ないじゃん!ことで用意されているしくみ、それがシステムコール
である。
プロセスがカーネルが提供する機能を使いたいときは、必ずシステムコールを介してカーネルに依頼する。
カーネルの役割
- CPUの管理
- メモリの管理
それぞれの領域を、プロセスに分け与える・廃棄するのが主な仕事である。
CPUはプロセススケジューラ
が、メモリはメモリ管理システム
が割り当て管理する。
今回のまとめ
この後読み進めていくと出てくるであろう、基本的な要素の導入編でした。
改めて単語の意味を知ると、日常の業務で起こる事象が言葉で表現できるようになるので物凄く大切だなと感じています。
「なんだかよくわからないけど動く・動かない」をなくしていきたい。
「Linuxのしくみがこうだから、こういう動きになりそう・なった」と大体の事象に対して説明できるようになれたらいいなぁと思いながら読み進めていこうと思います。
本日はここまで。