




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、WINCE5.0 和 WINCE6.0 的內(nèi)存與系統(tǒng)架構(gòu)作者:LoongEmbedded(kandi)時(shí)間:2010.07.21類別:WINCE 嵌入式操作系統(tǒng)1.WINCE5.01.1 WINCE5.0 的內(nèi)存架構(gòu)*LoongEmbedded*LoongEmbedded*WindowsCE5.0MemoryModelKernel11IUUlClULI廿LUllmwayvinmenioiymanagerCE5.02GBkernelspace虛擬地址空間不同,WINCE5.0 中所有的進(jìn)程共享一個(gè) 4GB 的虛擬地址空間。這 4GB的虛擬地址空間被分為兩個(gè) 2GB 的區(qū)域,其中低地址的那 2GB
2、 區(qū)域(0 x000000000X7FFFFFFF)是用戶虛擬空間,這塊虛擬空間由應(yīng)用程序的共用,也就是說(shuō)應(yīng)用程序申請(qǐng)的內(nèi)存都會(huì)從低 2GB 虛擬內(nèi)存空間分配的;而高 2GB 區(qū)域(0 x800000000XFFFFFFFF)是操作系統(tǒng)的內(nèi)核虛擬空間,供 WINCE 操作系統(tǒng)本身使WindowsCE5.0MemoryModelSingle2GBmappingforailprocessesDividedupinto32MBsDts32ProcessLimitEachprocesshasone32MBslot32slotsforprocessesUpperhalfofuserspaceisshar
3、edmemoryRead/Writebyallprocesses我們知道 WINCE5.0 的進(jìn)程數(shù)量最多只能達(dá)到 32 個(gè),而且每個(gè)進(jìn)程只能獨(dú)享32MB 的虛擬空間(這個(gè) 32MB 的空間也叫一個(gè) slot),這 33 個(gè)進(jìn)程(32+1,這個(gè) 1就是指slot0,因?yàn)閟lot0用于映射當(dāng)前在處理器上執(zhí)行的線程所在的進(jìn)程)占用的虛擬空間0 x000000000 x41FFFFFF(slot0slot32slot33slot63 對(duì)應(yīng)的虛擬地址空間是0 x420000000X7FFFFFFF,這塊虛擬地址空間是由所有的進(jìn)程共享的, 如果每個(gè)進(jìn)程獨(dú)享的 32MB 虛擬地址空間不夠用,那么進(jìn)程可以在
4、這個(gè)范圍中請(qǐng)?zhí)摂M地址空間,這個(gè)范圍包括對(duì)象存儲(chǔ)和內(nèi)存映射文件(.map 文件,每個(gè)進(jìn)程都有自己的 map 文件)。此范圍的最后一個(gè) slot(slot63)從 0 x7E0000000 x7FFFFFFF 用來(lái)存放純資源 DLL。如果某個(gè)DLL 里面只有資源信息(比如圖標(biāo)、位圖、對(duì)話框及字符串表燈),這個(gè) DLL 就會(huì)被加載到這個(gè)空間內(nèi)。VirtualMemoryMap2GBforKernelSharedmemory從 0 x80000000 開(kāi)始是 WINCE 內(nèi)核使用的虛擬內(nèi)存空間,其中0 x800000000 x9FFFFFFF(512MB)這段用來(lái)靜態(tài)所有的物理地址,也就是說(shuō)WINCE
5、 會(huì)把所有的物理內(nèi)存 1:1 地址映射到這段虛擬內(nèi)存上,這也就是 WINCE 最大支持的物理內(nèi)存是 512MB 的由來(lái)。0XA00000000 xBFFFFFFF(512MB)這段虛擬地址會(huì)重復(fù)映射所有的物理地址,這段對(duì)物理內(nèi)存的映射與 0 x80000000 這段最大的不同是從 0 x80000000 開(kāi)始的一段虛擬內(nèi)存(何宗鍵老師這里寫得是物理內(nèi)存)是有緩沖的,而從 0XA0000000 開(kāi)始的一段是沒(méi)有緩沖的。通常,緩沖可以提高系統(tǒng)的 I/O效率(why,有待進(jìn)一步理解),但是對(duì)于一些 OAL 或者 bootloader 或者驅(qū)動(dòng)來(lái)說(shuō),使用緩沖有可能會(huì)造成災(zāi)難性的后果,因?yàn)榫彌_有可能會(huì)更
6、改我們對(duì)設(shè)備的寫操作順序,因此在驅(qū)動(dòng)程序中如果直接訪問(wèn)設(shè)備的 I/O 或寄存器,那么通常使用 0 xA0000000 這段內(nèi)存地址。物理內(nèi)存被映射到內(nèi)核空間之后,WINCE 內(nèi)核如果要訪問(wèn)某個(gè)物理內(nèi)存地址,就只需要把該物理地址加上 0 x80000000 或者 0 xC0000000 就可以了,這樣簡(jiǎn)便的方式只能由WINCE 內(nèi)核使用,通常的應(yīng)用程序是無(wú)法享受這種便利的。0 xC20000000 xC3FFFFFF 是 slot97,止匕 slot97 是 WINCE5.0 的核心進(jìn)程N(yùn)K.EXE,可見(jiàn)實(shí)現(xiàn) WINCE5.0 操作系統(tǒng)的一些主要功能的 NK.EXE 本身的地址空間還是在和心態(tài)中
7、的, 0 xE00000000 xFFFFFFFF 這段最高的地址是內(nèi)核使用的地址空間, 對(duì)于不同的處理器體系結(jié)構(gòu),這里保存著不同的內(nèi)容,通常會(huì)放置一些供虛擬內(nèi)存用的頁(yè)表和中斷向量表等內(nèi)核使用的數(shù)據(jù)結(jié)構(gòu)。64KB 之上是進(jìn)程的代碼、數(shù)據(jù)以及堆和棧,進(jìn)程申請(qǐng)?zhí)摂M內(nèi)存是從低地址向高地址增長(zhǎng)的。從每個(gè) 32MB 虛擬地址空間最高地址開(kāi)始,存放的是進(jìn)程加載的 ROMDLL 的讀寫數(shù)據(jù)以及 RAMDLL 的數(shù)據(jù)(ROMDLL 的代碼對(duì)所有的進(jìn)程來(lái)說(shuō)可以共享一個(gè)拷貝,放在 slot1 中,但對(duì)于 DLL 的數(shù)據(jù),就不得不為每個(gè)進(jìn)程設(shè)立單獨(dú)的拷貝),DLL 代碼和數(shù)據(jù)的增長(zhǎng)是從高地址向低地址增長(zhǎng)的,如果這兩
8、個(gè)高低增長(zhǎng)相遇,那么就表示進(jìn)程已經(jīng)耗盡了它的虛擬地址空間,就算此時(shí)有能還有多余的物理內(nèi)存,但是無(wú)法使用它了,因?yàn)檫M(jìn)程的虛擬地址空間已經(jīng)用完了。我們知道虛擬內(nèi)存的申請(qǐng)是以 64KB 為邊界的,這對(duì)進(jìn)程加載 DLL 有非常重要的影響,這也就意味著每個(gè) DLL 的都要至少占用 64KB 虛擬地址空間,從理論上來(lái)說(shuō)每個(gè)進(jìn)程只能加載 512 個(gè) DLL。要記住所有的 ROMXIPDLL 都會(huì)被映射到進(jìn)程的虛擬地址空間中,因?yàn)檫M(jìn)程有可能訪問(wèn)任何一個(gè) XIPDLL0通常一個(gè)沒(méi)有圖么 WINCE 就可以捕捉到這個(gè)錯(cuò)誤ROMBasedDLLsROMDLLspacenon-ROMResourcesReadonly
9、dataDLLSpace(Constantforallapplication引0200000003FFFFFFApplicationSpecificSpaceStack(reservedspace)Heap(reservedspace)但是這樣并不能捕獲代碼中所有的野指針從上圖我們就 slot0 來(lái)看看一個(gè)進(jìn)程中虛擬地址空間的使用情況。一個(gè)進(jìn)程的32MB 虛擬地址空間中,最低的 64KB 地址(0 x0000000 x00010000 也用來(lái)捕獲野指針的,通常是空指針 NULL 的,如果某個(gè)指針訪問(wèn)了低于 64KB 的內(nèi)存區(qū)域,那形界面的 WINCE 操作系統(tǒng)就會(huì)包含有 100 個(gè)左右這樣的
10、DLL,一個(gè)含有圖形界面的正常 WINCE 包含的這種 DLL 更多,因此這個(gè)問(wèn)題應(yīng)該引起重視??梢圆扇∫恍┓椒ū苊馓摂M內(nèi)存耗盡,例如把幾個(gè)不到 64KB 的小 DLL 合并成為一個(gè)大的 DLL。1.2WINCE5.0 的系統(tǒng)架構(gòu)WindowsCE5.0SystemArchitecture2.WINCE6.02.1WINCE6.0 的內(nèi)存架構(gòu)IntroducingtheCE6.0NewKernelE2GBofVirtualMemoryperprocess32KprocessesUnifiedKernelCriticalOScomponentsmovedintokernelspaceImprov
11、edsystemperformanceIncreasedsecurityandrobustnessHighdegreeofbackwardscompatibilityWINCE6.0 支持最大 32000 個(gè)進(jìn)程。(2每個(gè)進(jìn)程獨(dú)自占用 2G 虛擬地址空間。(3統(tǒng)一/一元化的內(nèi)核(unifiedkernel),把關(guān)鍵性的 OS 部分移到內(nèi)核空間。WindowsEmbeddedCE6MemoryModelKernelSharedmemoryUserDLLGWESDriversMemorymappedNewvirtualrmmorymanagerdoesnotoperateInaprocwisldi
12、moctelfYoucreateIheprocesswhenwurwed州JCE6.02GBVM2GBkernelExecuMonshtMidsharedDLLslotUserVirtualMemorySpaceR/WforOScomponentsReadonlyforuserprocessRAMBackedMapfflesMappedatfixediocatkjnforbetterbackwardscampatibiHtyAllDLLs-codeanddataS3memappingacrossallproem導(dǎo)DatspagesareuniquephysitatpagesCodepagesa
13、resharedProcessspace1GBpe1rprocessExecutablecodeanddataVMAllocationFileBackMapfilesDxOOQOODCD*和 WINCE5.0 類似,2G 的用戶空間被分為兩部分。*最低 64KB,被系統(tǒng)用來(lái)捕獲野指針。*低 1GB 的地址空間用來(lái)加載進(jìn)程的代碼、數(shù)據(jù)、堆、棧等。*0 x400000000 x5FFFFFFF(512MB),這段虛擬內(nèi)存空間用于加載所有的用戶進(jìn)行的DLL 代碼和數(shù)據(jù)。*0 x600000000 x6FFFFFFF(256MB)這段內(nèi)存分配給內(nèi)存映射文件MMF(memorymappedfiles)。
14、*0 x700000000 x7FEFFFFF 這段內(nèi)存是內(nèi)核程序和用戶進(jìn)程間的共享堆,實(shí)現(xiàn)內(nèi)核程序和用戶進(jìn)程間通信(無(wú)需通過(guò) API),此區(qū)域用戶程序可讀,但 OS 可寫。*0 x7FF000000 x7FFFFFFF 這段內(nèi)存不可訪問(wèn),作為用戶和核心間的緩存。:煲0 x90000000Ox40UDODGOStaticMappedCached512MBCachedaccesstophysicalmemoryOxSOOOOOOQ*低 1GB 是靜態(tài)虛擬地址。*0 xC00000000 xC7FFFFFF(128MB)用于內(nèi)核加載的 XIPDLLs。*0 xC80000000 xCFFFFFFF
15、F(128MB)是文件系統(tǒng)的對(duì)象存儲(chǔ)區(qū)。*0 xD0000000 xDFFFFFF(512MB)是內(nèi)核模式的程序執(zhí)行區(qū)。*0 xF0000000 xFFFFFFFF 用于捕獲系統(tǒng)調(diào)用,包含核心數(shù)據(jù)頁(yè)。KernelSpace2GigabytesCPUSpecificVMKernelVM256/512MBObjectStore(12BMB)SystemTrapAreaKernelVirtualMemorySharedbyallkernelServersanddriversRamfilesystem&ramregistryFixedmappingindependentofuserspaceK
16、ernelXIPDLLs(128MB)AllXiPDLLsinkernelStaticMappedUncached512MBUncachedaccesstophysicalmemoryCE6.0SystemArchitecture3.WINCE5.0 和 WINCE6.0 的 OALdesignWindowsCE5.0OALDesignShellUserModeServicesDriversNK.EXEKernelDriversBootloaderUserModeKernelMadeWINCE6.0 系統(tǒng)被劃分為 usermode 由戶模式)和 kernelmode(內(nèi)核模式)兩個(gè)“層”,CoreDLL 同時(shí)出現(xiàn)在兩個(gè)層中,驅(qū)動(dòng)程序也移
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 宣傳部合同管理制度
- 家具安裝部管理制度
- 家電售后部管理制度
- 待付款合同管理制度
- 德克士供應(yīng)管理制度
- 快消品內(nèi)控管理制度
- 快遞網(wǎng)點(diǎn)誰(shuí)管理制度
- 總公司資質(zhì)管理制度
- 總經(jīng)辦經(jīng)費(fèi)管理制度
- 感知網(wǎng)安全管理制度
- 2025年上海奉賢區(qū)初三二模中考數(shù)學(xué)試卷試題(含答案詳解)
- 汽車維修工(汽車車身涂裝修復(fù)工)理論知識(shí)考核要素細(xì)目表
- 2025年企業(yè)安全生產(chǎn)知識(shí)競(jìng)賽全套復(fù)習(xí)題庫(kù)及答案(完整版)
- 新大學(xué)語(yǔ)文試題及答案
- 長(zhǎng)沙市望城區(qū)2024年八年級(jí)《數(shù)學(xué)》下學(xué)期期末試題與參考答案
- 人際關(guān)系與有效溝通培訓(xùn)課件
- 動(dòng)漫人物教學(xué)課件
- 深基坑土方開(kāi)挖專項(xiàng)施工方案專家論證
- 2025年部編版語(yǔ)文六年級(jí)下冊(cè)期末復(fù)習(xí)計(jì)劃及全冊(cè)單元復(fù)習(xí)課教案
- 電大本科《人文英語(yǔ)4》期末題庫(kù)及答案
- 貼標(biāo)(不干膠標(biāo))檢驗(yàn)作業(yè)指導(dǎo)書(美國(guó)UEC驗(yàn)廠質(zhì)量管理體系)
評(píng)論
0/150
提交評(píng)論