OS自作入門-9日目
いや〜朝に雨の中フットサルをやってきた。
雨の中で運動するなんていつ以来かな。。。と思ったら部活してた頃以来か。
久々の大運動だったので、筋肉痛が怖い。
でも、明日に筋肉痛が出ないことの方がもっと怖い。。。
さて、今日もOS自作入門いってみよう。
今日のタイトルは。。。「メモリ管理」
ほう、実にシンプルなタイトルだな。うむ。いいね。
まぁ何を隠そう(隠してないけど)実は私は16進数がよく分かってない。
2進数も怪しいがその辺はなんとかなっている。
だってさ。16進数ってなんか面倒やん。ねぇ?思わん?
そもそも、&とか >> とか |> だっけかなんかの演算子も良く分からんけど。
0xfffff, 0x12abef, おまえら日本語書けよ!!って言いたくなる。
しかし、CPUはお馬鹿さんな上、記憶力も悪いので付き合ってやるしかない。
しゃーねぇ〜なー。
んじゃ、例によってリファクタリングから…。
まず始めに、メモリ容量をチェックしたい。
どうやってするかというと、起動時にガァァァァ−−−ッとカウンタ回してるやつあるっしょ?
あれはBIOSがメモリをカウントしてるんだよ。(←誰でも知ってる
で、これをはりぼて上で行いたいんだ。欲張りなやつめ。
実際にどうするかというと。。。
- メモリに適当な値を書いてみて、
- その直後にそこを読んでみて、
- 書いた値と等しいかどうかで調べるらしい。
ふーん。なるほどねぇ。その際にはCPUのキャッシュを無効化しとく。
なんでもキャッシュが有効だと実際にはメモリがない領域に書き込んでも、
あるものとして扱うかららしい。
あーそれにしても make run で流れる文字量がかなり増えたな〜。
なんか大分進んでるって実感が沸く。
よし、今日の本題である「メモリ管理」だ。
ざっと眺めてみると、
メモリ管理表(どこどこ番地は使用中みないなのね)を作る。
C言語のmalloc関数のようなものを作ってそこに割り当てる。
解放用の関数も当然作る。
そんな感じ。
まぁメインは管理にあるわけだから管理表が重要なわけで、
あきリストなるものを作って管理してるんだな、これが。
ふむ、どうやら山場をちょっと越えたみたいで、今日は楽だった。
と思うけど、16進数と演算子が「あっちょんぶりけ」な私としは、
ちょっとてこ入れしとかんと普通に他の場面で苦労しそうだ。
やるかぁ〜。
明日も日曜だが、出かけるし多分、遅くなる。
でも、ガンバロ〜。