メモリーの監視の監視に引き続き、
MuninのCPUのグラフの項目を見ていくことにする。
今回も前回同様、
あくまで勉強用のメモみたいなものなので間違いがあるかもしれないことを前提にしてください。
CPUの監視について見る前にCPUについて簡単に触れておくと、
CPUはコンピュータにおいて計算する部分で、
キーボードから何らかの命令をコンピュータに対して行ったら、
コンピュータはCPUで計算して何らかの結果を返す。
このCPUにはユーザモードとカーネルモードがあって、
逆順になるけど、
カーネルモードは新しいプログラムを実行したり、ファイルを開いたり、ファイルに書き込んだりといった基礎的な処理を指し、
プログラムを書く時にこれらの処理を行わせたければ、システムコールというものを利用してOSにこれらの処理を依頼しなければならない。
OSがシステムコールを受けて処理を開始することをカーネルモードと言い、
それ以外の処理をユーザモードと言う。
主要なカーネルモードは下記の通り
read() : バイトを読み出す
write() : バイトを書き込む
open() : ファイルを開く
close() : ファイルを閉じる
fork() : 新しいプロセスを作る
exec() : 新しいプログラムを実行する
connect() : ネットワークホストに接続する
accept() : ネットワーク接続を受け入れる
stat() : ファイルの統計情報を取得する
ioctl() : I/Oプロパティのほか、雑多な機能属性を設定する
mmap() : メモリアドレス空間にファイルをマッピングする
brk() : ヒープポインタが指せる範囲を拡張する
O'Reilly Japan - 詳解 システム・パフォーマンス 95ページから引用
カーネルモードはI/Oとネットワーク接続周りと勝手に解釈してる。
(たくさんある内の)他の大事なことに触れておくと、
CPUは計算を行っている。
計算は一瞬で終わるものもあれば、延々と続くものもある。
1日かけても終わらない計算だってある。
実行したのは良いけど、なかなか終わらなくて、
だけど途中で終わらせたらやばいことになりそうだ。
という時に
たとえ計算途中であったとしても緊急停止の様な信号を送って、CPUが受理することが出来る。
このような計算途中に何らかの信号を受理する仕組みを割り込みといい、
割り込んで現在の処理を中断し、何らかのプログラムが実行された後、中断した処理を開始する。
※割り込みは緊急停止以外もある
CPUは同時にいくつもの処理を行う事が出来ないので、次の処理を待たせたり、同時平行で実行しているものは頻繁に切り替えながら同時に実行しているように見せかけている。
※シングルコアの話
ここらへんの話は
技術評論社のはじめてのOSコードリーディング UNIX V6で学ぶカーネルの仕組みを参考にしています。
とりあえず、長くなったので実際の項目を見ていくのは次回にする。
-続く-