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 :
コメント