30日でできる!OS自作入門パート4(9日目)
少し空いてしまいましたが続けていきます。
9日目(メモリ管理)
マウスポインタが一区切りついたので次はメモリ管理です。32ビットモードになってPCの全部のメモリを利用できるようになったので使ってみたいということでこのタイミングで行うようです。
で、まずはメモリがどこまであるかのチェックです。普通はBIOSがチェックしてくれるそうですがBIOSに聞くとアセンブラのソースが長くなったりBIOSのバージョンによって呼び出しを変えなければいけないということでややこしいみたいです。ということで自力でメモリチェックをします(勉強になるなー)。
メモリキャッシュを無効にする
ということでメモリチェックをするためにメモリキャッシュを一時的に無効にします。でないとキャッシュが勝手に反応してしまい上手くメモリチェックができないからです(言われればそんな気がしますね)。で一時無効にしつつチェックをするC言語のソースとアセンブラのソースが記載されております。ふむふむ…。
チェックが上手くいかない?
実際に動かしてみると問題発生。チェックしてみると期待値が32MBのはずが3072MBと表示されます。なんで?
(筆者が)頑張って確認したところ、どうやらコンパイラが原因のようです。コンパイラが優秀過ぎて(?)処理を最適化してしまい結果的に処理が飛ばされ期待値通りにならなかったんですね。
で結局アセンブラで書くことにして無事解決しましたとさ。
メモリ管理に挑戦
ようやく下準備が出来たところでメモリ管理です。現行OSの管理方法をふまえどういう管理方法にするかなど説明があり実装していきます。正直よくわからない部分もありますがちょくちょく筆者が「ここまでの原理がわかっていればすんなり頭に入ってきます」などとあおってきます。そ、そうですね…。
ということで9日目は終了です。
ここまでやってみて
自作OSの本を読んでOS作るぜーと言っているくせに、実はLPICの勉強も並行して行っています。一方をがーっとやってもいいのですが、その日の気分でどっちをするかわけているので飽きずに出来ています。
LPICはLinuxのコマンド問題もたくさん出てくるのですがハードの問題もあり、OSの起動方法やMBR、BIOS、ブートローダーとか出てきて結構自作OSで勉強した知識が使えます(windowsとLinuxで違いはあるが)
LPICは今年いっぱいにとれればいいかなと思っているので自分のペースでOS自作と並行して進めていきたいと思います。