999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談嵌入式開發環境WinCE.net的內存管理

2009-01-06 04:55:38張德迪
數字技術與應用 2009年11期

張德迪

[摘 要]Windows CE是一種嵌入式實時性的操作系統,在內存管理方面必須要比其它Windows操作系統更節約物理內存和虛擬地址空間。

[關鍵詞]Windows CE 內存管理

[中圖分類號]TP311 [文獻標識碼]A[文章編號]1007-9416(2009)11-0022-01

Windows CE.NET支持32位虛擬內存機制、按需分配內存和內存映射文件,但是與其它Windows操作系統又有明顯的不同。畢竟Windows CE是一種嵌入式實時性的操作系統,在內存管理方面必須要比其它Windows操作系統更節約物理內存和虛擬地址空間。

對于早期采用的存儲設備一般采用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等永久存儲設備時,內核鏡像和其它應用程序文件開始存放到永久存儲設備中而不是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的運行效率得到很大提高。

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

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中。

當一個應用程序啟動時,內核為這個程序選擇一個空閑的槽(Slot),并且加載所有的代碼、資源,并分配堆棧,加載DLL等。當這個進程得到CPU使用權時,它的整個地址空間被內核映射到Slot0,也就是當前進程使用的地址空間,然后開始運行。圖中給出的地址實際上是經過映射到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需要加載DLL A和DLL B,那么進程B會留出DLL A的地址空間,然后加載DLL B,也就是說進程B映射到Slot 0時,DLL A的地址空間和DLL B的地址空間是相鄰的,不會發生沖突。實際情況是Windows CE下DLL都很小,而且一個應用程序使用DLL多數是系統的DLL(存在于Slot 1)。所以目前來看進程的地址空間是夠用的。

[參考文獻]

[1]基于Windows CE 平臺的嵌入式GIS 開發與應用,河南,2003.

[2]劉文峰,李程遠,李善平.D嵌入式L inux 操作系統的研究.

[3]錢靜,蘆東昕.嵌入式軟件虛擬內存管理技術的研究和實現,2008.

[4]付曉軍,夏應清,何軒.嵌入式LwIP協議棧的內存管理,湖北,2008.

主站蜘蛛池模板: 国产一级二级三级毛片| 一级毛片中文字幕| 色综合网址| 欧美一区福利| 男人天堂伊人网| 欧美精品亚洲二区| 欧类av怡春院| 日韩午夜福利在线观看| av在线5g无码天天| 91人妻日韩人妻无码专区精品| 热re99久久精品国99热| 99久久亚洲综合精品TS| 欧美在线一二区| 久久国产亚洲欧美日韩精品| 无码aaa视频| 精品91视频| 91成人免费观看在线观看| 欧美亚洲一区二区三区导航| 亚洲欧洲AV一区二区三区| 夜夜高潮夜夜爽国产伦精品| 亚洲一区毛片| 一级看片免费视频| 免费在线a视频| 日韩a在线观看免费观看| 人妻无码中文字幕一区二区三区| 亚洲中文字幕无码mv| 亚洲最大综合网| 亚洲国产成人精品一二区| 国产乱子伦精品视频| 国产又粗又猛又爽| JIZZ亚洲国产| av在线人妻熟妇| 在线视频一区二区三区不卡| 美美女高清毛片视频免费观看| 午夜a视频| 精品福利一区二区免费视频| 精品三级网站| 国产精品无码在线看| 97在线免费| 99性视频| 亚洲日韩日本中文在线| 午夜福利免费视频| 四虎在线高清无码| 欧美乱妇高清无乱码免费| 日本免费a视频| 国产美女精品人人做人人爽| 伊人久久福利中文字幕| 久久免费观看视频| 久久精品中文字幕免费| 国产精品美女自慰喷水| 国产成人一区在线播放| 欧美不卡在线视频| 精品撒尿视频一区二区三区| 欧美曰批视频免费播放免费| 欧美日韩精品在线播放| 国产香蕉97碰碰视频VA碰碰看 | 2022国产91精品久久久久久| 一级香蕉视频在线观看| 亚洲国产清纯| 国产成本人片免费a∨短片| 日韩123欧美字幕| 亚洲女同欧美在线| 全免费a级毛片免费看不卡| 制服丝袜国产精品| 亚洲视频在线网| 最新日韩AV网址在线观看| 婷婷六月综合网| 无码不卡的中文字幕视频| 91精品小视频| 国禁国产you女视频网站| 亚洲不卡无码av中文字幕| 九九视频在线免费观看| AV在线天堂进入| 亚洲天堂免费观看| 成人免费网站在线观看| 成人免费午夜视频| 国产成人精品一区二区秒拍1o| 精品99在线观看| 97人妻精品专区久久久久| 福利在线不卡一区| 国产无码性爱一区二区三区| 538精品在线观看|