個人用雑記

勉強したことを書いていければなーと

30日でできる!OS自作入門(Day 8)

はじめに

f:id:rei_624:20200211231603p:plain
何ですか、これは。
1日進めるために287日かかりました。この間何をしてたかといえば、講義でOSとかアーキテクチャとかいろんなことを学んでいました。満を持してのOS自作本というわけです。ちなみにOSの講義でめっちゃ好きになったのがOS自作では取り扱わないページングとCopy-On-Writeでした。

ところで、最近のOSの流行りはUEFIらしいですよ?

マウスを動かしたい

昨日(287日前)マウスからの情報を割り込み処理で受け取ることができたので、その割り込みで得られた情報を解読するところからです。マウスの割り込みでは一回の動作ごとに3バイトずつデータが送られてくるそうなので、それぞれが何を表しているかを知る必要があるというわけです。ちなみに、大雑把に言えばマウスのボタンクリックの有無、左右の動き、上下の動きで3バイトだそうです。

マウス、動く

マウスから送られてくるデータが解読できさえすれば後は描画するだけって感じですね。

・・・だけって感じではなかったですね。今のままだとマウスが通った後の部分が再描画されないので、マウスがゴジラみたいになってますね。
解決するのはDay 10です、マウスって難しいですね。

32ビットモード

実は裏で行われてて解説のなかったOSブート時の16ビットモードから32ビットモードへの移行の解説がここで来ました。ちなみに、UEFIなら最初から64ビットで動かせますね。
32ビットモードへの移行で必須な設定は、移行終了まで割り込みの禁止とメモリを1MB以上使えるようにする設定、使用する命令の拡張とページングを使わないプロテクトモードへの切り替え、と盛りだくさんです。(さようならページング)

Day 9へ

内容を見返したんですけど、恐ろしくペラッペラでした。というのも、並行してUEFIの方も勉強し始めたのでこの辺でやっていることは一通り何をしているかだけ把握しておいて、後々必要になった場合は再度確認しようと思ったわけです。
ちゃんとUEFIの方もまとめられたらまとめたいですね。
ちなみにDay 9はメモリ管理についてなんですけど、セグメント方式のメモリ管理を学ぶ必要は、あるんですかね・・・(もちろん実装は楽なんですけど)