海上月明

          editer by sun
          posts - 162, comments - 51, trackbacks - 0, articles - 8
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          [轉]NVFS概述

          Posted on 2008-12-19 15:33 pts 閱讀(363) 評論(0)  編輯  收藏 所屬分類: Others

          NVFS概述(T5,TE2,TX,LD,Treo650,Z22)+DBCacheTool


          轉貼自NCDIGI

          為什么需要NVFS

          自從2004年底PalmOne推出第一只NVFS機器??Tungsten T5以來,后續機型無一例外地采用了NVFS系統,象LifeDrive,Tungsten E2。等到回歸Palm的時候,又有T|X,Z22。當然,少不了Treo650。
          NVFS是什么?為什么需要NVFS?
          基本的幾點,NVFS,全名Non-Volatile File System(非揮發性文件系統):
          1:提供了對非揮發性閃存式內存的支持(原來僅有ROM采用)
          2:提供了完整的本地文件系統(以前Palm一直被人詬病為內存混亂)
          3:提供了內置驅動器(支持充分利用超大容量的內存)

          NVFS特征:

          Palm OS 5.4.x(Garnet)

          Palm OS 5.4.5:Tungsten T5,LifeDrive,Treo 650
          Palm OS 5.4.8:升級過的上述三件,還有Tungsten E2
          Palm OS 5.4.9:T|X,Z22,升級過的Treo650
          (版本號不能一一檢查,希望各位胖友指正)


          NVFS基本結構

          以前的OS1-4,OS5,OS5.2都是采用同樣的架構:
          1:一塊NOR Flash,用于儲存Palm OS
          2:一塊SDRAM,分為
            存儲堆(Storage Heap)用于儲存用戶程序和數據
            動態內存堆(Dynamic Heap)用于儲存程序執行中的臨時數據

          這時,一旦電力失去時間過長,基于SDRAM本身屬性,它上面的所有數據都會被擦除。

          于是,產生了NVFS的必要性。斷電雖然罕見,但是一旦發生,對用戶造成的損傷是很大的。NVFS解決了這個問題。

          對于一臺NVFS機器,,同樣有兩部分:
          (下文用ROM指代一般的不可寫區域,rom指代OS)
          1:一塊NAND Flash,包括:
            引導區
            rom標記
            Overflow(超溢區,是壓縮的rom)
            存儲堆標記
            存儲堆(storage heap),包括虛擬RAM區(RescoExplorer中的A盤)和磁盤(內置驅動器,可選,如T5的INTERNAL和LD的LIFEDRIVE。 在RescoExplorer中,為B盤。注意插卡后的其他Palm卡是B盤,但有內置驅動器的插卡后卡是C盤)
            其他部分為壞道保留。
          2:一塊DRAM,包括(DRAM也就是動態隨機存儲,SDRAM是DRAM的一種)
            ROM(在RescoExplorer中為ROM)
            數據庫緩存(DBCache)
            動態內存堆(Dynamic Heap)
            還有一些混合內容。
          注意:在Soft Reset開始時,DRAM是清空的。


          以前Palm的啟動過程(Hard Reset):
          引導區直接引導NOR Flash中的Palm OS,Palm OS清空RAM并寫入一些文件,并繼續引導SDRAM中的程序。Soft Reset時不修改RAM。

          NVFS-Palm的啟動過程(Hard Reset):
          首 先進行Soft Reset但是自動格式化存儲堆(storage heap)。然后引導區將NAND Flash中Overflow(壓縮的rom)解壓,并且按需要,釋放到存儲堆(storage heap)和ROM。然后ROM開始執行,并引導storage heap中的程序。

          這解釋了現在Palm機器CPU越來越強重啟越來越 慢的奇怪現象。以前的Palm重啟速度非常快,一般瞬間-5s即可。然而由于要處理很多數據,NVFS-Palm重啟很慢,象LD大概要兩分鐘(我沒用過 LD,是道聽途說的,希望有LD的朋友指正)。同時,硬啟后T5,LD在內在磁盤里有文件,就是Overflow里釋放出來的。

          同是Flash(閃存),有什么區別?
          NOR Flash是XIP(就地執行)式的,任何一個字節均能被直接訪問。
          NAND Flash則相反,必須512Byte一起讀出和寫入。無法直接執行。

          所以,才不辭勞苦地把rom壓縮起來(節約空間),然后釋放到DRAM執行。雖然多了一步,但工業上NAND Flash產能高,質量好,容量大。為了提高容量,需要采用NAND Flash。

          我們以Treo 650和Tungsten T5(未升級)為例,具體說明內存分布情況:
          Treo 650:
          NAND Flash 32MB
          引導區……………………<1MB
          超溢區(壓縮rom)……8MB
          存儲堆??虛擬RAM……24MB
          存儲堆??內有磁盤……無

          Tungsten T5:
          NAND Flash 256MB
          引導區……………………<1MB
          超溢區(壓縮rom)……14MB
          存儲堆??虛擬RAM……64MB
          存儲堆??內有磁盤……176MB(實際為161MB)

          兩者的
          DRAM 32MB
          ROM………………………16MB
          DBCache…………………10MB(升級后的T5為14.8MB)
          Dynamic Memory…………6MB(實際為4MB)

          NVFS中的數據存儲與程序執行:

          基于NAND Flash糟糕的512B限制,使得空間出現了大量浪費。
          尤 其在OS 5.4.5中,每個數據庫的每個記錄(pdb/prc,prc其實是特殊pdb。每個pdb由一個文件頭和一系列record(記錄)組成)必須至少占據 512B。如果一個1K的文件,由100個10B的記錄組成,那么實際消耗為100*512=51.2KB。當然這是極端情況,但一般會增大2-3倍。

          在OS 5.4.8/9中,指向記錄的方法作了改進。每個512B區塊最多包含16個32B的sector(選擇子)。如果記錄一個<32B的數據,只需要 一塊,剩下的空間仍然可用其他sector(選擇子)訪問。如果有一個大小為N的數據,那么系統會找到一個恰比N大的2的冪,并消耗這么大一個空間。譬 如,128<188<256,系統將分配8個sector給188B的一個記錄,消耗256B空間。剩余256B仍然可用。此時,上面1K的 文件將占據100*32B=3.2K。浪費被縮小了很多。不過,系統仍然要讀出512B的內容到內存,然后從內存中尋找對應數據。這樣開銷又大了些。不過 是值得的。

          要執行一個程序,必須先把程序刷進DBCache里。否則,由于不能直接訪問任意字節,程序無法執行。所 以,SoftReset后第一次啟動程序會比較慢,因為程序從NAND Flash拷貝到DBCache。之后,由于程序(可能還有一些必須數據庫)一直留在DRAM里,啟動速度就絲毫不比以前的Palm慢了。

          寫數據庫的命令實際上都寫在DBCache中。只有當DmSyncDatabase執行后,DBCache中的修改才會寫入Storage Heap。同時把不用的數據庫清除。

          (下面用RAM指代RAM虛擬區)

          針對NVFS的問題:
          核心問題:DBCache

          每個程序執行必須先進入DBCache。

          DBCache 一般只有10-11MB(即使是最大的TT5,在Warm Reset時也只有11MB剩余),正常情況還要被系統用去一部分(Hard Reset后的升級T5的是8.5MB)。裝上軟件后,由于啟動時,系統會向RAM中所有程序發出軟啟運行指令,DBCache又被耗了一些。我的TT5 正常開機是5.2MB。

          由于有的程序在正常執行時和軟啟運行時狀態不一樣,DBCache還會被繼續消耗。當從卡上運行時,程序會直接拷入DBCache。

          如 果DBCache不夠但仍然向其中拷入文件時,會導致Fatal Exception??我想用過最新的Palm的胖友都知道這個著名畫面吧,一個黑框,標題Fatal Exception,內容Fatal Exception ,下面有Reset字樣。還有一個較為罕見的錯誤,就是DmQueryDatabase。在SuperMiner中,DBCache不足會產生這個錯誤。 另外,有些程序包含一些不兼容的內容(尤其是Hack),在操作DBCache時也會出現錯誤。

          尤其是OS 5.4.5,由于系統不會自動清理(也就是DmSyncDataBase),導致DBCache迅速耗盡。在程序調穩定之后,找到DBCacheTool 之前,大約使用時間12h必須軟啟一次??因為馬上要Fatal Exception了。這就是TT5,Treo650老死機的根源。至于網上有篇文章說要刪除shim_logs,其實完全不必。因為這個文件是很正常 的。缺了這個T5容易進入按開機鍵出現palmOne logo然后黑屏的情況。只要用DBCacheTool,問題基本可以解決。

          對于OS 5.4.7以上版本,系統會自動用DmSyncDatabase清理,一般DBCache不會消耗很快。尤其是運行卡上的程序不會造成DBCache損耗。DBCacheTool一般也不用了。

          然而對OS 5.4.8,有的程序會把數據庫一直標記為使用中(其實不用了)導致DmSyncDatabase對它們失效,所以DBCacheTool Dm模式還是有效的。OS 5.4.9可以識別這些數據庫并去掉標記。

          解決DBCache不足的辦法有幾個,這里有兩個小軟件:
          DBCacheTool: 由McFile作者開發。這里是0.2a版。它可以通過兩種方式釋放DBCache:Sync(使用DmSyncDatabase)和Dm(由軟件逐個分 析DBCache中的數據庫,如認為不會再用便刷回NAND Flash然后刪掉)。還可以在軟啟時自動進行清理(不過推薦不要用,可能導致循環死機,不如進入Launcher后自己操作)

          它帶有一個DA文件,具有方便查看剩余DBCache和選擇清理的功能。
          Sync模式基本瞬時,除非垃圾太多了會需要1-2s。Dm模式清理速度為20-40s一次。

          RLock: 由Resco公司開發的。可以“鎖住”程序??把程序強行放在Dynamic Memory中,騰出DBCache。這可以釋放DBCache(因為動態內存不大會不夠),而且有的程序由于不兼容,會直接把DBCache搞糟,鎖住 后程序會操作動態內存而不是DBCache,就不會再出問題。程序幫助中有必須鎖的程序列表。

          還有,如上所述,DBCache的大小和 RAM中的程序是有關系的。如Picsel Brownser和Flash Player就是DBCache殺手??每個消耗2MB。而且從開機就開始。Novii Remote視數據庫數,會消耗1M。各種Launcher都會消耗x00KB。TCPMP會消耗800KB-1M。Repligo有 300-500KB。Documents To Go 和CJKOS都是大戶,尤其是字體文件。不過這兩個東西大家應該留在RAM里的,只要CJKOS不要裝太多字體就好了??尤其是GB/GBK 24*24字體。


          運行一些程序的說明:

          特別吃DBCache的如Classics(大約8-9M),SharkAttack,Snails(大約7.5-8M),Arvalva(4-6M,估計運行中會增加),Edge(4-5M),My Little Tanks(4.2M)
          Classics未升級的T5是基本上不能運行的(Warm Reset下只有8.1M)

          >6M的程序如果不用Warm Reset??按住向上鍵Reset,是難以運行的。不過Warm Reset后,由于驅動沒有加載,五向鍵會失效,這是一件麻煩的事情。

          LJP和Firestorm,在NVFS機器上用UDMH也可能內存不足。這是因為DBCache的原因。Warm Reset配合UDMH或許是個好主意。

          RescoExplorer在備份/導入時會逐漸消耗DBCache。推薦大家備份/導入30-40%左右就停止,然后繼續。因為停止時RescoExplorer會自動釋放剛才占用的內存。(其實港版OS5.4.5 TT5配合RescoExplorer是可以備份的)

          文件系統:

          肯定有胖友注意過RescoExplorer中有一個A:,下面有一個文件夾PALM_DM,里面的文件和RAM一模一樣(如果RescoExplorer版本太低會顯示權限不足無法訪問),而且屬性后面有個RAM值。這就是虛擬RAM的文件系統。
          在高版本RescoExplorer中RAM中文件屬性有個NVFS Size,就是在文件系統中的大小??如前所述,由于糟糕的512B,文件大小比內容大。

          而且,PALM_DM中的文件無法刪除??被虛擬RAM系統給鎖定了。
          (PS: 有時這個文件夾下會出現ExgLocalFile_文件,這是RescoExplorer從卡向內存拷文件時中斷的垃圾文件。一般在誤點了卡中一大文件, 然后發現Palm失去響應,就Reset,會出現這種情況。到Options->General->Tap on name ="Open",把前面勾去掉就好。如果你的內存莫名其妙消失一大片而RAM里沒多東西,一般問題就是這個。)

          作為過渡,TT5的A:基本只有PALM_DM和Blazer臨時文件。那些系統可以不依賴外接卡(如桌面圖案)調用的在INTERNAL里面。
          T|X已經在A:下面放了不少文件夾,象Blazer,媒體和Pocket Tunes都在下面有文件可操作(圖片,歌曲,網頁)。桌面圖案也移到了這里。可見,內部文件系統正在逐漸成熟并進入應用。



          后記:花了4個小時,終于寫好了。
          當初二我看到Dell Axim50廣告知道了有PPC這種東西。于是很心動。準備上大學了去買一只。
          然后在我同學那里見到了Palm m135,被上面Warfare華麗的效果震撼了。
          于是知道了世界上有Palm這種東西。
          快到高三,由于急需圖形計算器,又不甘心TI-92+和TI Voyage 200的昂貴價格和糟糕的可擴展性,準備找只Palm或PPC來。
          然后找到了TomPDA。然后知道了Palm和PPC的恩恩怨怨。
          然 后我去PalmSource和Microsoft找了些技術文檔來比較。當看到了Zen of Palm的時候,立刻,我被Palm征服了,它完全改造了我的想法。之后我毫不猶豫地研究了Palm的機型,最后在2005的暑假入了一只TT5。很不 幸,由于在這里不夠認真,沒發現T5的非升級是只Bug機。
          不過很慶幸TT5是Bug機。為了擺弄它,才把Palm OS好好研究了一遍。現在才發現,方便好用才是重要的。
          又很慶幸于Palm優良的服務。這個月初,由于底部筆尖漂移,送修了。花了43.5元郵費,修好了。寄出后4天從總部發出,12天后到家。當初接線員還說要15-21工作日呢。真是保險過頭。

          盡 管Palm OS現在被人說成江河日下,今天又在電腦報上看到它把TT5內存寫成16M,還有“菲菲說‘Palm的發展落后于PDA’”。實在是很惱火。現在除了 Skype,Palm沒有什么弱于PPC的多媒體應用了。PIM更是Palm強項,LifeBalance實在是好用。用過hp iPAQ rz1919,一個1800的PPC,居然內存只有32M可用,分辨率只有320*240,主頻只有200MHz。性價比不敢恭維。
          Palm上手比PPC絲毫不差。我買來后一天就把內置程序全部學會了。三天配置的軟件基本上夠用了。雖然調穩定花了三個月??不過不買bug機不會有這種問題。

          ALU已經出來了。不知為什么還沒有使用的計劃。去年LD出來不用OS6時我很懷疑Palm是否準備用OS6??確實到今天還沒有。原以為Palm遲遲不發OS6是等待ALU,結果等來今年Nelson想賣掉Palm的消息。祝Palm一路走好。

          不得不說多媒體、廣告和配置對新手是最看中的。Palm偏偏缺了這些??或說被人這么認為。

          最 后批評一下中國的廣告數碼市場和這么容易被廣告誤導的消費群體。《讀者》上鋪天蓋地的EJP廣告就是明證。好記星e8000,和Palm IIIxe相當的性能賣1280(估計是廣告費占成本大頭);e百分反應慢的象蝸牛,要1200;這兩樣居然銷量還很好……不得不說好記星的造型相對文曲 星來說酷多了,對某些追求時髦的學生殺傷力太大。結果性價比低的變態的產品誕生了。現在學生中盲目攀比的風氣實在太重。性能強的手機主要功能是游戲。性能 強的EJP還是游戲。完全是游戲機了,還不如NDS和GBA性價比高。MP4亦是不如PSP。更新換代也太快。我自己已經淘汰了一只文曲星 PC200,PC2000c,一只Nokia 8210(現在是6230)。自己想想也忒浪費了。要不是為了TT5的藍牙我不會去換6230。但現在除了轉存短信,拍照-傳照片,藍牙就不用了。wap 上網還是小屏的手機方便。其實沒有這些關系也不大。現在我才明白什么叫夠用就好,尤其是方便好用。買東西不是買自己口袋能承受的,而是買自己手上能用的。 超出使用范圍的,就叫做炫耀和攀比了。

          頂端 Posted:2006-05-17 09:31 | [樓 主]
          主站蜘蛛池模板: 齐河县| 桓台县| 江川县| 栾城县| 宝应县| 枝江市| 拉萨市| 甘南县| 巧家县| 台山市| 永顺县| 益阳市| 高青县| 德惠市| 沽源县| 留坝县| 栾川县| 临桂县| 三明市| 清水县| 桐梓县| 柳林县| 格尔木市| 平远县| 临安市| 马龙县| 南汇区| 渝北区| 丹凤县| 正镶白旗| 韶山市| 广南县| 运城市| 长海县| 井冈山市| 新邵县| 洪江市| 石渠县| 临湘市| 聊城市| 万安县|