授業雑感
この授業ではハードウェアと命令文の実行がどのように関連しているか、オペレーティングシステムの内部設計や仕組みに関わる基本部分を学習した。
ハードウェアについてはCPUやメモリ、I/O周りを中心に満遍なく学習という感じである。
個人的に面白いと思ったのが、CPU内で論理回路を組み合わせて計算式、そしてそれらを統合した命令文を考えていく部分である。
業務で使うような高階層のプログラミング言語を書いていると、プログラムとハードウェアがどのように結びついているのか、という部分への意識は薄れていく。(それがメリットでもあるのだが)
今回はハードウェアから見たプログラムという視点からだったので、新しい視点が得られた意味では良かったと思う。
もう一つ興味深いのはCPUやメモリのチューニング技術である。
例えばCPUではパイプライン処理や分岐予測、投機的実行などで高速化させ、メモリでは読み取り方法をバーストモードやページモードで効率化させたりなどしている。
これらの技術は既存のハードウェアの制約を上手く利用しているのが多いが、突き詰めると時を経てソフトウェア上のプログラムのテクニックにも応用されているものが見受けられた。
こういう技術変遷や関係性が垣間見れるのは面白い。
あとはプログラムのリンカや、エラー(ここではプログラムの例外起因だけでなく、メモリやI/O周りの起因も指す)発生時にそれぞれのハードウェアがどのように動くのかも知ることができて良かったと思う。