1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プログラムはなぜ動くのか?を読んでみてまとめることで知識の定着を図る投稿#1

Posted at

プログラムはなぜ動くのか第2版

を僕が師匠と読んでいる方に進めていただき、読んでみようと思いました。
そこで、僕的にはかなり難しいこともあり、この本をまとめながら読み進めていくことによって理解度を高めようと思いました。

こちらはあくまでも推奨する記事ではなく、僕がこうした方が定着しやすいかもと思い、記録に残すことにしました。

プログラマにとってCPUとは何か?

このタイトルみた時に「は?」という気持ちになった。そうCPUってそもそも何?ということを全くすっ飛ばしてきたのだ、当然聞かれてもう「なんか金を積んでいいの買えば処理が早くなるやつ」という認識しかないのでまぁそういうところからスタートしていく

CPUの中身は4つに分かれるらしい

・ レジスタ
・ 制御装置
・ 演算装置
・ クロック

レジスタ = 処理対象となる命令やデータを格納する領域、一種のメモリーの様なもの。種類によって異なるが、1つのCPUの内部には20~100個ほどのレジスタがあるらしい

制御装置 = メモリー情の命令やデータをレジスタに読み出し、命令の実行結果に応じてコンピュータ全体を制御する

演算装置 = メモリーからレジスタに読み出されたデータを演算する役目をもつ

クロック = CPUが動作するタイミングとなるクロック信号を発生させるもの。クロックがCPUの外部にあるコンピュータでもあります。

の4つから構成されるらしい。

うん何一つわからん。

そもそもプログラムがどの様に実行されるのか、いまいちわかっていなかった。

プログラム実行のイメージ

  1. プログラマが、C言語などの高水準言語でプログラムを記述する
  2. プログラムをコンパイルしてマシン語のEXEファイルに変換する
  3. プログラムの起動時に、EXEファイルのコピーがメモリー上に作成される
  4. CPUが、プログラムの内容を解釈・実行する

らしい。

メモリーと呼ぶのは「メイン・メモリー(主記憶)のこと。CPUと制御用チップなどを介して繋がっていて、ここに命令とデータを格納する。

メイン・メモリーは「読み書き可能なメモリー素子で構成されていて、1バイト(=8ビット)ずつにアドレス(番地)と呼ぶ番号がついているらしい。

文字じゃイメージが沸かん。
CPUはこのアドレスを指定してメイン・メモリーに格納された命令やデータを読み出したり、逆にデータを書き込んだりします。

メイン・メモリーに格納されている命令やデータはパソコンの電源を切ると消えてしまいます。(そうなんだ)

CPUの構造がわかると、プログラムが実行される仕組みが、なんとなく見えてきませんか?プログラムが動き出すと、クロック信号に合わせて、制御装置がメモリーから命令やデータを読み出します。

その命令を解釈・実行することで、演算装置でデータが演算され、その結果に応じて制御装置がコンピュータを動かします。

「制御」という言葉を使うと、難しいことの様に感じてしまうかもしれませんが、データの演算以外の処理(主にデータの入出力のタイミング合わせ)のことを制御と読んでいるだけです。

メモリーやディスクバイダイとの入出力、キーボードやマウスからの入力、ディスプレイやプリンタへの出力なども「制御」なのです。

まとめ

「制御」とは演算以外のこと

メイン・メモリーは電源を落とすと消える

CPUは書き込んだり読み込んだりする

クロックて何?

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?