《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > WinCE線程和內存管理之內存管理
WinCE線程和內存管理之內存管理
互聯網
摘要: 同其它Windows操作系統一樣,Windows CE.NET也支持32位虛擬內存機制、按需分配內存和內存映射文件等。但是與其它Windows操作系統又有明顯的不同。
Abstract:
Key words :
內存管理

  同其它Windows操作系統一樣,Windows CE.NET也支持32位虛擬內存機制、按需分配內存和內存映射文件等。但是與其它Windows操作系統又有明顯的不同。 
 
<a class=WinCE線程和內存管理之內存管理圖片2" height="1" width="1" />       畢竟Windows CE是一種嵌入式實時性的操作系統,在內存管理方面必須要比其它Windows操作系統更節約物理內存和虛擬地址空間。在內存管理API方面,為了便于移植程序,Windows CE和其它Windows操作系統函數聲明基本一致,這使一個在其它Windows下開發的程序員可以直接使用早就熟悉的API函數, 但是CE下內存管理的原理開發者還是應該熟悉的。

  1、ROM和RAM

  對于早期采用的存儲設備一般采用ROM + RAM ,在ROM中存放的所有文件可以是壓縮的也可以是不壓縮的,這取決于OEM(原始設備制造商)。OEM在定制CE內核時可以設置一個標志告訴ROM鏡像制作工具(romimage.exe)是否壓縮文件。對于ROM中存放的模塊(DLL、EXE文件)來說,如果是壓縮的,模塊在運行前先解壓并全部存放到RAM中。如果是不壓縮的,并且ROM介質支持線性訪問(line-Accessed),就可以本地執行(executed in place,縮寫為XIP)。利用本地執行方式運行應用程序、DLL的優點是:采用這種技術在加載EXE或DLL時,其中的代碼段數據不加載到物理內存中,內核只是分配虛擬地址空間給代碼段,當執行代碼時內核會到實際存放在ROM存儲設備上的文件中尋找代碼并執行。采用這樣的技術既可以節省可用內存又可以減少加載的時間。但是這種技術有一定的局限性,如果要讓CPU到ROM中去尋找代碼執行,那么ROM介質必須支持線性訪問,這就要求ROM介質支持線性訪問,而不是塊訪問。XIP這種加載方式的缺點就是執行速度相對較慢,CPU訪問ROM的速度肯定遠慢于訪問RAM的速度。
 
  基于Windows CE的產品開始采用FLASH、IDE等永久存儲設備時,內核鏡像(.bin)和其它應用程序文件開始存放到永久存儲設備中而不是ROM中,這不僅僅是因為硬盤或者FLASH的I/O速度比ROM快,更因為現在的內核包含的功能多并且文件數量增加,因而需要的存儲空間很大,一般都在20MB左右。再加上其它開發商開發的應用程序文件,要求的空間就更大了。CE啟動時內核鏡像由加載程序解壓并將系統文件加載到RAM的NK,NK是在config.bib中定義的一段RAM區域,專用于保存內核鏡像解壓出來的所有文件。Windows CE將NK看作是ROM,當執行一個應用程序時,CE內核將這個應用程序需要的系統DLL(在NK中保存)加載到Slot 1(地址范圍0x0200 0000-0x03FF FFFF,在Windows CE.NET中Slot 1專用于XIP DLL使用)。Slot 1是一段虛擬地址,當CPU執行DLL的代碼時,CPU會根據地址映射關系到NK中尋找實際的代碼執行,因為NK是一段實際的物理內存,I/O速度非???,所以相對于在ROM中執行,DLL的運行效率得到很大提高。

  非XIP DLL在加載時CE內核會在調用DLL的進程的地址空間中申請足夠大的地址空間,并且執行代碼時按需提交物理內存。

  RAM和ROM文件系統是Windows CE默認的文件系統。RAM文件系統的優點是支持文件壓縮、支持事務機制(和數據庫中的事務機制相似)、數據I/O較快。Windows CE.NET啟動時把除了NK以外的RAM分為對象存儲(object store)區域和應用程序內存(program memory)區域,并且默認各使用一半RAM。在基于Windows CE的設備沒有采用永久存儲器之前,對象存儲的作用相當于永久存儲器,對象存儲區域采用RAM文件系統來保存文件,對象存儲中可以存儲的對象類型有文件、目錄、數據庫、記錄、數據庫卷。默認在對象存儲中存儲的對象全部是壓縮的。當整個系統關閉時,設備的電源還繼續提供電力給RAM,這樣對象存儲中保存的所有數據就不會丟失。應用程序內存區域留給所有應用程序運行時使用?;赪indows CE的設備采用永久存儲器后,對象存儲的作用就被永久存儲器替代了,所以采用永久存儲器后,應該減小對象存儲區域的大小。如果定制的Windows CE的內核包含了資源管理器(eXPlorer.exe),那么打開“控制面板”,在“系統”-“內存”中,可以調節這兩個存儲區域的比例?;瑝K向左,則釋放對象存儲區域的一些可用內存并將這些內存劃到應用程序內存區域中。滑塊向右則相反。

  2、內存結構

  Windows CE.NET只能管理512MB的物理內存和4GB大小的虛擬地址空間。不同的CPU內存管理方法也不同。對于MIPS和SHX系列CPU來說,物理地址映射是由CPU完成的,CE內核可以直接訪問512MB的物理內存。對于x86系列和ARM系列的CPU來說,在內核啟動過程中它會將現有物理內存地址全部映射到0x8000 0000以上的虛擬地址空間中供內核以后使用。OEM可以通過OEMAddressTable來詳細定義虛擬地址和物理地址的映射關系。OEMAddressTable本身并不是一個文件,它只是存在于其它文件中描述虛擬地址和實際物理地址的映射關系的數據。比如文件oem init.asm中包含一段代碼:dd 80000000h, 0, 04000000h 。它表示將整個物理地址(0x0400 0000=64MB)共64MB映射到虛擬地址從0x8000 0000到0x8400 0000中。關于OEMAddressTable我將在以后關于PB的文章中講述。

  整個4GB虛擬地址空間主要劃分為兩部分,從0x8000 0000以上為內核使用部分,0x8000 0000以下為應用程序使用部分。詳細見下表:

地址范圍用途 0x0000 0000到0x41FF FFFF   由所有應用程序使用。共33個槽,每個槽占32MB。槽0(Slot 0)由當前占有CPU的進程使用。槽1由XIP DLL使用。其它槽用于進程使用,每個進程占用一個槽。 0x4200 0000到0x7FFF FFFF   由所有應用程序共享的區域。32MB地址空間有時不能夠滿足一些進程的需求。那么進程可以使用這個范圍的地址空間。在這個區域里應用程序可以建堆、創建內存映射文件、分配大的地址空間等。 0xA000 0000到0xBFFF FFFF   在這個范圍內核重復定義0x8000 0000到0x9FFF FFFF之間定義的物理地址映射空間。區別是在這范圍映射的虛擬地址空間不能夠用于緩沖。

  我舉例來說明:假設一個產品有64MB物理內存。如上文所述定義好OEMAddressTable后。內核啟動后一個物理地址映射空間范圍在0x8000 0000到0x8400 0000,那么內核會從0xA000 0000到0xA400 0000定義一個同樣范圍的地址空間,這個地址空間和0x8000 0000到0x8400 0000映射到相同的物理地址。但這個虛擬地址空間不能夠用于緩沖。 0xC000 0000到0xC1FF FFFF 系統保留空間 0xC200 0000到0xC3FF FFFF 內核程序nk.exe使用的地址空間。 0xC400 0000到0xDFFF FFFF   這個范圍為用戶定義的靜態虛擬地址空間,但這個地址空間只能用于非緩沖使用。
  利用OEMAddressTable定義物理地址映射空間后,每次內核啟動時這個范圍都不改變了,除非產品包含的物理內存容量發生變化。假如增加到128MB物理內存,那么物理地址映射空間也向后擴大了一倍。Windows CE.NET也允許用戶創建靜態的物理地址映射空間。用戶可以調用CreateStaticMapping函數或者NKCreateStaticMapping函數來映射某一段物理地址到0xC400 0000和0xE000 0000之間的某一個范圍。需要注意的是用這個函數創建的靜態虛擬地址只能夠由內核訪問,而且不能用于緩沖。

0xE000 0000到0xFFFF FFFF 內核使用的虛擬地址。當內核需要大的虛擬地址空間時,會在這個范圍內分配。    

WinCE線程和內存管理之內存管理圖片9
圖1 Windows CE.NET內存結構

進入討論組討論。


  3、進程地址空間結構

  進程地址空間結構如圖2所示。這個圖源至MSDN。 
 WinCE線程和內存管理之內存管理圖片2
        WinCE線程和內存管理之內存管理圖片2Windows CE.NET同以前版本的Windows CE操作系統在進程地址空間上有所不同,以前的Windows CE把XIP DLL也加載到進程的32MB地址空間中,而Windows CE.NET把XIP DLL單獨加載到Slot 1中,這樣對于每個進程來說,它總的地址空間就大了一倍,也就是64MB。這個問題我在講解進程的時候提到過。

  當一個應用程序啟動時,內核為這個程序選擇一個空閑的槽(Slot),并且加載所有的代碼、資源,并分配堆棧,加載DLL等。當這個進程得到CPU使用權時,它的整個地址空間被內核映射到Slot 0,也就是當前進程使用的地址空間,然后開始運行。圖中給出的地址實際上是經過映射到Slot 0之后的結構。從圖中可以看出,進程首先加載代碼段,因為每個進程最低部64KB作為保留區域,所以代碼段從0x0001 0000開始,內核為代碼段分配足夠的虛擬地址空間后,接著分配空間為只讀數據和可讀/可寫數據,接著分配空間為資源數據,之后分配空間為默認堆和棧。非XIP DLL從進程最高地址向下開始加載。非XIP DLL的加載按如下規則:內核先檢查要加載的DLL是否被其它進程加載過,如果加載過,就做一個地址的重定位。這樣就避免了整個系統內多次加載相同DLL。如果沒有加載過,就按照從槽的高地址到槽的低地址的順序查找空閑的地址空間。然后分配足夠的地址空間用于加載DLL。因為每個進程在執行前都要映射到Slot 0,而且進程使用的所有DLL可能來自不同的槽(Slot),為避免所有使用的DLL在映射到Slot 0中出現地址空間沖突的現象,內核的加載器(Loader)在加載DLL時會查找所有槽中加載的DLL的地址,保證在映射到Slot 0時不會發生地址沖突現象。假如系統內有兩個進程,進程A只加載了DLL A,進程B
此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          蜜臀久久99精品久久久画质超高清| 国产欧美一区二区精品性色| 亚洲福利一区| 国产拍揄自揄精品视频麻豆| 国产日韩欧美a| 亚洲丰满在线| 亚洲欧洲一区二区三区| 99精品国产高清一区二区| 久久国产精品久久久久久久久久| 午夜在线a亚洲v天堂网2018| 国产精品videosex极品| 美日韩精品免费观看视频| 国内自拍视频一区二区三区| 一本综合久久| 久久福利一区| 一区二区三区视频观看| 久久九九精品99国产精品| 欧美精品在线一区二区三区| 一区二区激情| 夜夜嗨av一区二区三区四区| 羞羞答答国产精品www一本| 欧美视频一区二区三区在线观看| 欧美a级片一区| 国产精品久久久久久久久久直播| 国产婷婷一区二区| 欧美mv日韩mv国产网站app| 欧美大片在线观看| 亚洲精品欧美日韩专区| 久久久久久久激情视频| 在线播放国产一区中文字幕剧情欧美| 1024精品一区二区三区| 国产精品免费一区二区三区在线观看| 91久久精品国产91性色| 国产欧美日韩综合一区在线播放| 亚洲一区久久| 国产精品国产三级国产专播精品人| 欧美顶级大胆免费视频| 国产精品亚洲综合天堂夜夜| 欧美电影免费网站| 国产精品视频| 亚洲人体偷拍| 欧美大片在线观看一区二区| 国产午夜精品理论片a级大结局| 欧美黑人多人双交| 性色av一区二区三区红粉影视| 欧美涩涩视频| 一区二区三区波多野结衣在线观看| 久久理论片午夜琪琪电影网| 亚洲大片免费看| 性做久久久久久| 亚洲亚洲精品三区日韩精品在线视频| 99re视频这里只有精品| 一区二区三区国产在线观看| 欧美电影美腿模特1979在线看| 久久久精品动漫| 欧美日韩精品一区二区天天拍小说| 欧美日本免费一区二区三区| 国产精品一卡二| 欧美日韩在线精品一区二区三区| 亚洲在线一区二区| 国产精品美女一区二区在线观看| 免费毛片一区二区三区久久久| 国产日韩在线看| 性做久久久久久| 久久综合伊人77777| 亚洲天堂免费在线观看视频| 一区二区日韩免费看| 欧美一级在线播放| 国产精品你懂的在线欣赏| 国外成人在线| 欧美福利视频网站| 欧美在线播放视频| 午夜免费久久久久| 欧美日韩在线不卡| 国产一区二区三区奇米久涩| 欧美韩日视频| 亚洲一区二区三| 欧美精品在线网站| 久久久精品一品道一区| 国产精品亚洲激情| 欧美亚洲专区| 欧美精品入口| 亚洲精品孕妇| 欧美精品一区三区在线观看| 亚洲性视频网站| 日韩亚洲欧美成人一区| 性做久久久久久久免费看| 国产欧美日韩激情| 欧美在线观看一区| 国产精品久久久久久亚洲毛片| 亚洲欧洲综合另类在线| 亚洲一二三四久久| 国产精品美女诱惑| 欧美午夜电影完整版| 亚洲经典在线看| 国产欧美日韩不卡免费| 亚洲午夜性刺激影院| **网站欧美大片在线观看| 亚洲精品永久免费| 久久三级福利| 国产无一区二区| 欧美日韩精品免费观看视一区二区| 亚洲三级免费观看| 免费成人高清视频| 国产日韩在线不卡| 欧美mv日韩mv国产网站app| 蜜臀a∨国产成人精品| 国产丝袜一区二区| 欧美日韩亚洲高清| 亚洲二区在线| 欧美激情aⅴ一区二区三区| 性刺激综合网| 欧美日韩国产一区二区三区| 一区在线影院| 亚洲制服少妇| 欧美大成色www永久网站婷| 国产精品久久久久久久久久直播| 亚洲天堂第二页| 亚洲视频在线观看三级| 一区二区91| 亚洲丁香婷深爱综合| 欧美三级韩国三级日本三斤| 国产精品国产自产拍高清av王其| 亚洲乱码国产乱码精品精98午夜| 亚洲福利精品| 欧美成人情趣视频| 亚洲精品视频免费| 欧美精品一区二区久久婷婷| 午夜精品视频一区| 蜜桃av一区二区在线观看| 欧美色网在线| 久久久99精品免费观看不卡| 久久嫩草精品久久久精品一| 欧美午夜激情视频| 国产精品v欧美精品∨日韩| 亚洲一区二区三区在线视频| 国产亚洲欧美另类中文| 国产麻豆精品视频| 亚洲免费综合| 久久中文字幕一区二区三区| 一区二区在线观看视频在线观看| 国产在线拍揄自揄视频不卡99| 亚洲另类在线一区| 午夜精品999| 久久性色av| 亚洲高清三级视频| 亚洲香蕉伊综合在人在线视看| 在线 亚洲欧美在线综合一区| 欧美激情一区二区三区在线视频| 国产亚洲人成a一在线v站| 欧美日韩一区不卡| 欧美精品久久天天躁| 精品1区2区3区4区| 久久久噜噜噜久久中文字免| 久久免费精品日本久久中文字幕| 韩国福利一区| 久久九九99视频| 国产视频精品va久久久久久| 欧美激情影院| 亚洲丰满在线| 欧美日韩国产在线一区| 国产日韩欧美夫妻视频在线观看| 一区二区三区四区五区视频| 欧美有码视频| 国产欧美日韩一区二区三区| 亚洲欧美在线网| 欧美成va人片在线观看| 欧美mv日韩mv国产网站| 国产综合视频| 欧美肉体xxxx裸体137大胆| 理论片一区二区在线| 亚洲免费电影在线观看| 欧美日韩福利| 久久精品在线| 久久久最新网址| 欧美国产欧美综合| 久久国产精品99精品国产| 欧美区二区三区| 久久综合给合久久狠狠色| 亚洲激情图片小说视频| 亚洲成色精品| 一本色道久久88综合日韩精品| 一区二区冒白浆视频| 在线成人国产| 国产精品一卡二卡| 午夜在线观看欧美| 国产精品成人一区| 国产精品视频一二| 国产精品久久久久久户外露出| 欧美不卡一卡二卡免费版| 久久久久久自在自线| 国产亚洲精品久久飘花| 欧美一区三区二区在线观看| 国产视频精品网| 一本色道久久综合狠狠躁篇怎么玩| 久久九九99| 免费亚洲电影在线观看| 国产精品久久久久一区二区三区| 欧美精品18| 欧美一二区视频| 国产精品人成在线观看免费| a91a精品视频在线观看| 亚洲精品社区| 欧美亚洲尤物久久| 激情综合在线| 日韩午夜激情| 国产亚洲精品激情久久| 国产精品羞羞答答| 国产精品入口日韩视频大尺度| 两个人的视频www国产精品| 欧美视频在线一区二区三区| 国产九九视频一区二区三区| 欧美成人高清视频| 亚洲国产精品成人va在线观看| 91久久精品国产91性色tv| 在线亚洲欧美专区二区| 欧美三级欧美一级| 国产午夜精品美女毛片视频| 亚洲缚视频在线观看| 欧美国产成人精品| 久久精彩免费视频| 久久综合狠狠综合久久综合88| 在线性视频日韩欧美| 亚洲一区二区三区免费视频| 欧美在线观看一区二区| 久久天天躁狠狠躁夜夜av| 久久精品国产99精品国产亚洲性色| 久久久免费av| 在线看片第一页欧美| 国产九九精品| 国产精品v欧美精品v日本精品动漫| 欧美日韩在线高清| 国产精品久久久久av免费| 亚洲精品老司机| 国产一区二区成人久久免费影院| 欧美日韩一区二区三| 免费成人毛片| 亚洲精品一区久久久久久| 国产欧美在线观看| 亚洲激情视频| 欧美日韩中文在线观看| 国产一区二区成人久久免费影院| 欧美精品久久天天躁| 亚洲欧洲一区二区在线播放| 国产精品一区二区三区观看| 在线观看精品视频| 国产午夜精品久久久| 伊人影院久久| 国产午夜精品理论片a级探花| 久久久久久久一区二区| 欧美日韩99| 国产精品色一区二区三区| 亚洲精品一线二线三线无人区| 欧美超级免费视 在线| 欧美亚洲动漫精品| 国产一区二区三区不卡在线观看| 国产精品极品美女粉嫩高清在线| 日韩视频在线一区二区| 国产精品看片资源| 免费成人在线观看视频| 久久精品中文| 久久影视精品| 亚洲福利视频网站| 亚洲日本成人| 亚洲手机成人高清视频| 在线亚洲精品| 国产精品久久久久久户外露出| 99视频国产精品免费观看| 欧美精品一区二区精品网| 久久香蕉国产线看观看av| 亚洲精品视频在线观看网站| 欧美成人免费在线视频| 久久www成人_看片免费不卡| 国产乱码精品一区二区三区五月婷| 亚洲美女视频在线观看| 亚洲精品老司机| 99热免费精品| 在线观看欧美视频| 久久综合国产精品台湾中文娱乐网| 欧美性猛交xxxx乱大交蜜桃| 欧美亚洲第一页| 欧美日韩一区二区在线观看| 欧美多人爱爱视频网站| 国产日韩欧美| 欧美日韩亚洲系列| 欧美一区二区啪啪| 国产欧美一区二区在线观看| 欧美亚洲第一区| 国产专区综合网| 亚洲国产一区二区三区在线播| 久热成人在线视频| 国产精品成人免费精品自在线观看| 精品成人免费| 欧美777四色影视在线| 国产一区二区精品久久91| 国产精品久久久久久影视| 欧美精品日韩三级| 激情久久久久久久久久久久久久久久| 亚洲欧美在线播放| 精东粉嫩av免费一区二区三区| 欧美在线不卡视频| 欧美一级播放| 亚洲国产精彩中文乱码av在线播放| 欧美成人免费大片| 午夜精品久久久久久久久久久| 国产精品爱久久久久久久| 欧美一区免费视频| 免费不卡在线观看| 麻豆精品一区二区av白丝在线| 国产精品爱久久久久久久| 一区二区三区久久网| 久久综合久久综合这里只有精品| 亚洲国产精品一区二区尤物区| 亚洲第一区在线观看| 在线 亚洲欧美在线综合一区| 国产精品久久一区主播| 亚洲综合丁香| 国产日韩欧美不卡在线| 久久精品色图| 亚洲欧美国产高清| 亚洲欧洲在线播放| 亚洲午夜精品一区二区| 久久久人成影片一区二区三区观看| 在线亚洲美日韩| 欧美一区二区三区四区夜夜大片| 欧美日韩国产小视频在线观看| 亚洲女人天堂成人av在线| 在线电影院国产精品|