winCE6 0 學習筆記之記憶體管理

2021-05-02 05:44:29 字數 1774 閱讀 8403

wince 6.0

是乙個32

位的作業系統,提供了

4gb的虛擬位址空間,其中系統核心使用高區的

2gb,

使用者程序使用低區的

2gb。我們的記憶體管理單元(

memory management unit

)用來管理虛擬記憶體和實際物理記憶體的對映。

在wince 6.0

中,虛擬記憶體的頁面有三種情況:

lfree

頁面沒有被系統使用或者分配

lreserved

頁面被系統保留但是並沒有對映到物理記憶體

lcommitted

頁面已經影射到物理記憶體

如上圖所示,下面我們就分別來看一下核心位址空間和使用者位址空間

1.

核心位址空間

記憶體範圍

大小(mb

)主要作用

0x80000000-0x9fffffff

512帶緩衝的靜態對映區

0xa0000000-0xbfffffff

512不帶緩衝的靜態對映區

0xc0000000-0xc7ffffff

128對映

xip dlls

0xc8000000-0xcfffffff

128用以資料庫,檔案系統以及登錄檔的檔案儲存

0xd0000000-0xdfffffff

256作業系統核心模組

0xe0000000-0xefffffff

256作業系統核心模組(具體處理的支援)

0xf0000000-0xffffffff

256捕獲系統呼叫以及核心資料頁面

值得注意的是,相同的虛擬記憶體可以被對映到具有不同訪問能力的實體地址。對於帶有緩衝的虛擬位址,

cpu將直接訪問緩衝區,這樣可以獲得更快的訪問速度。對於不帶緩衝的虛擬位址,

cpu將跳過緩衝區直接訪問對應的物理記憶體。

2.使用者位址空間

記憶體範圍

大主要作用

0x00000000-0x00010000

64kb

使用者核心資料

0x00010000-0x3fffffff

1gb-64kb

程序空間,包括可執行**,堆和棧

0x40000000-0x5fffffff

512mb

程序包含的

dll,

**以及資料

0x60000000-0x6fffffff

256mb

記憶體對映檔案

0x70000000-0x7fefffff

256mb

核心和使用者程序之間的共享堆

0x7ff000000-0x7fffffff

1mb使用者位址和核心位址之間的保護帶

其中被不同程序載入的相同

lib,dll

都回被放在相同的虛擬記憶體位址,同時,**頁會被放在相同的物理頁,資料頁放在不相同的物理頁從而區分不同程序的操作。

另外我們可以利用

wince api

中的以下函式來獲取系統記憶體相關資訊

void getsysteminfo(lpsystem_info lpsysteminfo);

void globalmemorystatus(lpmemorystatus lpbuffer);

Wince6 0 儲存記憶體與程式記憶體比例調整

wince600 platform files config.bib 找到 config 在autosize on後新增一行 fsrampercent 40404040 說明 fsrampercent 格式 fsrampercent number 預設值為0x80808080。指定為檔案系統分配的記...

Wince6 0 儲存記憶體與程式記憶體比例調整

開啟檔案 wince600 platform files config.bib 找到 config 在autosize on後新增一行 fsrampercent 40404040 說明 fsrampercent 格式 fsrampercent number 預設值為0x80808080。指定為檔案系...

WINCE6 0體系結構學習

wince6.0的體系結構圖如下圖所示 圖1 wince的體系結構 根據上圖可以把wince6.0體系結構分為硬體層 oem層 作業系統層和應用層,這四層緊密合作,相互配合來完成從應用程式的呼叫到對硬體的操作和互動。1.硬體層 硬體平台的核心是嵌入式處理器,而嵌入式處理器的種類很多,處理能力和主頻的...