Posted on 2008-12-19 15:33
pts 閱讀(359)
評論(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 |
[樓 主]