| OS自作入門 / 2008/09/05 (Fri) / 編集 |
ようは「どのメモリが空いていて、どのメモリが使用中か」が知りたい、ついでに「どこがどれだけ空いてるか」がわかると素敵だ。
まずはメモリの容量を調べる
番地を1つづつ(つまり1Byteづつ)調べてもいいけど死ぬほど時間がかかるので4KBづつとかにするといい。
肝心の管理はこんなん作って
あとは「空いてるとこが連続してたらまとめる」とか「空いてる領域を教える」とか「領域を確保する(freeinfoを消す、つまりfreeではない)」とかをがんばってプログラムする
まずはメモリの容量を調べる
- キャッシュメモリを停止
- メインメモリに値を保存
- 値を取得、さっき代入した物と同じか確かめる もし違うならそこからはメモリじゃない(=その直前までは使える)
番地を1つづつ(つまり1Byteづつ)調べてもいいけど死ぬほど時間がかかるので4KBづつとかにするといい。
肝心の管理はこんなん作って
struct FREEINFO {
/* あき情報、どの番地からどのくらい空いてるか */
unsigned int addr, size;
};
struct MEMMAN { /* メモリ管理 */
int frees, maxfrees, lostsize, losts;
struct FREEINFO free[MEMMAN_FREES];
};
あとは「空いてるとこが連続してたらまとめる」とか「空いてる領域を教える」とか「領域を確保する(freeinfoを消す、つまりfreeではない)」とかをがんばってプログラムする
トラックバック
URL :
コメント
