WINCE---内核(kernel)---内存架构(memory archtitecture)学习
********************************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。
⑷ 對象存儲區域,范圍為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(提交):映射到物理地址。
?
總結
以上是生活随笔為你收集整理的WINCE---内核(kernel)---内存架构(memory archtitecture)学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WINCE6.0操作系统---内核(ke
- 下一篇: WINCE6.0支持Multiple X