• <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://m.shnenglu.com/guogangj/archive/2010/12/19/136927.html
            posted on 2011-03-24 16:39 Jiang Guogang 閱讀(1051) 評論(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一直讓我很疑惑  回復  更多評論
              

            久久婷婷五月综合97色| 国产精品美女久久久久av爽| 久久精品人妻中文系列| 蜜桃麻豆WWW久久囤产精品| 久久久久无码精品国产| 久久久青草青青亚洲国产免观| 久久久精品久久久久久 | 久久AV高清无码| 久久激情五月丁香伊人| 亚洲AV无码久久精品成人| 九九久久精品国产| 久久亚洲私人国产精品vA| 99久久国产亚洲高清观看2024 | 久久超碰97人人做人人爱| 久久精品国产只有精品66| 亚洲级αV无码毛片久久精品 | 中文字幕无码久久久| 97超级碰碰碰碰久久久久| 午夜精品久久久久久99热| 欧美国产成人久久精品| 国产国产成人久久精品| 久久99精品久久久久子伦| 亚洲中文久久精品无码ww16| 久久久久九国产精品| 色综合久久综合网观看| 国产麻豆精品久久一二三| 久久人妻少妇嫩草AV蜜桃| 一本久道久久综合狠狠躁AV| 久久久久九九精品影院| 国产精品青草久久久久福利99 | 国产成人久久精品二区三区| 国产精品久久久久久搜索| 精品久久久无码人妻中文字幕豆芽 | 久久国产精品无码一区二区三区 | 国内精品久久久久影院薰衣草| 久久久无码精品午夜| 四虎国产精品成人免费久久| 色播久久人人爽人人爽人人片aV| 国产精品成人精品久久久| 国产一区二区三精品久久久无广告 | 狠狠精品久久久无码中文字幕|