メモリ管理地獄
OSの機能の一つにメモリ管理機能というものがある。
とりあえずFATの解析をするためには、FDのセクタを読み込んでごにょごにょと
解析をする必要があるので、とりあえずメモリ管理でもやってみようと思った。
別に
unsigned char data[512];
としても、たぶん利用できるだろうけど、
OSがメモリを提供できると色々といいことがあるかなぁと思ったので、
簡単なものを作ってみる事にしたのである。
一応出来たは良いが問題がある。
486以上のCPUの知識が無いと良く分からない話ですが、
セグメントの管理である。0x300000から1MBをとりあえず領域としているのだが、
問題はどうやってOS側からアクセスするかなのである。
つまりデータセグメントの移動をどうやってやるか。
データセグメントを下手に変更した後に関数を読んだりすると不具合が発生したりする。
C言語でカーネルを書いているのだが、Cはスタックでローカル変数を確保する。
このときスタックセグメントが利用される。
ところがローカル変数を使うときはデータセグメントを利用しやがる。
だから同一のアドレスを示すようにしないと駄目ジャン。
う〜む、もう少し勉強が必要だな。まだまだ未熟なので、日々勉強です。