日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WINCE---内核(kernel)---内存架构(memory archtitecture)学习

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。