カーネルさん
カーネルがしてくれること:
プロセスが直接ハードウェアにアクセスできないようにCPUの機能を使用して順番を整理している。
それは、複数のプロセスが順番直接ハードウェアにアクセスすると他のプロセスが同じ場所を編集して書き換えてしまうかもしれない。するとハードウェアが壊れて文鎮化する。
これが起こらないようにカーネルはプロセスの順番を整理してる。
カーネルが使用しているCPUの機能とは具体的には「カーネルモード」と「ユーザモード」を使用している。
※一般的じゃないCPUだと3つか4つあるらしいけど、Linuxは2つしか使わないらしい
システムコールくん
システムコールくんがしてくれること:
プロセスが要求していることをカーネルさんへ伝えてくれる。
システムコールくんが具体的にしてくれること:
- プロセスの生成
- メモリ確保
- 通信処理
- ファイルシステム操作
- デバイス操作
システムコールくんは怒る
プロセス「カーネルさんにメモリ32Gb確保してって伝えて~」
こんなこと言うと却下されます。
システムコールくんは絶対
プロセス「ぉーぃ、カーネルさん聞こえるかぁ~ ちょっとメモリ32Gb確保してぇ~」
こんなこと言うと横からシステムコールくんが飛び出して直接会話するのを遮ります。
プロセスがシステムコールを返さずに直接カーネルと対話することはありません。
動的ライブラリと静的ライブラリ
動的ライブラリ:プログラム起動時にlibcの共有ライブラリをロードする
静的ライブラリ:コンパイル時にlibcのライブラリを実行ファイルに組み込む