WINCE—核心(kernel)—記憶體架構(memory archtitecture)學習

來源:互聯網
上載者:User

********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

時間:2012.02.26

類別:WINCE系統開發

********************************LoongEmbedded********************************

1.    WINCE記憶體模型

 

圖1  WINCE5.0和WINCE6.0記憶體模型對比圖

WINCE6.0之前的WINCE作業系統支援的進程最多隻有32個,並且每個進程只有32MB的虛擬記憶體空間,並且所有的進程共用相同的4GB地址空間。在WINCE6.0中,核心進程佔用4GB虛擬記憶體空間的高2GB,每個使用者進程都有獨立擁有低端的2GB虛擬記憶體空間,WINCE6.0支援的最大進程數達到32000個。進程數量的實際限制是受實體記憶體的大小來決定的。之前的WINCE版本,當前的應用在slot0執行,在WINCE6.0中,拋棄了原來的按Slot分配的方式,而是只要你需要你就可以建立記憶體,每個都有2GB的有效虛擬記憶體空間。

因為虛擬記憶體訪問是通過記憶體管理單元MMU轉化為實體記憶體的訪問,所以虛擬記憶體代碼是依賴於CPU的。ARM和x86處理器使用硬體頁表OEMAddressTable,所以硬體可以直接存取虛擬記憶體單元。WINCE支援的其他CPU使用一個軟體轉換旁路緩衝區TLB(translation look-aside buffer,可理解為頁表緩衝或是快表)miss handler,這需要完裡面填充虛擬記憶體的內容。

WINCE6.0基於下面的目標來設計虛擬記憶體管理:

⑴ 每個進程具有大容量的虛擬記憶體。

⑵ 不存在進程數量的限制。

⑶ 進程直接相互保護。

⑷ 最低程度降低使虛擬記憶體管理依賴CPU的代碼。

⑸ 有效虛擬記憶體分配

⑹ 有效TLB選中處理機制(miss handling)。

 

2.    WINCE虛擬記憶體分配

 

下面來看WINCE6.0虛擬記憶體地址空間圖,先看核心模式下的虛擬記憶體地址空間分配。

圖2  核心模式虛擬記憶體空間分配圖

⑴ 靜態映射到虛擬記憶體,有緩衝的,範圍為0x80000000~0xA0000000,大小為512MB,通過CPU的cache直接存取實體記憶體,這段也就是BSP包中g_oalAddressTable映射表對應於實體記憶體到虛擬記憶體的映射關係。

⑵ 靜態映射到虛擬記憶體,無緩衝的,範圍為0xA0000000~OxBFFFFFFF,大小為512MB,不需要通過CPU的cache,直接存取實體記憶體。

⑶ 核心XIP DLLs所在的虛擬記憶體空間,範圍為0Xc0000000~0Xc7ffffff,大小為128MB。

⑷ Object Storage Service地區,範圍為0xC8000000~0Xcfffffff,大小為128MB,主要用於儲存RAM檔案系統、CEDB資料庫、基於RAM的註冊表和遺留的資料存放區(legacy data sore)。

⑸ 核心虛擬記憶體空間,為內中中裝載的所有服務和驅動所共用,範圍為0xD0000000~0xDFFFFFFF,大小為256MB,另外的256MB的虛擬記憶體空間取決於具體CPU,範圍為0xE0000000~0xEfffffff。

⑹具體CPU的虛擬記憶體空間,用於系統調用的陷阱捕獲地區,範圍為0xF0000000~0xFFFFFFFF,大小為256MB。

 

使用者模式下的虛擬記憶體地址空間分配如下

圖3  使用者模式虛擬記憶體空間分配圖

⑴每個進程的進程空間,主要用於可執行代碼和資料,使用者堆的虛擬記憶體分配,

範圍為0x00000000~0x3FFFFFFF,大小為1GB。

⑵ 使用者模式DLLs的代碼和資料空間,範圍為0x40000000~0x5FFFFFFF,大小為512MB。

⑶ 用於RAM-backed對應檔,範圍為0x60000000~0x6FFFFFFF,大小為256MB。

⑷ 共用系統堆,範圍為0x70000000~0x7FFFFFFF,大小為256MB。

 

一次只能映射一個虛擬記憶體,不能直接通過其他進程的虛擬記憶體地址來訪問它們的記憶體。虛擬記憶體地址只能在已被進程分配的情況下使用,比如應用程式不能在代碼中調用VirtualProtect函數來改變自己已有訪問保護。

 

free(可用):可被分配

reserved(保留):虛擬位址被保留,不能再分配。但不能被使用,因為它沒有被映射到實體記憶體。

committed(提交):映射到物理地址。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.