該文件也十分簡單,核心部分將在buffer.c中實現。
1 #include <type.h>
2 #include <winixj/buffer.h>
3
4 //定義指向頁表和頁目錄表的指針,為全局變量
5 uint32* page_dir = (uint32 *)(0x100000);
6 uint32* page_tbl = (uint32 *)(0x101000);
7 uint32 MEMORY_START = 0x200000; //普通內存從2M開始,前兩M為內核使用
8 uint32 MEMORY_END = 0; //普通內存的末端
9
10 //擴展內存的大小,以KB為單位
11 uint16 externed_mem = 0;
12
13 void init_mm()
14 {
15 externed_mem = *(uint16 *)0xf0002;
16 init_buffer();
17 MEMORY_END = buf_info.start; //普通內存末端為高速緩沖區的起始
18 }
19
該程序有幾個變量比較重要,page_dir,page_tbl,MEMORY_START,MEMORY_END:
page_dir是頁目錄表起始地址。
page_tbl是頁表起始地址。
MEMORY_START:普通內存的起始端,在分頁中使用。
MEMORY_END:普通內存的末端,在分頁中使用,它的值在buffer.c中動態確定。
posted on 2012-02-14 20:16
myjfm 閱讀(380)
評論(0) 編輯 收藏 引用 所屬分類:
操作系統