今までは、プログラムなんて動けばいいんでしょ精神でやっていたのですが、業務でメモリのこともちゃんと考えなくちゃダメだよ!とお叱りを受けました。
なんとなくでしか理解していなかったので、改めて勉強し直したいと思います。
メモリかあ・・・
CPUとは
CPUとは、よく人間でいう脳みその部分といいます。すべての司令を司る部分ですね。
クロック周波数とは
処理速度のことをいいます。これが高ければ高いほど、処理速度が早くて良いやつです。
コア数とは
コアということなので、中核部分のことをいいます。中核ということなので、まさに芯のところって感じですね。(?)
デュアルコアやクアッドコアなどがありますが、複数あることによって、その分並行処理が可能となります。
プロセスとは
実行中のプログラムのことをいいます。
各プロセスの中に、スレッドが存在しています。
スレッドとは
スレッドは、プロセスの中に存在し命令を実際に実行している部分のことをいいます。
各スレッドは各CPUコアに、命令実行するために力をくれ!と、それぞれ対応しています。
1つのコアに複数のスレッドが紐づくことが可能です。
以上を図にしてみたものがこちらです。
カオスな図ですが、こちらの図では、CPUの中には2つのコア(=デュアルコア)が存在しており、クロック数1.2GHzの速さで処理を頑張っています。
例えば今1つのプログラムを実行中だとすると、1つのプロセスが起動し、プロセス内の4つのスレッドがそれぞれ命令を逐一実行します。命令を実行するのにコアが必要なので、それぞれがコアに紐づきます。
メモリとは
一般的によくいうのが、机の広さといいますよね。机が広ければ広いほど、教科書やノート計算機その他いろいろを乗せることができます。
なので、メモリが多ければ多いほど、いろんなプログラムやアプリを同時に実行できることが可能となるのです。つまり、メモリが多いほど起動できるプロセスが多くなるということになります。
1つのプロセスには1つのメモリ空間が割り当てられ、さらにメモリが欲しい場合はOSにお願いすることで、メモリを分けてくれたりするそうです。
こちらの図では、3プロセス分だけメモリが割り当てられており、そのうちプロセス2とプロセス3はマルチスレッドになっています。
マルチスレッドの場合、メモリはスレッド間で共有されるので、マルチスレッドプログラミングを組む場合はメモリを意識しなくてはいけません。
作業中にメモリがなくなってしまうと作業が続行できなくなり中断するしかなくなりますからね・・。
まとめ
割と今までメモリとか意識しないでプログラミングを書いていたのですが、大事なんだということを再確認しました。
とはいっても、やっぱり実践通していかないとあまり腑に落ちないので、何かこれらが絡みそうなものを作ってみたいんですが、なかなか思い浮かばないのが悩みどころです。
難しいものを作っても難しいやーで、あまり勉強にもならないし、だからといって、お遊び的なものだとこれらのワードは絡んでこないしで・・
ひとまずカオスな図を作ることで咀嚼しました。
また、今までパソコン買う時にスペックはメモリぐらいしかみてこなかったのと、いまいち何が何だかわからないって感じだったのですが、(とりあえず動けばいいや精神)
今後はこのあたりの数字も見て、スペックを理解したいなと思いました。
にほんブログ村に参加しております!よろしければクリックお願いします 🙂
にほんブログ村
コメント