• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Jiang's C++ Space

            創作,也是一種學習的過程。

               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            Windows Mobile的ROM,RAM可能會比較令人迷惑,這是因為:操作系統所說的ROM,RAM并不是硬件上的ROM芯片和RAM芯片。概念不同,所以必須理解清楚這個不同之后才能繼續。

            首先說硬件上的ROM,RAM,我們購買手機的時候,在手機參數里通常喜歡這么說明(以我的HTC HD2為例):

            ROM:1024M
            RAM:576M

            這是什么意思呢?這指的是手機上面的兩顆芯片的數據容量,ROM這顆芯片其實并非真的Read-only,它的特點只是斷電后上面數據不會丟失,而RAM這顆芯片則跟我們PC上的內存條芯片一樣,斷電后數據丟失。

            接下來是操作系統所說的ROM和RAM,Windows Mobile的刷機其實就是將ROM文件的內容寫入到那顆ROM芯片去。而操作系統第一次啟動的時候將完成一些后續的相關初始化。Windows Mobile所認為的ROM,指的是ROM芯片中被寫入的那些只讀的部分,這部分的內容是不能改變的,(刷機才能改)那么剩下的能被程序和操作系統改變的,就是RAM了,所以RAM也不等同于硬件上的RAM芯片,它還包括了ROM芯片中可以讀寫的那一部分。

            那么,下面所提到的ROM和RAM都是操作系統概念上的ROM和RAM,而不是硬件上ROM芯片和RAM芯片。

            任何Windows Mobile設備,ROM保存了整個操作系統,包括操作系統自帶的那些應用程序,也都在ROM里邊。如果ROM里邊的模塊(在資源管理器中看到的可執行文件,通常是EXE和DLL,在這里稱之為模塊)沒有被壓縮,那么操作系統就它“當地執行”(Excute In Place,也就是縮寫詞XIP);反之,如果ROM里邊的模塊是壓縮過的,那操作系統就只能先把模塊解壓縮到RAM中,然后再在RAM中執行它。至于哪些模塊可以XIP,那是OEM相關的。

            使用XIP有很大好處,最重要的是節省了寶貴的RAM,也節省了模塊家載入RAM中所需要消耗的時間。

            那我們平常安裝的軟件,保存的配置,是存放在哪里呢?——存放在“對象存儲”(Object Store)或者卡上,存放在“對象存儲”或者卡上的可執行模塊,是無法XIP的,只能先加載入RAM,然后再在RAM中執行。

            上面提到了“對象存儲”,下面進一步講解:

            Windows Mobile的RAM(再次提醒一下,指的不是硬件上的RAM芯片)分為兩個部分:

            其一就是“對象存儲”,“對象存儲”里的內容在斷電后繼續保留,不會丟失;另一個就是“程序內存”,程序內存的內容會在斷電后丟失。

            “對象存儲”存放的內容包括各種文件,數據庫,數據庫記錄,注冊表等;而“程序內存”則存放應用程序運行時候的堆(heap)和棧(stack)。

            當Windows Mobile啟動的時候,它創建了單獨的4G虛擬地址空間,這4G的空間中劃分了33個格子,每個格子32M,所有的進程共享這個地址空間,當一個進程啟動的時候,操作系統就為它選一個格子來映射。這是跟桌面的Windows很不一樣的機制,據說Windows CE 6.0已經改進了這種內存機制,但最新版本的Windows Mobile 6.5其實還是基于Windows CE 5.x內核的。微軟這么設計估計是因為想節省便攜式設備本來就很寶貴的資源,但這樣做的缺點顯而易見,一是只能最多跑32個進程(第1個格子總是用來映射前端進程的地址空間),二是每個進程默認只能有32M的虛擬空間(雖然你還可以通過內存映射文件機制或調用VirtualAlloc函數來分配超過32M的虛擬內存)。

             

            我們在Windows Mobile的系統設置里面看到的“主內存”,指的就是RAM。而ROM呢?ROM不光是只讀,我認為它還是不可讀,幾乎不可見的,常規的程序是看不到ROM的,即便你能夠在資源管理器里找到那些屬于ROM的“文件”,但你還是無法讀取它或者將它“復制”出來。



            如上圖,主內存分兩類,一是“存儲”,一是“程序”,其實也就是前面提到的“對象存儲”和“程序內存”了。也許你發覺“程序”的總內存只有460.02M,而不是硬件上標稱的576M,要解釋這個可相當不容易,具體參考我前面轉載的一篇文章:

            http://www.shnenglu.com/guogangj/archive/2010/12/19/136927.html
            posted on 2011-03-24 16:39 Jiang Guogang 閱讀(1036) 評論(2)  編輯 收藏 引用 所屬分類: Windows Embedded Programming

            評論

            # re: 淺析Windows Mobile內存機制 2011-04-08 17:02 gejun
            呵呵,默默耕耘啊  回復  更多評論
              

            # re: 淺析Windows Mobile內存機制 2011-07-28 22:45 Matrix Chen
            學習了。手機上的RAM、ROM一直讓我很疑惑  回復  更多評論
              

            精品无码久久久久国产动漫3d| 青青青青久久精品国产h久久精品五福影院1421 | 国产成人99久久亚洲综合精品| 亚洲AⅤ优女AV综合久久久| 伊人久久国产免费观看视频 | 少妇被又大又粗又爽毛片久久黑人| 人妻丰满?V无码久久不卡| 亚洲精品综合久久| 久久久国产精品亚洲一区| 国产亚洲美女精品久久久| 久久WWW免费人成一看片| 久久精品免费一区二区三区| 亚洲精品无码专区久久同性男| 国产精品久久久久久久久免费| 久久综合久久伊人| 久久久综合九色合综国产| 久久久精品国产| 久久精品这里只有精99品| 久久99久久99精品免视看动漫| 国产精品美女久久久久AV福利| 久久精品蜜芽亚洲国产AV| 久久亚洲国产精品123区| 国产一久久香蕉国产线看观看| 狠狠色噜噜色狠狠狠综合久久| 国产激情久久久久影院老熟女| 高清免费久久午夜精品| 久久久久久久波多野结衣高潮| 日日狠狠久久偷偷色综合免费| 精品乱码久久久久久夜夜嗨| 久久91精品国产91久久户| 久久综合狠狠综合久久| 亚洲女久久久噜噜噜熟女| 国产精品久久久香蕉| 欧美日韩久久中文字幕| 亚洲人成电影网站久久| 久久免费视频1| 久久综合亚洲色HEZYO社区 | 性色欲网站人妻丰满中文久久不卡| 亚洲午夜无码AV毛片久久| 色婷婷噜噜久久国产精品12p| 久久久久九九精品影院|