「プログラムはなぜ動くのか」という本を読んでいて、CPUとメモリの関係についてなんとなく理解ができたのですが、コンピュータの動作する流れについて、わかったようでわからないままです。
この本のおかげで、プログラマが書いたプログラムはマシン語に翻訳されてメモリ上に配置されて、それをCPUが上から順に、場合によっては番地を飛ばしたりしながら演算していくのだと理解しました。この本ではメモリの仕組みについてしっかり書かれていたので、データがメモリ上でどうやって表現されているのかということなどについてはよくわかりました。
しかし、それでもコンピュータがやっていることがよくわかりません。
私がキーボードの「A」を押したとき、コンピュータの内部では何が起きているのでしょうか?目で見えるのは、小指がキーボードの「A」の部分を押し込み、ほぼ同時にスクリーンに期待していた「あ」が表示される光景です。小指が「A」を押し込んでからスクリーンに「あ」が表示されるまでのこの間に、何が起きているのでしょうか?
OSは内部にBIOS(basic I/O system:基本入出力体系)をコントロールするプログラム群を持っています。利用頻度の高い処理をOS側で用意する事によって、プログラム作成者が細かなプログラムを作成する負担から開放されるからです。そうしたOS側によって用意されている制御ルーチンのうち、キー入力を担当しているルーチンを呼び出す事で、現在リアルタイムで押下されているキー、そのアスキーコードを入手する事が可能となっています。
あなたはなぜキーボードを押そうと思ったのでしょう?。キー入力で変化が起こるプログラムを動かしているからです。
プログラムが起動している間、そのプログラムはキーデータを繰り返し要求し続けている、いわばキーボードを監視し続けているわけで、何かキーが押された時だけ画面に反映するというアクションを起こしている、という事になります。つまり、何もキーが押されていない状況下でもプログラムは無駄に動き続けているという事。処理を停止させるまでプログラムは止まりませんので。
キーボードの「A」を打って「A」が表示される方にした方がずいぶん簡単でしょう。それでも十分に複雑です。
「現代の」という括りよりは「GUIかCUIか」「インタラクティブかノン・インタラクティブか」の方が大きいです。