專利名稱:帶有相對(duì)受限存儲(chǔ)空間以及操作/文件系統(tǒng)的計(jì)算裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及計(jì)算裝置,但尤其涉及一種帶有相對(duì)受限存儲(chǔ)空間的計(jì)算裝置,例如象帶有一個(gè)相對(duì)較小的硬盤驅(qū)動(dòng)器或一個(gè)隨機(jī)存儲(chǔ)器(RAM)的便攜式計(jì)算裝置,硬盤驅(qū)動(dòng)器或隨機(jī)存儲(chǔ)器上存儲(chǔ)著用于這類裝置的操作系統(tǒng)。更特殊的,本發(fā)明涉及這樣一種計(jì)算裝置及其操作/文件系統(tǒng),特別涉及到以一種相對(duì)安全和有效的方式執(zhí)行文件系統(tǒng)的操作。
背景技術(shù):
在許多象個(gè)人計(jì)算機(jī)、游戲計(jì)算機(jī)、家用視頻錄制計(jì)算機(jī)等等的典型計(jì)算裝置中,計(jì)算裝置帶有一個(gè)相對(duì)較大的存儲(chǔ)裝置,其上可以存儲(chǔ)與計(jì)算裝置有關(guān)的數(shù)據(jù),當(dāng)然包括能夠在其上執(zhí)行的應(yīng)用程序以及可以在其上執(zhí)行的一個(gè)操作系統(tǒng)和/或文件系統(tǒng)(以下稱為“文件系統(tǒng)”),以便操作相同并允許對(duì)存儲(chǔ)裝置進(jìn)行存取。因?yàn)榇鎯?chǔ)裝置相對(duì)較大,供存儲(chǔ)裝置上的應(yīng)用程序和文件系統(tǒng)使用的空間量相對(duì)來(lái)說(shuō)是可以忽略的,并且文件維護(hù)、系統(tǒng)更新、文件存取、文件存儲(chǔ)等等相關(guān)問(wèn)題也就不是特別的嚴(yán)重。
然而,當(dāng)計(jì)算裝置不包括這樣相對(duì)較大的存儲(chǔ)裝置,取而代之包括一個(gè)相對(duì)較小的存儲(chǔ)裝置時(shí),裝置上的應(yīng)用程序和操作系統(tǒng)使用的空間量就變得相對(duì)重要,前面提到的問(wèn)題能夠并且確實(shí)變得更嚴(yán)重。例如,當(dāng)該計(jì)算裝置是一種便攜式計(jì)算裝置或類似裝置時(shí),類似裝置例如象便攜式音頻或視頻播放器或便攜式游戲計(jì)算機(jī)這樣的裝置,它具有相對(duì)較小的尺寸,很可能這樣的計(jì)算裝置就包括一個(gè)相對(duì)較小的存儲(chǔ)裝置,特別是因?yàn)樵撚?jì)算裝置可能在需要的功能方面受到限制,其中應(yīng)用程序能在其上執(zhí)行,并且存儲(chǔ)裝置的物理尺寸能夠進(jìn)行調(diào)整。應(yīng)當(dāng)可以理解,因?yàn)榇鎯?chǔ)裝置相對(duì)較小,供其上的操作系統(tǒng)使用的空間量就相對(duì)重要,并且文件維護(hù)、系統(tǒng)更新、文件存取、文件存儲(chǔ)等等相關(guān)問(wèn)題現(xiàn)在就需要仔細(xì)的考慮。
必須要考慮的一個(gè)問(wèn)題是怎么樣對(duì)相對(duì)較小的存儲(chǔ)裝置上的應(yīng)用程序或文件系統(tǒng)進(jìn)行更新。特別的,在相對(duì)較大的存儲(chǔ)裝置中,這樣的更新可以通過(guò)向存儲(chǔ)裝置中的未使用部分成功寫(xiě)入更新數(shù)據(jù),然后從該存儲(chǔ)裝置的另一部分刪除掉相應(yīng)的舊數(shù)據(jù)來(lái)實(shí)現(xiàn)。然而,在相對(duì)較小的存儲(chǔ)裝置中,其上的空間可能無(wú)法用來(lái)在刪除舊數(shù)據(jù)之前寫(xiě)入更新數(shù)據(jù),因此舊數(shù)據(jù)必須在寫(xiě)入更新數(shù)據(jù)之前刪除以便釋放空間。
嚴(yán)重的,盡管,如果應(yīng)用程序或文件系統(tǒng)的更新不知什么原因失敗了,并且其中的舊數(shù)據(jù)已經(jīng)被刪除,那么該計(jì)算裝置可能就沒(méi)有辦法恢復(fù)到先前的狀態(tài),在先前狀態(tài)中,未更新的應(yīng)用程序或文件系統(tǒng)可以在該計(jì)算裝置上運(yùn)行。對(duì)于應(yīng)用程序來(lái)說(shuō),如果可能進(jìn)行重載的話,直到應(yīng)用程序被重載,這樣的失敗可能是件討厭的事情。然而,對(duì)于文件系統(tǒng)來(lái)說(shuō),因?yàn)椋谌鄙倌芷鹱饔玫奈募到y(tǒng)的情況下,該計(jì)算裝置可能是無(wú)法工作的,所以這樣的失敗可能是災(zāi)難性的。相應(yīng)的,需要一種方法,該方法用于在帶有相對(duì)較小存儲(chǔ)裝置的計(jì)算裝置上對(duì)應(yīng)用程序和文件系統(tǒng)進(jìn)行更新,其中,該方法確保更新能夠成功,否則不允許執(zhí)行更新操作。
另一個(gè)需要考慮的問(wèn)題是如何在相對(duì)較小的存儲(chǔ)裝置上存儲(chǔ)文件。特別的,在相對(duì)較大的存儲(chǔ)裝置中,存儲(chǔ)文件是基于每一簇來(lái)執(zhí)行的,每個(gè)文件至少使用一簇,該簇可以被定義為1、2、4、8、16千字節(jié)或更多字節(jié)。這樣,如果僅有很小(例如一字節(jié))的文件數(shù)據(jù)量被安排到一個(gè)特殊的簇,在這樣的簇中所有保留的空間將不能被其它任何文件使用并且就這樣被浪費(fèi)掉。這些浪費(fèi)掉的空間在相對(duì)較大的存儲(chǔ)裝置中,特別是對(duì)于具有幾十或幾百個(gè)十億字節(jié)容量的存儲(chǔ)裝置來(lái)說(shuō)不是特別的重要。
然而,在相對(duì)較小的存儲(chǔ)裝置中,這樣浪費(fèi)掉的空間會(huì)很快上升到一個(gè)重要的程度,甚至于達(dá)到將存儲(chǔ)裝置空間用盡的程度。例如,一個(gè)具有16兆字節(jié)容量并且一簇被定義為16千字節(jié)的存儲(chǔ)裝置,即便每個(gè)文件僅有少量的字節(jié),這樣的存儲(chǔ)裝置也僅能保存大約1000個(gè)文件。此外,通常會(huì)有這種情況,如前所述的相對(duì)較小的存儲(chǔ)裝置實(shí)際上在其上已經(jīng)存儲(chǔ)了很多非常小的文件,這些文件都屬于幾個(gè)到幾百個(gè)字節(jié)的文件。相應(yīng)的,需要一種文件系統(tǒng)框架,在沒(méi)有過(guò)度浪費(fèi)空間的情況下,有效率地使用相對(duì)較小的存儲(chǔ)裝置的存儲(chǔ)容量。
還有另一個(gè)需要考慮的問(wèn)題是,當(dāng)文件包括未分配的部分或空數(shù)據(jù)時(shí),如何在相對(duì)較小的存儲(chǔ)裝置上存儲(chǔ)文件。如所能理解的那樣,文件中這些未分配的數(shù)據(jù)或空數(shù)據(jù)是文件現(xiàn)存空間中的數(shù)據(jù),但是其中的這些數(shù)據(jù)還沒(méi)有建立起來(lái)。例如,在一個(gè)特殊的128千字節(jié)的文件中,可能有這種情況,它的中間部分包括作為占位符的32千字節(jié)的空數(shù)據(jù),但稍后它會(huì)由某種類型的信息來(lái)填充。因此,這樣的空數(shù)據(jù)可能用全零或類似的方式來(lái)表示,并且稍后還可能由實(shí)體信息進(jìn)行填充。
特別的,在相對(duì)較大的存儲(chǔ)裝置中,盡管這樣的空數(shù)據(jù)不代表任何意思,這些文件的全部還是包括存儲(chǔ)的空數(shù)據(jù)。如所能理解的那樣,這些“存儲(chǔ)”的數(shù)據(jù)在相對(duì)較大的存儲(chǔ)空間上浪費(fèi)的空間,取而代之,能夠得到更好的利用。然而,還有,在相對(duì)較大的存儲(chǔ)裝置中,特別是對(duì)于具有幾十或幾百個(gè)十億字節(jié)容量的存儲(chǔ)裝置來(lái)說(shuō),這樣浪費(fèi)的空間不是特別的重要。
然而,還有,在相對(duì)較小的存儲(chǔ)裝置中,這些浪費(fèi)掉的空間能夠很快的上升到一個(gè)重要的程度,甚至于達(dá)到將存儲(chǔ)裝置空間用盡的程度。此外,可以理解,當(dāng)基于相對(duì)較小的存儲(chǔ)裝置中的舊文件,試圖在其上建立新文件時(shí),特別是當(dāng)該裝置幾乎飽和時(shí),這些浪費(fèi)掉的空間會(huì)起到干擾的作用。相應(yīng)的,需要一種文件結(jié)構(gòu),允許有效地使用相對(duì)較小的存儲(chǔ)裝置的存儲(chǔ)容量,尤其是當(dāng)該文件中包括空數(shù)據(jù)時(shí)。
還有另一個(gè)需要考慮的問(wèn)題是,如何在相對(duì)較小的存儲(chǔ)裝置中執(zhí)行文件。特別的,在可能包括相對(duì)較小存儲(chǔ)裝置的計(jì)算裝置中,例如象移動(dòng)電話,位置定位器,音樂(lè)播放器等等,用戶很可能希望請(qǐng)求的操作可以立即實(shí)施。換另一個(gè)角度說(shuō),如果請(qǐng)求的操作需要執(zhí)行一個(gè)可執(zhí)行文件的話,這樣的用戶不希望文件從存儲(chǔ)裝置加載到本地RAM或類似存儲(chǔ)器及準(zhǔn)備執(zhí)行需要等很多秒。此外,在一定的環(huán)境下,操作本來(lái)甚至可能需要幾乎立即執(zhí)行,例如象如果該計(jì)算裝置是處理突發(fā)事件的職員在突發(fā)事件中要用到的一臺(tái)便攜式通訊裝置。
相應(yīng)的,需要一種方法和機(jī)制,通過(guò)它計(jì)算裝置中存儲(chǔ)裝置上的文件幾乎能夠立即執(zhí)行。特別的,需要一種方法和機(jī)制,其中文件存儲(chǔ)在存儲(chǔ)裝置上并且能夠直接從其上執(zhí)行。更進(jìn)一步,需要一種方法和機(jī)制,通過(guò)它文件能夠以碎片方式存儲(chǔ)在存儲(chǔ)裝置上并且還能夠從這樣的存儲(chǔ)裝置上直接執(zhí)行。
發(fā)明內(nèi)容
通過(guò)本發(fā)明可以至少部分地使前面提到的需要得到滿足,其中本發(fā)明提出了一種對(duì)貯留在計(jì)算裝置的存儲(chǔ)裝置上的應(yīng)用程序進(jìn)行更新的方法。在該方法中,可以通過(guò)執(zhí)行除實(shí)際向該存儲(chǔ)裝置提交與更新有關(guān)的數(shù)據(jù)之外的所有所需操作來(lái)模擬更新,并判斷模擬的更新是否成功。如果成功,通過(guò)執(zhí)行同樣的所需操作來(lái)執(zhí)行更新并且還實(shí)際將與更新有關(guān)的數(shù)據(jù)提交給該存儲(chǔ)裝置。
通過(guò)本發(fā)明可以至少部分地使前面提到的需要得到滿足,其中計(jì)算裝置包括存儲(chǔ)裝置和用于在存儲(chǔ)裝置上存儲(chǔ)和提取文件的文件系統(tǒng)。該存儲(chǔ)裝置包括劃分成扇區(qū)的存儲(chǔ)空間,并且該文件系統(tǒng)基于每一扇區(qū)對(duì)該存儲(chǔ)裝置進(jìn)行外部尋址,但內(nèi)部將該存儲(chǔ)裝置的每個(gè)扇區(qū)劃分成信息塊,并且基于每一信息塊對(duì)每個(gè)扇區(qū)中的數(shù)據(jù)進(jìn)行管理。這樣,該文件系統(tǒng)通過(guò)對(duì)帶有信息塊的扇區(qū)進(jìn)行讀取和寫(xiě)入操作,來(lái)從該存儲(chǔ)裝置中讀取信息塊或者向該存儲(chǔ)裝置寫(xiě)入信息塊。
通過(guò)本發(fā)明進(jìn)一步可以至少部分地使前面提到的需要得到滿足,其中計(jì)算裝置包括存儲(chǔ)裝置,該存儲(chǔ)裝置中帶有文件以及用于在存儲(chǔ)裝置上存儲(chǔ)和提取該文件的文件系統(tǒng)。該文件包括多個(gè)段,其中至少一些段中的每一個(gè)都是空數(shù)據(jù),以及至少一些段中的每一個(gè)都是實(shí)體數(shù)據(jù)。該文件中包括為每個(gè)空數(shù)據(jù)段分配的空間,但是這樣分配的空間實(shí)際上沒(méi)有填充信息,以及該文件中包括為每個(gè)實(shí)體數(shù)據(jù)段分配的空間,并且這樣分配的空間實(shí)際上填充了信息。每個(gè)空數(shù)據(jù)段實(shí)際上沒(méi)有物理存儲(chǔ)到存儲(chǔ)裝置上,而每個(gè)實(shí)體數(shù)據(jù)段實(shí)際存儲(chǔ)到了存儲(chǔ)裝置上。
通過(guò)本發(fā)明更進(jìn)一步可以至少部分地使前面提到的需要得到滿足,其中計(jì)算裝置包括處理器、帶有可執(zhí)行文件的存儲(chǔ)裝置、以及代表該處理器用于執(zhí)行該存儲(chǔ)器上的文件的文件系統(tǒng)。該文件被分割成存儲(chǔ)裝置上多個(gè)不連續(xù)的碎片,該計(jì)算裝置進(jìn)一步包括置于該處理器和該存儲(chǔ)裝置之間的虛擬地址轉(zhuǎn)換器,用于在存儲(chǔ)裝置上的文件的碎片的物理地址和供該處理器使用的相應(yīng)的虛擬地址之間進(jìn)行轉(zhuǎn)換。
結(jié)合附圖進(jìn)行閱讀,可以更好的理解前面的概述,以及接下來(lái)對(duì)本發(fā)明實(shí)施例的詳細(xì)描述。出于闡明本發(fā)明的目的,附圖中示出了目前優(yōu)選的實(shí)施例。然而,可以理解,本發(fā)明不局限于給出的精確安排和手段。在附圖中,圖1是表示通用目的計(jì)算機(jī)系統(tǒng)的方框圖,本發(fā)明多個(gè)方面和/或其中的部分可以結(jié)合入其中,并且圖2示出的是一種計(jì)算裝置的方框圖,該計(jì)算裝置帶有一個(gè)存儲(chǔ)裝置,其上存儲(chǔ)的數(shù)據(jù)包括應(yīng)用程序和一個(gè)文件系統(tǒng)以及與該數(shù)據(jù)相關(guān)的元數(shù)據(jù);圖3示出的是,依照本發(fā)明的一個(gè)實(shí)施例,圖2中的計(jì)算裝置在對(duì)存儲(chǔ)裝置中的應(yīng)用程序進(jìn)行更新的過(guò)程中,所執(zhí)行的關(guān)鍵步驟的流程圖;圖4示出的是,依照本發(fā)明一個(gè)實(shí)施例,將圖2中存儲(chǔ)裝置上的扇區(qū)細(xì)分成信息塊的方框圖,以及圖4A示出的是,根據(jù)圖4中的信息塊存儲(chǔ)的文件以及每個(gè)文件的每個(gè)碎片的最小尺寸塊的方框圖;圖5示出的是,依照本發(fā)明一個(gè)實(shí)施例,根據(jù)一個(gè)稀疏實(shí)現(xiàn),存儲(chǔ)在圖2的存儲(chǔ)裝置上的文件的方框圖,其中實(shí)際上不對(duì)文件的空數(shù)據(jù)段進(jìn)行存儲(chǔ);圖6示出的是,根據(jù)本發(fā)明的一個(gè)實(shí)施例,執(zhí)行與圖5的文件存儲(chǔ)的稀疏實(shí)現(xiàn)有關(guān)的關(guān)鍵步驟的流程圖;圖7示出的是,根據(jù)本發(fā)明的一個(gè)實(shí)施例,存儲(chǔ)在圖2存儲(chǔ)器上并且就地可執(zhí)行的文件的方框圖;以及圖8示出的是,根據(jù)本發(fā)明的一個(gè)實(shí)施例,執(zhí)行與就地執(zhí)行圖7文件有關(guān)的關(guān)鍵步驟的流程圖。
具體實(shí)施例方式
計(jì)算機(jī)環(huán)境圖1以及接下來(lái)的討論試圖對(duì)適當(dāng)?shù)挠?jì)算環(huán)境進(jìn)行簡(jiǎn)要概括的說(shuō)明,其中,本發(fā)明和/或其中的部分可以實(shí)施。盡管不需要,但還是在能夠由象客戶工作站或服務(wù)器之類的計(jì)算機(jī)執(zhí)行的,象程序模塊之類的計(jì)算機(jī)可執(zhí)行指令的一般性前后關(guān)系方面對(duì)本發(fā)明進(jìn)行了說(shuō)明。通常來(lái)說(shuō),程序模塊包括例行程序、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)以及類似的執(zhí)行特殊任務(wù)的或?qū)崿F(xiàn)特殊抽象數(shù)據(jù)類型的模塊。而且,可以意識(shí)到,本發(fā)明和/或其中的部分可以通過(guò)其它計(jì)算機(jī)系統(tǒng)配置來(lái)實(shí)現(xiàn),包括手持裝置、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、迷你計(jì)算機(jī)、大型計(jì)算機(jī)等。本發(fā)明還可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中由通過(guò)一個(gè)通訊網(wǎng)絡(luò)連接起來(lái)的遠(yuǎn)程處理裝置來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以設(shè)置在本地以及遠(yuǎn)程內(nèi)存存儲(chǔ)裝置中。
如圖1所示,一種典型的通用目的計(jì)算系統(tǒng)包括傳統(tǒng)的個(gè)人計(jì)算機(jī)120或類似的裝置,其包括處理單元121,系統(tǒng)內(nèi)存122,以及耦合到包括連接到處理單元121在內(nèi)的多種系統(tǒng)組件的系統(tǒng)總線123。該系統(tǒng)總線123可以是包括內(nèi)存總線或內(nèi)存控制器,外設(shè)總線以及使用多種總線體系中的任何一種的本地總線在內(nèi)的幾種總線類型中的任何一種。該系統(tǒng)內(nèi)存包括只讀存儲(chǔ)器(ROM)124和隨機(jī)存儲(chǔ)器(RAM)125。存儲(chǔ)在ROM 124中的基本輸入/輸出系統(tǒng)126(BIOS),包括基本例行程序,該基本例行程序有助于在個(gè)人計(jì)算機(jī)120的元件之間傳輸信息,比如在啟動(dòng)期間。
該個(gè)人計(jì)算機(jī)120可以進(jìn)一步包括硬盤驅(qū)動(dòng)器127,用于從硬盤(未示出)進(jìn)行了讀操作以及向其進(jìn)行寫(xiě)操作,磁盤驅(qū)動(dòng)器128,用于從可移動(dòng)磁盤129進(jìn)行讀操作以及向其進(jìn)行寫(xiě)操作,以及光盤驅(qū)動(dòng)器130,用于從象CD-ROM或其它光學(xué)介質(zhì)之類的可移動(dòng)光盤131進(jìn)行讀操作以及向其進(jìn)行寫(xiě)操作。硬盤驅(qū)動(dòng)器127、磁盤驅(qū)動(dòng)器128,以及光盤驅(qū)動(dòng)器130分別通過(guò)硬盤驅(qū)動(dòng)接口132、磁盤驅(qū)動(dòng)接口133,以及光盤驅(qū)動(dòng)接口134連接到系統(tǒng)總線上。驅(qū)動(dòng)器以及與其關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為個(gè)人計(jì)算機(jī)120的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其它數(shù)據(jù)提供非易失性存儲(chǔ)。
盡管這里說(shuō)明的典型環(huán)境中使用了硬盤,可移動(dòng)磁盤129,以及可移動(dòng)光盤131,但是,可以理解,其它可以由計(jì)算機(jī)進(jìn)行存取的能夠存儲(chǔ)數(shù)據(jù)的計(jì)算機(jī)可讀介質(zhì)也可以在典型的操作環(huán)境中使用。這些其它類型的介質(zhì)包括磁帶、閃速存儲(chǔ)卡、數(shù)字視頻盤、Bemoulli錄像帶、隨機(jī)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)以及類似的存儲(chǔ)器。
很多程序模塊可以存儲(chǔ)在硬盤、磁盤129、光盤131、ROM 124或RAM 125上,包括操作系統(tǒng)135,一個(gè)或多個(gè)應(yīng)用程序136,其它程序模塊137以及程序數(shù)據(jù)138。用戶可以通過(guò)象鍵盤140和指示裝置142這樣的輸入裝置將命令和信息輸入到個(gè)人計(jì)算機(jī)120中。其它的輸入裝置(未示出)可以包括麥克風(fēng)、操縱桿、游戲板、衛(wèi)星盤、掃描儀以及類似的裝置。這些或其它的輸入裝置通常通過(guò)耦合到系統(tǒng)總線上的串行接口146連接到處理單元121上,但也可以通過(guò)象并行端口、游戲端口,或通用串行總線(USB)這樣的其它接口進(jìn)行連接。監(jiān)視器147或其它類型的顯示裝置也可以通過(guò)象視頻適配器148這樣的接口連接到系統(tǒng)總線123上。除監(jiān)視器147之外,個(gè)人計(jì)算機(jī)典型的包括其它外設(shè)輸出裝置(未示出),諸如揚(yáng)聲器和打印機(jī)這樣的裝置。圖1的典型系統(tǒng)還包括主機(jī)適配器155、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線156,以及連接到SCSI總線156上的外部存儲(chǔ)裝置162。
個(gè)人計(jì)算機(jī)120使用邏輯連接到一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),比如遠(yuǎn)程計(jì)算機(jī)149,可以在網(wǎng)絡(luò)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)149可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)個(gè)人計(jì)算機(jī)、同等裝置或其它共同網(wǎng)絡(luò)節(jié)點(diǎn),并且典型的包括多個(gè)或所有上面說(shuō)明的與個(gè)人計(jì)算機(jī)120有關(guān)的單元,盡管僅在圖1中圖示了一個(gè)內(nèi)存存儲(chǔ)裝置150。圖1中描繪的邏輯連接包括局域網(wǎng)(LAN)151和廣域網(wǎng)(WAN)152。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)以及因特網(wǎng)中都是常見(jiàn)的。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)120通過(guò)網(wǎng)絡(luò)接口或適配器153連接到LAN151上。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)120典型的包括用于在整個(gè)如因特網(wǎng)的廣域網(wǎng)152上,建立通訊的調(diào)制解調(diào)器154或其它裝置。調(diào)制解調(diào)器154,可以是內(nèi)置的或外置的,通過(guò)串行端口接口146連接到系統(tǒng)總線123上。在網(wǎng)絡(luò)環(huán)境中,經(jīng)過(guò)說(shuō)明的與個(gè)人計(jì)算機(jī)120有關(guān)的程序模塊,或其中的部分,可以存儲(chǔ)在遠(yuǎn)程內(nèi)存存儲(chǔ)裝置中??梢岳斫?,示出的網(wǎng)絡(luò)連接是示范性的,還可以使用其它方式在計(jì)算機(jī)之間建立通訊連接。
帶有相對(duì)較小存儲(chǔ)裝置的計(jì)算裝置現(xiàn)在轉(zhuǎn)到圖2,可知可以相信本發(fā)明在與帶有相對(duì)較小存儲(chǔ)裝置12的計(jì)算裝置10連接方面特別有用,其中的存儲(chǔ)裝置12上加載了一個(gè)或多個(gè)應(yīng)用程序14和文件系統(tǒng)16。在不背離本發(fā)明精神和范圍的情況下,該計(jì)算裝置10可以是任何類型的計(jì)算裝置,盡管可能如果存儲(chǔ)裝置12相對(duì)較小,那樣的話該計(jì)算裝置10也相對(duì)較小。例如,該計(jì)算裝置10可以是便攜式媒體播放器或游戲機(jī)、便攜式數(shù)字助理或便攜式個(gè)人計(jì)算機(jī)。
在不背離本發(fā)明精神和范圍的情況下,該計(jì)算裝置10上的存儲(chǔ)裝置12可以是任何存儲(chǔ)裝置。盡管本發(fā)明特別適用于存儲(chǔ)裝置相對(duì)較小的情況,但是在不背離本發(fā)明精神和范圍的情況下,這樣的存儲(chǔ)裝置可以實(shí)際上是任何大小的。依賴于該計(jì)算裝置10,該存儲(chǔ)裝置12可以是硬盤驅(qū)動(dòng)器、內(nèi)存卡,閃速RAM(隨機(jī)存儲(chǔ)器),或者類似的存儲(chǔ)裝置,并且這樣的存儲(chǔ)裝置12可能帶有一個(gè)適當(dāng)?shù)挠布?qū)動(dòng)器(未示出),通過(guò)它對(duì)那里的存取進(jìn)行管理。
請(qǐng)注意,除該存儲(chǔ)裝置12之外,該計(jì)算裝置10可能具有一本地RAM 18,通過(guò)它可以在對(duì)來(lái)自該存儲(chǔ)裝置12的數(shù)據(jù)進(jìn)行操作之前對(duì)其進(jìn)行轉(zhuǎn)換。即,該計(jì)算裝置10在至少一些情況下可能不直接對(duì)存儲(chǔ)在該存儲(chǔ)裝置10中的數(shù)據(jù)進(jìn)行操作,但取而代之,將來(lái)自該存儲(chǔ)裝置12的數(shù)據(jù)復(fù)制到本地RAM 18中,在本地RAM 18中對(duì)這些數(shù)據(jù)進(jìn)行操作,然后如果需要的話,將這些操作的數(shù)據(jù)復(fù)制回該存儲(chǔ)裝置12中。這樣做的理由有很多并且是各式各樣的,但是應(yīng)當(dāng)可以理解,典型的理由包括更快的速度和存取。無(wú)論如何,在不背離本發(fā)明精神和范圍的情況下,這樣的本地RAM 18可以是適當(dāng)?shù)腞AM中的任何一種。
在不背離本申請(qǐng)精神和范圍的情況下,該存儲(chǔ)裝置12上的應(yīng)用程序14可以是任何應(yīng)用程序,并且可以在本地RAM 18或其它位置中進(jìn)行舉例說(shuō)明。如果該計(jì)算裝置10是一個(gè)特定任務(wù)裝置,例如象音頻播放器這樣的裝置,該應(yīng)用程序14可能也是特定任務(wù),盡管,可以理解,至少在一些情況下也可以存在其它的應(yīng)用程序14。
應(yīng)當(dāng)可以理解,該文件系統(tǒng)16實(shí)際上是一種類型的應(yīng)用程序14,盡管對(duì)于該計(jì)算裝置10來(lái)說(shuō)具有特殊的重要意義。在不背離本發(fā)明精神和范圍的情況下,存儲(chǔ)裝置12上的文件系統(tǒng)16也可以是任何文件系統(tǒng),并且可以在本地RAM18或其它位置中進(jìn)行舉例說(shuō)明。文件系統(tǒng)16沒(méi)有必要必須特別是特定的任務(wù),但取而代之,可以更適應(yīng)計(jì)算裝置10的非特定任務(wù)操作需求。因此,這樣的文件系統(tǒng)16用來(lái)在其啟動(dòng)期間和在其上裝載應(yīng)用程序14期間操作計(jì)算裝置10,還用來(lái)在存儲(chǔ)裝置12、本地RAM 18,以及其它位置上存取數(shù)據(jù)。
更新存儲(chǔ)裝置12上的應(yīng)用程序14/文件系統(tǒng)16如上面指出的,在相對(duì)較小的存儲(chǔ)裝置12上對(duì)應(yīng)用程序14或文件系統(tǒng)16進(jìn)行更新可能是復(fù)雜的,特別是在如果存儲(chǔ)裝置12沒(méi)有大量的空閑空間可以使用時(shí)。例如,如果這樣的存儲(chǔ)裝置12上缺少空閑空間,在沒(méi)有事先刪除舊數(shù)據(jù)的情況下,會(huì)妨礙將更新數(shù)據(jù)寫(xiě)到其上,那么將會(huì)有這樣的情況,即更新期間的失敗將應(yīng)用程序14或文件系統(tǒng)16置于了不連貫和可能不起作用的狀態(tài)。同樣的,如果這樣的存儲(chǔ)裝置12缺少空閑空間迫使通過(guò)用‘delta’數(shù)據(jù)來(lái)修改個(gè)別文件來(lái)實(shí)施更新的話,將會(huì)有這樣的情況,即更新期間的失敗將應(yīng)用程序14或文件系統(tǒng)16置于不連貫和可能不起作用的狀態(tài)。此外,如果可能的話,對(duì)于應(yīng)用程序14的情況,直到應(yīng)用程序被重新載入,這樣的失敗都可能是令人討厭的事情,但是對(duì)于文件系統(tǒng)的情況,因?yàn)闆](méi)有機(jī)能文件系統(tǒng)16,計(jì)算裝置10可能無(wú)法操作,這樣的失敗可能就是災(zāi)難性的。
相應(yīng)的,在本發(fā)明的一個(gè)實(shí)施例中,在計(jì)算裝置10上更新應(yīng)用程序14或文件系統(tǒng)16(下文中稱為‘應(yīng)用程序14’)將作為兩步過(guò)程來(lái)執(zhí)行,其中在第一個(gè)步驟中對(duì)更新進(jìn)行模擬,以及在第二個(gè)步驟中實(shí)際執(zhí)行更新操作,但僅是如果第一個(gè)步驟中模擬更新被確認(rèn)已經(jīng)成功,才進(jìn)行第二個(gè)步驟。特別的,在第一個(gè)步驟中,除向存儲(chǔ)裝置12實(shí)際提交與更新有關(guān)的數(shù)據(jù)之外,模擬的更新執(zhí)行所有必須的操作,以及在第二個(gè)步驟中,實(shí)際的更新執(zhí)行相同的必須操作并且還實(shí)際向存儲(chǔ)裝置12提交與更新有關(guān)的數(shù)據(jù)。
為了實(shí)現(xiàn)本發(fā)明,應(yīng)當(dāng)可以理解,計(jì)算裝置10的文件系統(tǒng)16典型的保持與存儲(chǔ)在存儲(chǔ)裝置12上的數(shù)據(jù)有關(guān)的元數(shù)據(jù)20??梢岳斫?,這樣的數(shù)據(jù)典型地作為文件存儲(chǔ)在存儲(chǔ)裝置12上,并且在其它情況中,元數(shù)據(jù)20對(duì)于每個(gè)包括名稱、大小、多個(gè)時(shí)間標(biāo)記的文件數(shù)據(jù)來(lái)說(shuō)包括存儲(chǔ)裝置12上的文件的物理和/或虛擬位置或者組成存儲(chǔ)裝置12上文件的各個(gè)部分,以及關(guān)于文件的各種屬性。另外,假設(shè)存儲(chǔ)裝置12以數(shù)據(jù)的部分進(jìn)行組織,這樣的元數(shù)據(jù)20對(duì)于存儲(chǔ)裝置12來(lái)說(shuō)可以包括這些部分的一個(gè)‘空閑’列表,或等價(jià)物,該列表可以用于接受數(shù)據(jù)。
應(yīng)當(dāng)可以理解,于是,對(duì)計(jì)算裝置10的存儲(chǔ)裝置12上的文件中的數(shù)據(jù)進(jìn)行修改也可以迫使對(duì)與修改的文件有關(guān)的元數(shù)據(jù)20進(jìn)行修改,而且也可以是空閑列表。還是很典型的,在操作期間,文件系統(tǒng)16將元數(shù)據(jù)20或它的一部分復(fù)制到本地RAM 18中或者等價(jià)物中,以使得在文件系統(tǒng)16的操作期間,當(dāng)需要時(shí),就可以對(duì)本地RAM 18上的元數(shù)據(jù)20的復(fù)本進(jìn)行修改,并且當(dāng)需要時(shí),經(jīng)過(guò)修改的本地RAM 18上的元數(shù)據(jù)20的復(fù)本就可以存儲(chǔ)到存儲(chǔ)裝置12中。
典型的,由文件系統(tǒng)16對(duì)存儲(chǔ)裝置12上的文件進(jìn)行的修改可以包括添加新文件,刪除已存在的文件,以及修改已存在的文件。簡(jiǎn)要的,添加新文件是這樣實(shí)現(xiàn)的,即通過(guò)在元數(shù)據(jù)20中的空閑列表為該文件查找空間,為元數(shù)據(jù)20中的該文件創(chuàng)建適當(dāng)?shù)臄?shù)據(jù),將新文件的數(shù)據(jù)添加到在存儲(chǔ)裝置12中找到的空間上,并更新元數(shù)據(jù)中的空閑列表來(lái)反映對(duì)找到的空間的使用情況。同樣的,刪除已存在的文件是這樣實(shí)現(xiàn)的,即以適當(dāng)?shù)姆绞綄⒃獢?shù)據(jù)20中的文件的數(shù)據(jù)移除,并且更新元數(shù)據(jù)中的空閑列表來(lái)反映當(dāng)前空閑的空間。對(duì)已存在的文件進(jìn)行修改是這樣實(shí)現(xiàn)的,即以一種與添加或刪除文件相類似的方式,當(dāng)然依賴于是否添加數(shù)據(jù)和/或從文件刪除。無(wú)論如何,可以理解,任何對(duì)文件的修改會(huì)導(dǎo)致對(duì)與文件關(guān)聯(lián)的元數(shù)據(jù)20的修改,以及對(duì)與存儲(chǔ)裝置12本身有關(guān)的元數(shù)據(jù)20的修改。
考慮到前面提到的情況,于是,在本發(fā)明的一個(gè)實(shí)施例中,計(jì)算裝置10可以在模擬模式和常規(guī)模式中操作,藉此在前面提到的第一個(gè)步驟期間,當(dāng)模擬一次更新時(shí),計(jì)算裝置10的操作以模擬模式進(jìn)行。同樣的,在前面提到的實(shí)際實(shí)行更新的第二個(gè)步驟期間,僅當(dāng)?shù)谝粋€(gè)步驟的模擬更新被確認(rèn)已經(jīng)成功時(shí),并且在大部分其它時(shí)間,計(jì)算裝置10的操作以常規(guī)模式進(jìn)行??梢哉J(rèn)同的是,對(duì)應(yīng)用程序14的更新典型地通過(guò)安裝程序來(lái)執(zhí)行,在安裝程序的操作期間,通過(guò)它可以使計(jì)算裝置10進(jìn)入模擬模式,或從模擬模式中退出。
主要的,當(dāng)計(jì)算裝置10從常規(guī)模式進(jìn)入到模擬模式時(shí),為了后面的檢索,還將本地RAM 18中的元數(shù)據(jù)20的復(fù)本保存到存儲(chǔ)裝置12、本地RAM 18、緩存,或其它位置。此后,在計(jì)算裝置10的操作期間,沒(méi)有數(shù)據(jù)被實(shí)際提交到存儲(chǔ)裝置12中。對(duì)于一些后面的情況,當(dāng)計(jì)算裝置10從模擬模式退回到常規(guī)模式時(shí),保存的元數(shù)據(jù)20的復(fù)本被檢索出來(lái)并重新存儲(chǔ)到本地RAM 18中,以此來(lái)反映存儲(chǔ)裝置12的真實(shí)狀態(tài),因?yàn)樵谀M模式期間,存儲(chǔ)裝置12上的數(shù)據(jù)是不應(yīng)該被改變的。此后,在計(jì)算裝置10的操作期間,數(shù)據(jù)在此被真正的提交給存儲(chǔ)裝置12。因此,應(yīng)當(dāng)可以理解,使計(jì)算裝置10進(jìn)入模擬模式不會(huì)對(duì)存儲(chǔ)在存儲(chǔ)裝置12上的任何數(shù)據(jù)造成永久的改變,并且對(duì)這些數(shù)據(jù)的“改變”可以在沒(méi)有任何風(fēng)險(xiǎn)的情況下進(jìn)行模擬。
現(xiàn)在應(yīng)當(dāng)可以理解,在對(duì)計(jì)算裝置10上的應(yīng)用程序14進(jìn)行更新期間,通過(guò)使用模擬模式,這樣的更新可以首先以非破壞的方式來(lái)執(zhí)行,以使得不會(huì)對(duì)這樣的計(jì)算裝置10的存儲(chǔ)裝置12上的文件進(jìn)行修改。因此,這樣的模擬可以預(yù)見(jiàn)在不將修改提交給存儲(chǔ)裝置12的情況下,一系列的修改是否會(huì)成功或失敗。當(dāng)處于模擬模式時(shí),所有對(duì)存儲(chǔ)裝置12的修改實(shí)際上只針對(duì)維持在本地RAM18中保持的元數(shù)據(jù)20。因?yàn)槲募膬?nèi)容是分配的和未分配的,雖然在本地RAM18上的元數(shù)據(jù)20中的空閑列表中對(duì)空閑空間進(jìn)行跟蹤,但是文件數(shù)據(jù)實(shí)際上沒(méi)有提交給存儲(chǔ)裝置12。例如,如果在文件操作期間空閑空間用盡或者文件系統(tǒng)16遇到一個(gè)錯(cuò)誤,通過(guò)一個(gè)返回值來(lái)通知對(duì)調(diào)用的實(shí)體。重要的是,如果發(fā)生了一次失敗,當(dāng)計(jì)算裝置12退回到常規(guī)模式時(shí),實(shí)際上不允許進(jìn)行更新操作。相應(yīng)的,如果沒(méi)有失敗情況發(fā)生,當(dāng)計(jì)算裝置12退回到常規(guī)模式時(shí),通過(guò)返回同樣系列的修改,實(shí)際上應(yīng)當(dāng)允許進(jìn)行更新操作。
現(xiàn)在應(yīng)當(dāng)可以理解,在本發(fā)明中,除在模擬模式期間所有向存儲(chǔ)裝置12寫(xiě)入數(shù)據(jù)的寫(xiě)操作都不能使用的情況之外,在計(jì)算裝置10進(jìn)入模擬模式的第一個(gè)步驟期間執(zhí)行的代碼與計(jì)算裝置10退回到常規(guī)模式的第二個(gè)步驟期間執(zhí)行的代碼是相同的。因此,如果所有在模擬模式期間的第一個(gè)步驟中的修改都成功了,那么可以假設(shè),在常規(guī)模式期間的第二個(gè)步驟中的相同順序的修改也都將是成功的。同樣的,如果在模擬模式期間的第一個(gè)步驟中的任何修改失敗了,則可以假設(shè),在常規(guī)模式期間的第二個(gè)步驟中的同樣的修改也將是失敗的,并且這樣第二個(gè)步驟實(shí)際上是不執(zhí)行的。
現(xiàn)在轉(zhuǎn)到圖3,安裝程序或類似的程序以接下來(lái)的方式對(duì)計(jì)算裝置10的存儲(chǔ)裝置12上的應(yīng)用程序14進(jìn)行安裝或更新。初步的,安裝程序通過(guò)使計(jì)算裝置10進(jìn)入模擬模式來(lái)執(zhí)行第一個(gè)步驟(步驟301)。這樣的步驟典型的可以通過(guò)將命令發(fā)送給計(jì)算裝置10來(lái)執(zhí)行,特別是發(fā)送給其中的處理器或控制器,當(dāng)然可以假設(shè)這樣的計(jì)算裝置10實(shí)際上能夠接收并理解這樣的命令,并且實(shí)際上能夠按照上述方式進(jìn)入到模擬模式中。
無(wú)論如何,也象前面提出的那樣,剛一進(jìn)入模擬模式時(shí),計(jì)算裝置10就按前面提出的方式在本地RAM 18中保存元數(shù)據(jù)20的復(fù)本以用于后面的檢索,并且此后,在文件操作期間,這樣的計(jì)算裝置10的文件系統(tǒng)16設(shè)置為實(shí)際上不向存儲(chǔ)裝置12提交數(shù)據(jù),但是對(duì)于另外的情況來(lái)說(shuō),在這樣的文件操作中不容推辭的正常執(zhí)行所有其它操作。
此后,對(duì)于被安裝程序禁止的每一個(gè)文件操作,實(shí)際上由文件系統(tǒng)16來(lái)執(zhí)行這樣的文件操作,當(dāng)然除了實(shí)際向存儲(chǔ)裝置12提交數(shù)據(jù)(步驟303)之外。通過(guò)理解,每個(gè)這樣的文件操作作為一個(gè)帶有表明成功或失敗的返回值的調(diào)用提出來(lái),安裝程序接收與文件操作關(guān)聯(lián)的返回值并且以此判斷操作是否成功(步驟305)。注意,這樣的安裝程序也可以基于不依賴于這樣的一個(gè)返回值的判據(jù)來(lái)判斷操作是否成功。例如象基于包括這樣的安裝程序的代碼,或基于對(duì)一個(gè)特殊系統(tǒng)值的判斷。
如果操作確實(shí)成功了,安裝程序按照步驟303那樣執(zhí)行接下來(lái)的文件操作。然而,如果由于任何的原因使得操作失敗了,取而代之,安裝程序使計(jì)算裝置10返回到常規(guī)模式(步驟307),典型的通過(guò)向計(jì)算裝置10發(fā)送命令,并且特別是向其中的處理器或控制器發(fā)送命令,還可以假設(shè),這樣的計(jì)算裝置10實(shí)際上能夠接收并理解這樣的命令,并且實(shí)際上能夠按照前面提出的方式返回到常規(guī)模式中。
關(guān)鍵的,當(dāng)通過(guò)按照步驟305的方式判斷出操作沒(méi)有成功而按照步驟307的方式返回到常規(guī)模式時(shí),安裝程序?qū)嶋H上不執(zhí)行更新,但取而代之的是,基于計(jì)算裝置10不能接受更新的假設(shè),而結(jié)束該進(jìn)程(步驟309)。正如前面提出的那樣,當(dāng)計(jì)算裝置10按照步驟307的方式從模擬模式退回到常規(guī)模式時(shí),將已經(jīng)保存的元數(shù)據(jù)20的復(fù)本檢索出來(lái)并重新存儲(chǔ)到本地RAM 18中,以反映存儲(chǔ)裝置12的真實(shí)狀態(tài),因?yàn)樵谀M模式期間,存儲(chǔ)裝置12上的數(shù)據(jù)沒(méi)有被改變。此后,在計(jì)算裝置10三維操作期間,數(shù)據(jù)實(shí)際上又一次被提交到存儲(chǔ)裝置12中。
注意,如果在步驟309中止了更新,本來(lái)應(yīng)該進(jìn)行更新但實(shí)際上沒(méi)有被更新的應(yīng)用程序14應(yīng)該以未更新的狀態(tài)保持在存儲(chǔ)裝置12中。重要的,盡管沒(méi)有進(jìn)行更新,但這樣的應(yīng)用程序14至少不應(yīng)該停留在某個(gè)更新未完成的狀態(tài),這樣也可能導(dǎo)致應(yīng)用程序14以受損害的方式來(lái)起作用,或者更壞的將導(dǎo)致應(yīng)用程序14根本不能起作用。
現(xiàn)在返回到按步驟303的方式執(zhí)行的每個(gè)操作,并假設(shè)按照步驟305的方式?jīng)]有發(fā)現(xiàn)已經(jīng)有操作失敗,安裝程序在某種程度上將判斷出所有的操作都已經(jīng)執(zhí)行過(guò)了(步驟311)。因此,根據(jù)成功模擬更新,就得出了步驟1的結(jié)論。相應(yīng)的,這樣的更新現(xiàn)在就可以按照步驟2的方式實(shí)際執(zhí)行了。
特別的,通過(guò)成功的模擬,安裝程序使計(jì)算裝置10返回到常規(guī)模式中(步驟313),還是典型的,向計(jì)算裝置10發(fā)送命令,特別的向其中的處理器或控制器發(fā)送命令。關(guān)鍵的,當(dāng)根據(jù)判斷所有操作成功的結(jié)果,按照步驟313的方式返回到常規(guī)模式時(shí),安裝程序就實(shí)際執(zhí)行更新。正如前面提出的那樣,當(dāng)計(jì)算裝置10按照步驟313的方式從模擬模式退回到常規(guī)模式時(shí),將已經(jīng)保存的元數(shù)據(jù)20的復(fù)本檢索出來(lái)并重新存儲(chǔ)到本地RAM 18中,以反映存儲(chǔ)裝置12的真實(shí)狀態(tài),因?yàn)樵谀M模式期間,存儲(chǔ)裝置12上的數(shù)據(jù)應(yīng)該還沒(méi)有被改變。此后,在計(jì)算裝置10的操作期間,數(shù)據(jù)實(shí)際上又一次被提交到存儲(chǔ)裝置12中。
對(duì)于實(shí)際執(zhí)行更新來(lái)說(shuō),并且對(duì)于被安裝程序禁止的每一個(gè)文件操作,文件系統(tǒng)16實(shí)際上執(zhí)行了這樣的文件操作(步驟315)。重要的,因?yàn)橛?jì)算裝置10現(xiàn)在處于常規(guī)模式中,文件系統(tǒng)16實(shí)際上將數(shù)據(jù)提交到與每個(gè)這樣的操作有關(guān)的存儲(chǔ)裝置12中。此外,安裝程序在某種程度上將判斷出所有的操作實(shí)際上已經(jīng)執(zhí)行過(guò)了,將因此得出結(jié)論,應(yīng)用程序14的更新已經(jīng)成功的安裝了,并將中止(步驟317)。
注意,在按照步驟315的方式執(zhí)行每個(gè)文件操作期間,安裝程序通過(guò)與步驟305(未示出)類似的方式可以判斷出操作是否成功。然而,這樣的步驟對(duì)于本發(fā)明來(lái)說(shuō)不能認(rèn)為是絕對(duì)必須的,因?yàn)榘凑詹襟E303的方式,每個(gè)操作事先已經(jīng)成功的模擬過(guò)了。然而,可能發(fā)生這樣的情況,在模擬模式中成功的操作,但是在常規(guī)模式中卻失敗了。然而,也就是說(shuō),這樣的情況確信是很少見(jiàn)的并且是超出本發(fā)明的范圍的。
本發(fā)明的操作是通過(guò)模擬更新來(lái)實(shí)現(xiàn),在這樣模擬的更新期間,不向存儲(chǔ)裝置12提交任何數(shù)據(jù)。除了向存儲(chǔ)裝置12提交數(shù)據(jù)之外,這個(gè)在模擬模式中是被禁止的,在模擬模式中執(zhí)行的操作與在常規(guī)模式中執(zhí)行的操作是相同的。因此,如果在模擬模式中所有的更新操作都成功了,除了例如有存儲(chǔ)裝置12災(zāi)難性故障的某種情況發(fā)生之外,安裝程序可以假設(shè)同樣的操作順序在常規(guī)操作中也將是成功的。
應(yīng)當(dāng)可以理解,如果更新包括對(duì)數(shù)據(jù)的操作,其中數(shù)據(jù)是要提交到存儲(chǔ)裝置12中的但實(shí)際還沒(méi)有,某些次要的修改可能就是必須的。一般的,還應(yīng)當(dāng)可以理解,這些次要的修改需要這樣的數(shù)據(jù)的緩存并且重新定向?qū)@樣緩存的數(shù)據(jù)執(zhí)行的這些操作。
有效使用存儲(chǔ)裝置12的容量典型的,象存儲(chǔ)裝置12這樣的存儲(chǔ)裝置不能訪問(wèn)到在其上存儲(chǔ)的信息的每個(gè)單獨(dú)字節(jié)。應(yīng)當(dāng)可以理解,這樣做通常不是必須的,而且更重要的,這樣做將需要超大的地址信息,這些信息是不廣泛的并且將對(duì)與存儲(chǔ)裝置有關(guān)信息的跟蹤變得更為復(fù)雜。這樣的跟蹤信息例如可以包括空閑和/或已使用空間的列表,壞空間列表等等。作為替換,現(xiàn)在轉(zhuǎn)到圖4,存儲(chǔ)裝置通常根據(jù)可尋址扇區(qū)22的信息對(duì)其上的空間進(jìn)行細(xì)分,其中每個(gè)扇區(qū)22可以定義為屬于512或1024字節(jié)一類的,并且這樣的存儲(chǔ)裝置于是將可以根據(jù)它的地址基于每一扇區(qū)對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě),即使一個(gè)扇區(qū)22中僅有幾個(gè)字節(jié)需要處理。
典型的文件系統(tǒng)可以基于每一扇區(qū)對(duì)這樣的存儲(chǔ)裝置進(jìn)行尋址,盡管考慮到相對(duì)較大的存儲(chǔ)裝置,其上存儲(chǔ)了大文件28,通常更方便的將簇24定義為多個(gè)扇區(qū)22,基于每一簇對(duì)這樣的存儲(chǔ)裝置進(jìn)行尋址,以及需要每個(gè)文件28至少使用一個(gè)簇24(不象圖4中顯示的那樣)。象以前那樣,這樣做允許文件系統(tǒng)避免超大的尋址信息,這些信息是不廣泛的并且將對(duì)與存儲(chǔ)裝置有關(guān)信息的跟蹤變得復(fù)雜,就象前面提到的元數(shù)據(jù)20中的空閑列表。典型的,一個(gè)簇24是以2為基數(shù)構(gòu)成的多個(gè)扇區(qū)22,諸如1,2,4,8,16千字節(jié)或更多,文件系統(tǒng)可以基于每一簇對(duì)存儲(chǔ)裝置中進(jìn)行讀寫(xiě)操作,即使一個(gè)簇24中僅有幾個(gè)扇區(qū)22需要處理。
然而,正如前面指出的,如果分配到一個(gè)特定的簇24中的文件28僅有很少量的數(shù)據(jù)(例如,幾個(gè)到幾百個(gè)字節(jié)),這樣的簇24中的所有剩余空間就浪費(fèi)了,在一個(gè)相對(duì)較小的存儲(chǔ)裝置中,這樣浪費(fèi)掉的空間能夠很快地變得很顯著。相應(yīng)的,在本發(fā)明的一個(gè)實(shí)施例中,作為第一種措施,用于圖2中的存儲(chǔ)裝置12的文件系統(tǒng)16不能基于每一簇對(duì)這樣的存儲(chǔ)裝置進(jìn)行尋址,但取而代之,能夠基于每一扇區(qū)對(duì)相同的情況進(jìn)行尋址,并且因此需要每個(gè)文件28至少使用存儲(chǔ)裝置12的一個(gè)扇區(qū)22(不象圖4示出的那樣)。結(jié)果是,應(yīng)當(dāng)可以理解,屬于幾個(gè)到幾十個(gè)字節(jié)的相對(duì)較小的文件28存儲(chǔ)在例如一個(gè)具有512個(gè)字節(jié)的扇區(qū)22上,僅浪費(fèi)掉了幾百個(gè)字節(jié),而且不會(huì)浪費(fèi)幾千個(gè)字節(jié),象例如在一個(gè)8千字節(jié)的簇24上發(fā)生的情況那樣。
注意,當(dāng)需要文件系統(tǒng)16基于每一扇區(qū)對(duì)存儲(chǔ)裝置12進(jìn)行尋址時(shí),與基于每一扇區(qū)相比,會(huì)導(dǎo)致更長(zhǎng)并且從而更為復(fù)雜的尋址,可以用來(lái)進(jìn)行尋址的空間量對(duì)于一個(gè)相對(duì)較小的存儲(chǔ)裝置12來(lái)說(shuō)是相對(duì)較小的,并且為此的地址也是相對(duì)較小的。例如,對(duì)于一個(gè)帶有8千字節(jié)的簇和1千字節(jié)扇區(qū)的16兆字節(jié)存儲(chǔ)裝置12來(lái)說(shuō),基于每一扇區(qū)尋址需要帶有3個(gè)附加位的地址,但是這樣的地址還僅有14位的長(zhǎng)度,這些是需要合理的考慮的。
應(yīng)當(dāng)可以理解,即使文件系統(tǒng)16基于每一扇區(qū)對(duì)存儲(chǔ)裝置12進(jìn)行尋址,當(dāng)屬于幾個(gè)到幾十個(gè)字節(jié)的一個(gè)相對(duì)較小的文件28存儲(chǔ)在例如512字節(jié)的扇區(qū)22上時(shí),還是要對(duì)浪費(fèi)上百或幾十個(gè)字節(jié)的無(wú)法接受的低效率進(jìn)行考慮。相應(yīng)的,在本發(fā)明的一個(gè)實(shí)施例中,作為第二種措施,文件系統(tǒng)16還是基于每一扇區(qū)對(duì)存儲(chǔ)裝置12進(jìn)行尋址,對(duì)基于每一信息塊在對(duì)每一扇區(qū)之內(nèi)的數(shù)據(jù)進(jìn)行內(nèi)部管理,其中每信息塊26(圖4)例如被定義為以2為基數(shù)劃分的扇區(qū)22。
在基于每一信息塊保存文件28的過(guò)程中(如圖4所示),應(yīng)當(dāng)可以理解,文件系統(tǒng)16將內(nèi)部需要每個(gè)文件28至少使用存儲(chǔ)裝置12的一個(gè)信息塊26,但還將在基于每一扇區(qū)對(duì)存儲(chǔ)裝置12進(jìn)行外部尋址。因此,就對(duì)存儲(chǔ)裝置12的一個(gè)特定的信息塊26進(jìn)行讀寫(xiě),文件系統(tǒng)16本應(yīng)該對(duì)帶有信息塊26的扇區(qū)22進(jìn)行讀寫(xiě)。結(jié)果是,文件系統(tǒng)16不僅必須對(duì)由文件28使用的每個(gè)扇區(qū)22保持跟蹤,而且必須對(duì)由文件28使用的每個(gè)扇區(qū)22之內(nèi)的每個(gè)信息塊26保持跟蹤。這樣做,當(dāng)進(jìn)行更多詳細(xì)說(shuō)明時(shí),不會(huì)認(rèn)為是過(guò)度繁重的,并且可能在不背離本發(fā)明的精神和范圍的情況下,以任何適當(dāng)?shù)姆绞絹?lái)執(zhí)行。無(wú)論如何,還應(yīng)當(dāng)可以理解,存儲(chǔ)在例如64字節(jié)的信息塊26上的屬于幾個(gè)到幾十個(gè)字節(jié)的相對(duì)較小的文件28僅浪費(fèi)掉幾個(gè)到幾十個(gè)字節(jié),而不會(huì)浪費(fèi)幾百個(gè)字節(jié),象例如在一個(gè)512字節(jié)的扇區(qū)22上發(fā)生的情況那樣。
與前面的相似,應(yīng)當(dāng)可以理解,當(dāng)需要文件系統(tǒng)16基于每一信息塊對(duì)文件28進(jìn)行內(nèi)部尋址時(shí),與基于每一扇區(qū)相比,會(huì)導(dǎo)致更長(zhǎng)并且從而更為復(fù)雜的尋址,可以用來(lái)進(jìn)行尋址的空間量對(duì)于一個(gè)相對(duì)較小的存儲(chǔ)裝置12來(lái)說(shuō)是相對(duì)較小的,并且為此的地址也是相對(duì)較小的。為了與前面的例子連續(xù),對(duì)于一個(gè)帶有1千字節(jié)的扇區(qū)22和256字節(jié)的信息塊26的16兆字節(jié)存儲(chǔ)裝置12來(lái)說(shuō),基于每一信息塊尋址需要帶有2個(gè)附加位的地址,但是這樣的地址還僅有16位的長(zhǎng)度,這些是需要合理的考慮的。
注意,每個(gè)簇24的大小和每個(gè)扇區(qū)22的大小,當(dāng)存儲(chǔ)裝置12進(jìn)行初始格式化和/或分區(qū)時(shí),應(yīng)當(dāng)為文件系統(tǒng)16定義每個(gè)信息塊26的大小。然而,應(yīng)當(dāng)可以理解,存儲(chǔ)裝置12不是基于每一信息塊對(duì)文件系統(tǒng)進(jìn)行尋址的,并且因此不需要知道每個(gè)信息塊26的大小。此外,取而代之,文件系統(tǒng)16基于每一信息塊對(duì)存儲(chǔ)裝置12上的文件28進(jìn)行內(nèi)部組織,但基于每一扇區(qū)對(duì)存儲(chǔ)裝置12進(jìn)行外部尋址。
就像前面暗示的那樣,文件系統(tǒng)16必須為存儲(chǔ)裝置12上的每個(gè)文件28保留定位信息,該信息用于對(duì)由文件28使用的每個(gè)扇區(qū)22以及在由文件28使用的每個(gè)扇區(qū)22中的每個(gè)信息塊26進(jìn)行定位。如可以理解的那樣,在單個(gè)扇區(qū)22上的文件28是連續(xù)的情況下,這樣做相對(duì)簡(jiǎn)單,在這樣的情況下,文件系統(tǒng)16僅需要注意與扇區(qū)22的地址扇區(qū)22內(nèi)起始信息塊26的地址,以及信息塊26中文件的長(zhǎng)度有關(guān)的部分。然而,如果單個(gè)扇區(qū)22上的文件28在兩個(gè)連續(xù)的碎片中,文件系統(tǒng)現(xiàn)在必須注意扇區(qū)22的地址、扇區(qū)22內(nèi)第一個(gè)碎片的起始信息塊26的地址、信息塊26中第一個(gè)碎片的長(zhǎng)度、扇區(qū)22內(nèi)第二個(gè)碎片的起始信息塊26的地址,以及信息塊26中第二個(gè)碎片的長(zhǎng)度。如可以理解的那樣,如果文件28編程更多的碎片,這樣的文件28可能要貯留于多個(gè)扇區(qū)22中,并且在每個(gè)扇區(qū)的多個(gè)信息塊26中,并且相應(yīng)的,用于對(duì)文件28的所有碎片進(jìn)行定位的定位信息同樣會(huì)變得大得多。
應(yīng)當(dāng)理解,這樣的定位信息可能存儲(chǔ)在由文件系統(tǒng)16保持的列表中??蛇x的,大多數(shù)這樣的定位信息可能連同作為頭文件或類似文件的文件28本身一并存儲(chǔ),在這樣的情況下,文件系統(tǒng)16僅需要保持與查找這樣的頭文件所需的那么多的信息。在后面的情況里,也是應(yīng)當(dāng)理解的,如果這樣的定位信息相對(duì)較大,這樣的信息可能會(huì)適當(dāng)?shù)嘏c頭文件分開(kāi),這樣的頭文件包括附加的參考。
無(wú)論如何,在某種程度上,當(dāng)文件28變得更大并且特別是當(dāng)文件28變成更多碎片時(shí),定位信息為此會(huì)變得不能接受得大,特別是在存儲(chǔ)裝置12相對(duì)較小并且它的空間要相對(duì)高效使用的情況下。當(dāng)每個(gè)信息塊26定義的大小變得更小并且文件28因此可能要分布到更多的碎片上時(shí),這樣的問(wèn)題會(huì)變得特別的嚴(yán)重。此外,在某種程度上,當(dāng)文件28變得更大并且被分成更多的碎片時(shí),在存儲(chǔ)裝置12上對(duì)文件28進(jìn)行定位以及讀取或?qū)懭霑?huì)變得不能接受的不方便,特別是在因?yàn)槲募?8的碎片的數(shù)量而必須執(zhí)行不能接受的大量的讀寫(xiě)操作的情況下。象前面那樣,當(dāng)每個(gè)信息塊26定義的大小變得更小并且文件28因此可能要分布到更多的碎片上時(shí),這樣的問(wèn)題會(huì)變得特別的嚴(yán)重。
因此,歸結(jié)起來(lái),通過(guò)基于每一信息塊這樣做,文件系統(tǒng)16更有效的將每個(gè)文件28存儲(chǔ)到存儲(chǔ)裝置12的合理空間中,其中,每個(gè)信息塊26比每個(gè)扇區(qū)22小,但是在這樣做的過(guò)程中,文件28可能在文件變大得同時(shí)會(huì)被分成更多的碎片,對(duì)于這點(diǎn),用于這樣分成碎片的文件28的定位信息會(huì)變得不能接受的大,并且存儲(chǔ)和提取這些分成碎片的文件28會(huì)變得非常的不方便。相應(yīng)的,在本發(fā)明的一個(gè)實(shí)施例中,作為第三個(gè)措施,文件系統(tǒng)16還將基于每一信息塊對(duì)每個(gè)文件28進(jìn)行內(nèi)部管理,然而要對(duì)每個(gè)文件28強(qiáng)加一個(gè)最小尺寸的要求以使得文件28不能被分成比最小尺寸還小的部分。例如,對(duì)于帶有4千字節(jié)扇區(qū)22和256字節(jié)信息塊26(例如,每個(gè)扇區(qū)22包括16個(gè)信息塊26)的存儲(chǔ)裝置12,一個(gè)最小尺寸塊30(圖4)可以被定義為1,2,4,8千字節(jié)或更多字節(jié)。注意至少在一些情況下,這樣的一個(gè)最小尺寸塊30(圖4A)會(huì)遇到多個(gè)扇區(qū)22,但是這樣的情況不認(rèn)為是有問(wèn)題的。
基于最小尺寸塊存儲(chǔ)文件28的過(guò)程中(如圖4A所示),如應(yīng)當(dāng)可以理解的那樣,文件系統(tǒng)16將內(nèi)部需要這樣的情況,即如果在存儲(chǔ)裝置12上以劃分成碎片的方式存儲(chǔ)文件28的話,每個(gè)碎片32至少要與定義的最小尺寸塊30一樣大,當(dāng)然除了不符合這樣的最小尺寸塊30的規(guī)格的文件28的任何剩余碎片32之外。在這樣做的過(guò)程中,文件系統(tǒng)16必須保持一個(gè)可用來(lái)接收數(shù)據(jù)的信息塊26的“空閑”列表34,或等價(jià)物,并以此考慮。這樣做是能夠被理解的或者對(duì)于相關(guān)公眾來(lái)說(shuō)是很顯然的,并且因此不需要在這里對(duì)前面提到的做任何詳細(xì)的解釋。因此,在不背離本發(fā)明精神和范圍的情況下,任何使用這樣的空閑列表34以及基于這樣的空閑列表和最小尺寸塊30將文件28劃分成碎片32的方法,文件系統(tǒng)16都可以使用。
注意,按照每個(gè)信息塊26的大小,當(dāng)對(duì)存儲(chǔ)裝置12進(jìn)行初始格式化和/或分區(qū)時(shí),需要為文件系統(tǒng)16對(duì)最小尺寸塊30進(jìn)行定義。然而,應(yīng)當(dāng)可以理解,并不是通過(guò)最小尺寸塊30的任何直接參考對(duì)存儲(chǔ)裝置12進(jìn)行尋址,并且因此不需要考慮同樣的問(wèn)題。
還要注意,通過(guò)強(qiáng)加的對(duì)最小尺寸塊30的要求,在存儲(chǔ)裝置12上存儲(chǔ)數(shù)據(jù)的過(guò)程中,由于使用了信息塊26,文件系統(tǒng)16可能會(huì)損失掉一些已經(jīng)得到的效率。然而,通過(guò)從減少文件劃分程度得到的增加的效率,這樣能夠抵消損失的效率,甚至?xí)鼉?yōu)于現(xiàn)在的情況。此外,基于對(duì)最小尺寸塊30的要求不能由特定文件28使用的存儲(chǔ)裝置12空間中的信息塊26,對(duì)于其它文件28來(lái)說(shuō)還是可以使用的。
至少在一些情況下,通過(guò)在相同的存儲(chǔ)之前對(duì)每個(gè)文件28進(jìn)行壓縮,文件系統(tǒng)16可以提高存儲(chǔ)裝置12上已用空間的效率。如果是這樣,在本發(fā)明的一個(gè)實(shí)施例中,文件28被劃分成具備最小尺寸塊30的大小的碎片32,并且對(duì)每個(gè)碎片32要進(jìn)行這樣的壓縮。每個(gè)這樣壓縮的碎片32具有比最小尺寸塊30更小的尺寸,此外,可以得出這樣的安排總體上工作的很好。
用于其中帶有空數(shù)據(jù)的文件的文件結(jié)構(gòu)象前面提到的那樣,在某些情況下,在象存儲(chǔ)裝置12那樣的存儲(chǔ)裝置上的文件28可以包括未分配的部分或空數(shù)據(jù)以致于文件28中存在的空間并沒(méi)有用實(shí)體數(shù)據(jù)進(jìn)行填充。這樣的空數(shù)據(jù)可以簡(jiǎn)單的代之以表示為全是零或其它占位符的值,并且稍后僅用實(shí)體數(shù)據(jù)對(duì)存在進(jìn)行填充。可選的,當(dāng)實(shí)體數(shù)據(jù)因?yàn)槟撤N原因從文件28移走時(shí),就可以創(chuàng)建這樣的空數(shù)據(jù)。
因此,可能有這樣的情況,存儲(chǔ)裝置12上有相對(duì)較大的文件28,但實(shí)際上這樣的文件28大部分都是空數(shù)據(jù),無(wú)論是在一個(gè)單個(gè)連續(xù)的部分還是作為多個(gè)連續(xù)或非連續(xù)的部分。在這種情況下,特別是在存儲(chǔ)裝置12相對(duì)較小的情況下,將由文件28的空數(shù)據(jù)占用的空間釋放出來(lái)實(shí)際上是非常有用的。相應(yīng)的,另外這樣占用的空間可以用來(lái)供其它文件28使用。
現(xiàn)在轉(zhuǎn)到圖5,在本發(fā)明的一個(gè)實(shí)施例中,為了實(shí)際上將文件28中由空數(shù)據(jù)占用的空間釋放出來(lái),根據(jù)所示的結(jié)構(gòu)通過(guò)存儲(chǔ)裝置12上的文件系統(tǒng)16對(duì)這樣的文件28進(jìn)行存儲(chǔ)。特別的,象看到的那樣,除了空數(shù)據(jù)之外,這樣的文件28包括文件頭36,段分配表38,以及真實(shí)的文件數(shù)據(jù)40。
如可以理解的那樣,文件頭36包括關(guān)于文件28的信息,文件28包括文件屬性、文件大小、時(shí)間標(biāo)記、文件名等等。此外,在本發(fā)明中,文件頭36包括一個(gè)涉及存儲(chǔ)裝置12上段分配表38的位置的參考。注意,這樣的參考可以是對(duì)一個(gè)單獨(dú)連續(xù)段分配表38的參考,或者對(duì)這樣一個(gè)段分配表38的多個(gè)非連續(xù)部分的參考,這樣的段分配表38組合起來(lái)就構(gòu)成了一個(gè)單獨(dú)連續(xù)表38。如果該段分配表被高度劃分,文件頭36甚至能夠參考到次級(jí)數(shù)據(jù)報(bào)頭42的列表,其中該表包括對(duì)段分配表38的部分的附加位置的參考。
無(wú)論如何,可以用一種方式在這樣的參考的基礎(chǔ)上從這樣的分區(qū)中構(gòu)建段分配表38,該方式對(duì)于相關(guān)公眾來(lái)說(shuō)是很顯而易見(jiàn)的并且因此不需要在這里象前面那樣詳細(xì)說(shuō)明。實(shí)際上,在構(gòu)建段分配表38方面,如圖5所示,可以看到,這樣的表38包括涉及組成文件28的實(shí)際文件數(shù)據(jù)40的位置的有序參考。如可以理解的那樣,這樣的參考可以是實(shí)際文件數(shù)據(jù)40的固定或可變長(zhǎng)度片段。在前面的情況中,例如,固定長(zhǎng)度可以是前面提到的最小尺寸塊30,而在后面的情況中,每個(gè)參考應(yīng)當(dāng)包括一個(gè)長(zhǎng)度屬性。當(dāng)然,使用固定長(zhǎng)度片段避免了對(duì)這樣的長(zhǎng)度屬性的需求。
因此,無(wú)論什么時(shí)候,應(yīng)用程序打開(kāi)文件28進(jìn)行讀取或?qū)懭氩僮鲿r(shí),都要對(duì)文件頭36進(jìn)行檢查以便對(duì)段分配表38中的所有條目進(jìn)行定位,這些條目是從存儲(chǔ)裝置12復(fù)制到本地RAM 18等的連續(xù)的部分中的。此后,可以通過(guò)在連續(xù)段分配表38中進(jìn)行索引,查找存儲(chǔ)裝置12上的這些數(shù)據(jù)40的位置,來(lái)對(duì)文件28的數(shù)據(jù)40進(jìn)行定位。如可以理解的那樣,當(dāng)新數(shù)據(jù)寫(xiě)入到文件28中時(shí),表38按需要圍繞著段以最遠(yuǎn)的偏移量在文件28中擴(kuò)展。注意,為了限制表38的劃分程度,這樣的表38可以按照想要的文件大小進(jìn)行預(yù)分配,特別是在如果已經(jīng)知道文件28的最終大小以及數(shù)據(jù)40的段的長(zhǎng)度是固定的情況時(shí)。
重要的,在本發(fā)明中,文件28的數(shù)據(jù)40在存儲(chǔ)裝置12上以“稀疏”的方式進(jìn)行存儲(chǔ),由此,通過(guò)段分配表38對(duì)數(shù)據(jù)40的實(shí)體段進(jìn)行索引,并實(shí)際存儲(chǔ),當(dāng)通過(guò)段分配表38注意到數(shù)據(jù)40的空段時(shí),實(shí)際上不進(jìn)行存儲(chǔ)和索引。特別的,對(duì)于帶有實(shí)體數(shù)據(jù)40的每個(gè)段,段分配表38中的相應(yīng)入口包括一個(gè)索引,然而對(duì)于僅帶有空數(shù)據(jù)40的每個(gè)段,段分配表38中的相應(yīng)入口不包括任何索引或其它的空索引。因此,圖5所示的文件28帶有15個(gè)段,但是段3、7,以及10-14帶有空數(shù)據(jù)40,并且因此沒(méi)有通過(guò)段分配表38的任何入口進(jìn)行實(shí)際的索引。
注意,在圖5所示的對(duì)文件28進(jìn)行寫(xiě)操作的過(guò)程中,計(jì)算裝置10的文件系統(tǒng)16并沒(méi)有對(duì)數(shù)據(jù)40的空段進(jìn)行實(shí)際的寫(xiě)操作,取而代之,文件系統(tǒng)16因此僅僅為其在用于這樣的文件28的段分配表38中創(chuàng)建適當(dāng)?shù)娜肟?。然后,根?jù)本發(fā)明,文件系統(tǒng)16通過(guò)對(duì)基于文件28的段分配表38的存儲(chǔ)裝置12進(jìn)行適當(dāng)?shù)恼{(diào)用,從文件28的任何偏移量讀取數(shù)據(jù)40,同時(shí),文件系統(tǒng)16通過(guò)對(duì)基于文件28的段分配表38的存儲(chǔ)裝置12進(jìn)行適當(dāng)?shù)恼{(diào)用,將文件數(shù)據(jù)40寫(xiě)入到文件28的任何偏移量中。重要的,分配到文件28的存儲(chǔ)裝置12的任何物理分區(qū),如果不再需要的話,能夠在稍后不進(jìn)行分配,因此就將這樣的存儲(chǔ)裝置12上的空間釋放出來(lái)。
因此,通過(guò)將數(shù)據(jù)的這樣的實(shí)體段寫(xiě)入到存儲(chǔ)裝置12中并且因此用適當(dāng)?shù)乃饕龑?duì)段分配表38的入口進(jìn)行更新,文件系統(tǒng)16可以用數(shù)據(jù)40的實(shí)體段替換文件28中的空段。類似的,通過(guò)用空索引或移除當(dāng)前存在的索引對(duì)段分配表38的入口進(jìn)行更新,文件系統(tǒng)16可以在稍后用空數(shù)據(jù)替換數(shù)據(jù)40的實(shí)體段。被替換的實(shí)體數(shù)據(jù)40可以例如,被物理刪除、移動(dòng)到其它位置,或可以留待被其它的數(shù)據(jù)40覆蓋。特別的,在本發(fā)明中,當(dāng)用空數(shù)據(jù)40替換實(shí)體數(shù)據(jù)40時(shí),存儲(chǔ)裝置12上由這樣被替換的實(shí)體數(shù)據(jù)40占用的空間實(shí)際上被釋放出來(lái)并可用于接收其它數(shù)據(jù)40,相應(yīng)的,文件系統(tǒng)16應(yīng)當(dāng)更新空閑列表34以反映同樣的情況。
根據(jù)本發(fā)明,如現(xiàn)在應(yīng)當(dāng)可以理解的那樣,文件28沒(méi)有必要從頭到尾按照線性方式進(jìn)行構(gòu)建。取而代之,知道文件大小的情況下,文件系統(tǒng)16可以建立一個(gè)段分配表38,并且在存儲(chǔ)裝置12上以任何順序給文件28填充數(shù)據(jù)40的段。重要的,當(dāng)在存儲(chǔ)裝置12上填充數(shù)據(jù)40每個(gè)這樣的段時(shí),文件系統(tǒng)適當(dāng)?shù)貐⒖急?8中同樣的相應(yīng)入口。
特別的,根據(jù)圖5所示的本發(fā)明的文件結(jié)構(gòu),文件系統(tǒng)16可以用被刪除的舊文件28的一些部分構(gòu)建一個(gè)新文件28,例如當(dāng)更新文件28時(shí),并且當(dāng)構(gòu)建文件28的新版本時(shí),通過(guò)這樣做可以拆解文件28的舊版本,并釋放存儲(chǔ)裝置12上的空間。實(shí)際上,從文件28的舊版本中釋放出來(lái)的空間可以用來(lái)至少存儲(chǔ)文件28的新版本的一部分。因此,特別是當(dāng)存儲(chǔ)裝置12只剩下少量空間時(shí),在不刪除文件28的舊版本的情況下,更新文件28沒(méi)必要需要足夠的空閑空間來(lái)構(gòu)建文件28的新版本。
取而代之,象在圖6中看到的那樣,如果文件28的新版本要包括來(lái)自文件28的舊版本的一個(gè)段,這樣的段可以從文件28的舊版本復(fù)制過(guò)來(lái)(步驟601),并隨著對(duì)文件28的新版本的段分配表38所進(jìn)行的適當(dāng)修改,將其保存到文件28的新版本中(步驟603)。此后,隨著對(duì)這樣的文件28的段分配表38做適當(dāng)?shù)男薷模梢詫⑦@樣的段從文件28的舊版本中刪除(步驟605),并基于這樣的操作,可以通過(guò)對(duì)這樣的文件28的段分配表38做適當(dāng)?shù)男薷模瑢拇鎯?chǔ)裝置12中釋放出來(lái)的空間用來(lái)存儲(chǔ)文件28的新版本的其它段(步驟607)。
如現(xiàn)在應(yīng)當(dāng)可以理解的那樣,這樣的步驟可以多次重復(fù),隨著存儲(chǔ)裝置12中文件28的新版本的物理尺寸的增加,文件28的舊版本的物理尺寸就會(huì)減少,直到最終文件28的新版本完全構(gòu)建出來(lái)(步驟609)。之后,文件28的舊版本可以被刪除掉,以釋放由存儲(chǔ)裝置12上這樣的舊文件28的任何剩余段所占用的空間(步驟611)。
注意,至少在一些情況中,段不需要象在步驟601-605中那樣,從文件28的舊版本進(jìn)行物理復(fù)制,保存到這樣的文件28的新版本中,并從文件28的舊版本中刪除。取而代之,僅僅從文件28的舊版本的段分配表38中將段廢除可能是足夠的,然后索引文件28的新版本的段分配表38中的同一個(gè)段。
根據(jù)本發(fā)明,如現(xiàn)在應(yīng)當(dāng)可以理解的那樣,文件28可以按稀疏方式存儲(chǔ)在存儲(chǔ)裝置12上,以致于實(shí)際上不存儲(chǔ)文件28的空白分區(qū)。因此,存儲(chǔ)裝置12上的空間能夠釋放出來(lái)并用于其它文件28,與此同時(shí),文件28的這樣的空白分區(qū)可以稍后用實(shí)體數(shù)據(jù)40進(jìn)行填充。
在存儲(chǔ)裝置上就地執(zhí)行文件象前面提到的那樣,在某些情況下,希望在存儲(chǔ)裝置12上幾乎立刻執(zhí)行一個(gè)可執(zhí)行文件28,而不需要將同樣的內(nèi)容載入到本地RAM18或者其它位置。例如,可能有這種情況,希望計(jì)算裝置12對(duì)當(dāng)用戶需要時(shí)發(fā)出的命令進(jìn)行回應(yīng),并且是以一種幾乎是實(shí)時(shí)的方式進(jìn)行回應(yīng),其中,這個(gè)命令需要執(zhí)行這樣一個(gè)可執(zhí)行文件28??蛇x的,希望在執(zhí)行文件28時(shí),可以不使用本地RAM18。
象前面提到的那樣,用于計(jì)算裝置10的典型存儲(chǔ)裝置12,僅能基于每一簇或者每一扇區(qū)進(jìn)行尋址。因此,在不對(duì)其扇區(qū)22或簇24進(jìn)行讀取的情況下,存儲(chǔ)裝置12中的每個(gè)字節(jié)不能在其上直接進(jìn)行存取。結(jié)果是,通常,文件28不能從這種典型存儲(chǔ)裝置12上直接執(zhí)行,特別是因?yàn)橥ǔ_@樣的執(zhí)行需要基于每一字節(jié)對(duì)文件進(jìn)行存取。相應(yīng)的,為了執(zhí)行文件28,典型的,文件28要從存儲(chǔ)裝置12載入到本地,其中,可以理解,這樣的文件28的每一個(gè)字節(jié)實(shí)際上能夠直接進(jìn)行存取。
然而,在本發(fā)明的一個(gè)實(shí)施例中,實(shí)際上,存儲(chǔ)裝置12是可以基于每個(gè)字節(jié)進(jìn)行可尋址的。例如,如可以理解的那樣,存儲(chǔ)裝置12可以是一個(gè)NOR閃速RAM,其中,實(shí)際上允許基于每一字節(jié)對(duì)其進(jìn)行直接可尋址存取。NOR閃速RAM是相關(guān)公眾所熟知的,因此不需要在這里詳細(xì)說(shuō)明。相應(yīng)的,在不背離本發(fā)明精神和范圍的情況下,任何適當(dāng)類型的NOR閃速RAM都可以用來(lái)作為計(jì)算裝置10的存儲(chǔ)裝置12。
因此,文件28可以就地在NOR閃速RAM存儲(chǔ)裝置12上執(zhí)行。然而,實(shí)際上要就地在NORRAM12(圖7)上執(zhí)行,應(yīng)當(dāng)滿足幾點(diǎn)要求。
第一個(gè)要求,也是最基本的要求,對(duì)計(jì)算裝置10的文件系統(tǒng)16來(lái)說(shuō),NORRAM12應(yīng)當(dāng)是可存取的,就像NORRAM12是如驅(qū)動(dòng)器那樣的另一個(gè)存儲(chǔ)裝置。為了實(shí)現(xiàn)這個(gè)功能,NORRAM12需要一個(gè)相應(yīng)的存取驅(qū)動(dòng)程序44。通常,如應(yīng)當(dāng)可以理解的那樣,存取驅(qū)動(dòng)程序44是在計(jì)算裝置10上運(yùn)行的軟件中的一個(gè)片斷,它用來(lái)基于物理地址響應(yīng)文件系統(tǒng)16從NORRAM12中對(duì)數(shù)據(jù)40的調(diào)用,實(shí)際上也能夠用來(lái)檢索數(shù)據(jù)40。這樣的存取驅(qū)動(dòng)程序44是相關(guān)公眾周知的,因此不需要在這里詳細(xì)說(shuō)明。相應(yīng)的,在不背離本發(fā)明精神和范圍的情況下,可以使用任何適當(dāng)類型的存取驅(qū)動(dòng)程序44,當(dāng)然假設(shè)這樣的驅(qū)動(dòng)程序44包括適當(dāng)?shù)墓δ堋?br>
第二個(gè)要求,文件28不應(yīng)當(dāng)以壓縮格式存儲(chǔ)在NORRAM12中。如可以理解的那樣,這樣做實(shí)際上不允許文件28在NORRAM12中就地執(zhí)行,因?yàn)檫@樣的文件28必須裝載到其它位置,例如象本地RAM18中,然后解壓縮。
注意,除非文件28是以連續(xù)的或者非碎片的格式存儲(chǔ)在NORRAM12中,并且?guī)в羞m當(dāng)?shù)奈锢硖D(zhuǎn)地址,否則典型地文件28就不能在NORRAM12中就地執(zhí)行。然而,在本發(fā)明的一個(gè)實(shí)施例中,即便這樣的文件28是非連續(xù)或者碎片的格式,它也可以在NORRAM12中就地執(zhí)行。然而,為了做到這些,并且作為第三個(gè)要求,這樣的文件28要指定一個(gè)起始虛擬地址,并且基于指定的起始虛擬地址,文件28按照適當(dāng)?shù)奶摂M跳轉(zhuǎn)地址存儲(chǔ)到NORRAM12中。
因此,象圖7中看到的那樣,作為第四個(gè)條件,計(jì)算裝置10必須包括虛擬地址轉(zhuǎn)換器46,它能夠在NORRAM12中的文件28的碎片32的物理地址和供計(jì)算裝置10上的處理器48或者類似單元使用的相應(yīng)虛擬地址之間進(jìn)行轉(zhuǎn)換。如應(yīng)當(dāng)可以理解的那樣,這樣的處理器48在就地執(zhí)行文件28時(shí),是通過(guò)基于這樣的虛擬地址和虛擬地址轉(zhuǎn)換器46從文件28中提取指令來(lái)做到這些的。
因此,通過(guò)虛擬地址轉(zhuǎn)換器46,文件28在NORRAM12中看起來(lái)就是連續(xù)的,至少對(duì)處理器48來(lái)說(shuō)是連續(xù)的,文件28中的虛擬跳轉(zhuǎn)地址也是正確的,當(dāng)然假設(shè)虛擬地址轉(zhuǎn)換器46實(shí)際上使用了文件28中的起始虛擬地址。一般的,且還如應(yīng)當(dāng)可以理解的那樣,虛擬地址轉(zhuǎn)換器46是通過(guò)維持文件28的物理地址和虛擬地址之間的映射來(lái)起作用的。這樣的虛擬地址轉(zhuǎn)換器46是相關(guān)公眾所周知的,因此不需要在這里詳細(xì)說(shuō)明。相應(yīng)的,在不背離本發(fā)明的精神和范圍的情況下,可以使用任何適當(dāng)類型的虛擬地址轉(zhuǎn)換器46。
現(xiàn)在轉(zhuǎn)到圖8,在操作中,計(jì)算裝置10以接下來(lái)的方式在NORRAM12中就地執(zhí)行文件28。首先,當(dāng)然,由用戶或其它實(shí)體使用的文件系統(tǒng)16通過(guò)一個(gè)適當(dāng)?shù)拿顏?lái)執(zhí)行文件28(步驟801),然后通過(guò)存取驅(qū)動(dòng)程序44對(duì)NORRAM12中的這樣的文件28進(jìn)行定位(步驟803)。此后,文件系統(tǒng)16通過(guò)判斷文件28就貯留在NORRAM12上并且沒(méi)有壓縮,并判斷文件28指定了虛擬起始地址并在其上包括虛擬跳轉(zhuǎn)地址,并且能夠進(jìn)行虛擬映射,以此來(lái)判斷出文件28實(shí)際上能夠在NORRAM12中就地執(zhí)行(步驟805)。
假設(shè)文件28實(shí)際上能夠在NORRAM12中就地執(zhí)行,文件系統(tǒng)16通過(guò)存取驅(qū)動(dòng)程序44得到與文件28相關(guān)的所需信息,包括前面提到的虛擬起始地址、物理位置和文件28的每個(gè)碎片32的長(zhǎng)度(步驟807),并且通知虛擬地址轉(zhuǎn)換器46注意相同的內(nèi)容(步驟809)。如現(xiàn)在應(yīng)當(dāng)可以理解的那樣,根據(jù)這些信息,虛擬地址轉(zhuǎn)換器46創(chuàng)建了一個(gè)文件28的映射,該映射是從NORRAM12中的多個(gè)不連續(xù)的物理位置到在由文件28指定的虛擬起始地址處開(kāi)始的一個(gè)單獨(dú)連續(xù)虛擬位置(步驟811)。
注意,因?yàn)榛谥付ǖ奶摂M起始地址,已經(jīng)將在NORRAM12中的文件28中的虛擬跳轉(zhuǎn)地址設(shè)定正確,虛擬地址轉(zhuǎn)換器46和處理器48都不需要考慮對(duì)相同的內(nèi)容進(jìn)行糾錯(cuò)。無(wú)論如何,按照創(chuàng)建的映射,處理器48通過(guò)適當(dāng)?shù)陌l(fā)出命令準(zhǔn)備好執(zhí)行文件28(步驟813),這些命令是基于通過(guò)虛擬地址轉(zhuǎn)換器46映射的虛擬地址得到的。因此,基于這樣的虛擬地址,虛擬地址轉(zhuǎn)換器46對(duì)與文件28有關(guān)的,將要直接從NORRAM12中執(zhí)行的數(shù)據(jù)40進(jìn)行定位。注意,在這樣做的過(guò)程中,處理器48不需要使用文件系統(tǒng)16和存取驅(qū)動(dòng)程序44。
根據(jù)本發(fā)明,如現(xiàn)在應(yīng)當(dāng)可以理解的那樣,文件28可以在計(jì)算裝置10的存儲(chǔ)裝置12上就地執(zhí)行,即便文件是不連續(xù)的。為了做到這些,文件28必須是沒(méi)有壓縮的,并且是按照基于預(yù)定義的虛擬起始地址的正確的虛擬地址進(jìn)行存儲(chǔ)的,存儲(chǔ)裝置12必須是可以由文件系統(tǒng)16通過(guò)存取驅(qū)動(dòng)程序44進(jìn)行存取的,且虛擬地址轉(zhuǎn)換器46必須能夠基于虛擬地址到物理地址的轉(zhuǎn)換對(duì)存儲(chǔ)裝置12直接存取。
盡管,前面提到的本發(fā)明與執(zhí)行特定操作的特定單元有關(guān),可以理解,在不背離本發(fā)明的精神和范圍的情況下,一個(gè)元件的功能可以由另一個(gè)元件替換。例如,可能有這種情況,文件系統(tǒng)16包括了存取驅(qū)動(dòng)程序44的功能,或者處理器48包括了虛擬地址轉(zhuǎn)換器46的功能。
此外,盡管前面提到的本發(fā)明與作為存儲(chǔ)裝置12的可直接尋址的NOR閃速RAM12有關(guān),可以理解,在不背離本發(fā)明的精神和范圍的情況下,也可以使用任何其它類型的可直接尋址的存儲(chǔ)裝置12。例如,雖然大部分存儲(chǔ)器目前不是可直接尋址的,但在一定程度上,可以有這樣的情況,其中的硬盤驅(qū)動(dòng)器實(shí)際上是可以直接尋址的。
結(jié)論本發(fā)明可用于在大部分計(jì)算裝置10上對(duì)應(yīng)用程序進(jìn)行更新,而不用考慮存儲(chǔ)介質(zhì)12的相對(duì)大小。如現(xiàn)在應(yīng)當(dāng)可以理解的那樣,根據(jù)前面提到的本發(fā)明,這樣的更新在實(shí)際執(zhí)行之前,首先要進(jìn)行模擬,只有當(dāng)確信模擬已經(jīng)成功時(shí),才進(jìn)行實(shí)際的操作。
需要完成與本發(fā)明有關(guān)的執(zhí)行進(jìn)程的程序設(shè)計(jì)是相當(dāng)直接的,并且這樣的程序設(shè)計(jì)對(duì)相關(guān)程序公眾來(lái)說(shuō),應(yīng)該是顯而易見(jiàn)的。相應(yīng)的,這樣的程序設(shè)計(jì)不需要在這里給出。在不背離本發(fā)明精神和范圍的前提下,任何特定的程序設(shè)計(jì)都可以用來(lái)完成本發(fā)明。
在前面的說(shuō)明中,能夠看到,本發(fā)明包括一種新式的并且實(shí)用的方法,其用于在計(jì)算裝置10上對(duì)比如文件系統(tǒng)16那樣的應(yīng)用程序14進(jìn)行更新,特別是在帶有相對(duì)較小存儲(chǔ)裝置12的計(jì)算裝置上。該方法確保更新能夠成功否則將不允許執(zhí)行更新操作。
本發(fā)明還包括一種新式并且實(shí)用的用于文件系統(tǒng)16的框架,用來(lái)基于每一信息塊對(duì)存儲(chǔ)裝置12上的文件進(jìn)行組織。該框架允許文件系統(tǒng)12有效的使用存儲(chǔ)裝置12的存儲(chǔ)容量,而不會(huì)過(guò)度的浪費(fèi)。
本發(fā)明進(jìn)一步包括一種新式并實(shí)用的文件28的結(jié)構(gòu),該結(jié)構(gòu)允許有效地使用存儲(chǔ)器12的存儲(chǔ)容量,特別是當(dāng)文件28包括空數(shù)據(jù)40時(shí)。這樣的結(jié)構(gòu)允許文件系統(tǒng)12基于不存儲(chǔ)文件28中的空數(shù)據(jù)來(lái)有效地使用存儲(chǔ)裝置12的存儲(chǔ)容量,而不會(huì)過(guò)度的浪費(fèi)。
本發(fā)明更進(jìn)一步包括一種方法和機(jī)制,通過(guò)它,計(jì)算裝置10的存儲(chǔ)裝置12上的文件28能夠幾乎被立即執(zhí)行。存儲(chǔ)在存儲(chǔ)裝置12上的文件能夠直接在那里執(zhí)行,甚至當(dāng)文件12以劃分成碎片的方式存儲(chǔ)到存儲(chǔ)裝置12上時(shí)。
應(yīng)當(dāng)可以理解,在不背離發(fā)明原理的情況下,可以對(duì)上面說(shuō)明的實(shí)施例進(jìn)行改動(dòng)。一般的,能夠理解本發(fā)明不局限于公開(kāi)的特定實(shí)施例,它可以覆蓋在由附帶的權(quán)利要求定義的本發(fā)明的精神和范圍之內(nèi)所做的修改。
權(quán)利要求
1.一種計(jì)算裝置,其特征在于,包括處理器、帶有可執(zhí)行文件的存儲(chǔ)裝置、以及代表處理器就地執(zhí)行存儲(chǔ)裝置上的文件的文件系統(tǒng),該文件被劃分成存儲(chǔ)裝置上的多個(gè)非連續(xù)碎片,計(jì)算裝置進(jìn)一步包括置于處理器和存儲(chǔ)裝置之間的虛擬地址轉(zhuǎn)換器,用于在存儲(chǔ)裝置上的文件的碎片的物理地址和相應(yīng)的供處理器使用的虛擬地址之間進(jìn)行轉(zhuǎn)換。
2.如權(quán)利要求1的計(jì)算裝置,其特征在于,該存儲(chǔ)裝置是可以基于每一字節(jié)進(jìn)行尋址的。
3.如權(quán)利要求1的計(jì)算裝置,其特征在于,該存儲(chǔ)裝置是NOR閃速RAM,該計(jì)算裝置進(jìn)一步包括存取驅(qū)動(dòng)器,用于允許文件系統(tǒng)為NOR閃速RAM上的文件存取文件信息。
4.如權(quán)利要求1的計(jì)算裝置,其特征在于,存儲(chǔ)在存儲(chǔ)裝置上的文件是非壓縮格式的。
5.如權(quán)利要求1的計(jì)算裝置,其特征在于,該文件包括指定起始虛擬地址的文件信息,并利用基于指定的起始虛擬地址的虛擬跳轉(zhuǎn)地址而存儲(chǔ)在存儲(chǔ)裝置上,由此,通過(guò)虛擬地址轉(zhuǎn)換器,存儲(chǔ)裝置上的文件對(duì)于處理器來(lái)說(shuō)就是連續(xù)的。
6.一種就地執(zhí)行存儲(chǔ)裝置上的文件的方法,該文件被劃分為存儲(chǔ)裝置上多個(gè)非連續(xù)的碎片,其特征在于,該方法包括通過(guò)存取驅(qū)動(dòng)器對(duì)存儲(chǔ)裝置上的文件進(jìn)行定位;判斷該文件實(shí)際上能夠在存儲(chǔ)裝置上就地執(zhí)行;通過(guò)存取驅(qū)動(dòng)器獲取與該文件有關(guān)的信息,該信息包括由文件指定的虛擬起始地址、物理位置以及文件的每個(gè)碎片的長(zhǎng)度;通知虛擬地址轉(zhuǎn)換器注意獲取的信息,以使得虛擬地址轉(zhuǎn)換器能夠創(chuàng)建該文件的一個(gè)映射,該映射從代表存儲(chǔ)裝置上的多個(gè)非連續(xù)碎片的物理地址到對(duì)應(yīng)的代表在由該文件指定的虛擬起始地址處起始的一個(gè)單獨(dú)連續(xù)虛擬位置的虛擬地址;通過(guò)基于由虛擬地址轉(zhuǎn)換器映射的虛擬地址發(fā)送命令來(lái)執(zhí)行文件,由此,虛擬地址轉(zhuǎn)換器對(duì)與該文件有關(guān)的直接從存儲(chǔ)裝置上執(zhí)行的數(shù)據(jù)進(jìn)行定位。
7.如權(quán)利要求6的方法,其特征在于包括,通過(guò)判斷該文件沒(méi)有被壓縮并且包含基于由其指定的虛擬起始地址的虛擬跳轉(zhuǎn)地址,來(lái)判斷該文件實(shí)際上能夠在存儲(chǔ)裝置上就地執(zhí)行。
8.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),帶有在其上存儲(chǔ)的用于在其上執(zhí)行的可執(zhí)行文件,該介質(zhì)設(shè)置在計(jì)算裝置上,該計(jì)算裝置包括處理器以及代表處理器在介質(zhì)上就地執(zhí)行文件的文件系統(tǒng),存儲(chǔ)介質(zhì)上的文件被劃分成多個(gè)非連續(xù)碎片,該計(jì)算裝置進(jìn)一步包括置于處理器和存儲(chǔ)裝置之間的虛擬地址轉(zhuǎn)換器,用于在存儲(chǔ)裝置上的文件的碎片的物理地址和相應(yīng)的供處理器使用的虛擬地址之間進(jìn)行轉(zhuǎn)換,該文件包括指定起始虛擬地址的文件信息,并利用基于指定的起始虛擬地址的虛擬跳轉(zhuǎn)地址而存儲(chǔ)在存儲(chǔ)介質(zhì)上,由此,通過(guò)虛擬地址轉(zhuǎn)換器,存儲(chǔ)介質(zhì)上的文件對(duì)于處理器來(lái)說(shuō)就是連續(xù)的。
9.如權(quán)利要求8的存儲(chǔ)介質(zhì),其特征在于,該存儲(chǔ)介質(zhì)是可以基于每一字節(jié)進(jìn)行尋址的。
10.如權(quán)利要求8的存儲(chǔ)介質(zhì),其特征在于,該存儲(chǔ)介質(zhì)是NOR閃速RAM,該計(jì)算裝置進(jìn)一步包括存取驅(qū)動(dòng)器,用于允許文件系統(tǒng)為NOR閃速RAM上的文件存取文件信息。
11.如權(quán)利要求8的存儲(chǔ)介質(zhì),其特征在于,存儲(chǔ)在存儲(chǔ)介質(zhì)上的文件是非壓縮格式的。
12.一種計(jì)算機(jī)可讀介質(zhì),帶有存儲(chǔ)在其上的用于執(zhí)行一種方法的計(jì)算機(jī)可執(zhí)行指令,該方法用于就地執(zhí)行存儲(chǔ)裝置上的文件,該文件被劃分成存儲(chǔ)裝置上的多個(gè)非連續(xù)碎片,其特征在于,該方法包括通過(guò)存取驅(qū)動(dòng)器對(duì)存儲(chǔ)裝置上的文件進(jìn)行定位;判斷該文件實(shí)際上能夠在存儲(chǔ)裝置上就地執(zhí)行;通過(guò)存取驅(qū)動(dòng)器獲取與該文件有關(guān)的信息,該信息包括由文件指定的虛擬起始地址、物理位置以及文件的每個(gè)碎片的長(zhǎng)度;通知虛擬地址轉(zhuǎn)換器注意獲取的信息,以使得虛擬地址轉(zhuǎn)換器能夠創(chuàng)建該文件的一個(gè)映射,該映射從代表存儲(chǔ)裝置上的多個(gè)非連續(xù)碎片的物理地址到對(duì)應(yīng)的代表在由該文件指定的虛擬起始地址處起始的一個(gè)單獨(dú)連續(xù)虛擬位置的虛擬地址;通過(guò)基于由虛擬地址轉(zhuǎn)換器映射的虛擬地址發(fā)送命令來(lái)執(zhí)行文件,由此,虛擬地址轉(zhuǎn)換器對(duì)與該文件有關(guān)的直接從存儲(chǔ)裝置上執(zhí)行的數(shù)據(jù)進(jìn)行定位。
13.如權(quán)利要求12的介質(zhì),其特征在于,該方法包括,通過(guò)判斷該文件沒(méi)有被壓縮并且包含基于由其指定的虛擬起始地址的虛擬跳轉(zhuǎn)地址,來(lái)判斷該文件實(shí)際上能夠在存儲(chǔ)裝置上就地執(zhí)行。
全文摘要
一種計(jì)算裝置,包括處理器、帶有可執(zhí)行文件的存儲(chǔ)裝置、以及代表處理器就地執(zhí)行存儲(chǔ)裝置上的文件的文件系統(tǒng)。該文件被劃分成存儲(chǔ)裝置上的多個(gè)非連續(xù)碎片,計(jì)算裝置進(jìn)一步包括置于處理器和存儲(chǔ)裝置之間的虛擬地址轉(zhuǎn)換器,用于在存儲(chǔ)裝置上的文件的碎片的物理地址和供處理器使用的虛擬地址之間進(jìn)行轉(zhuǎn)換。
文檔編號(hào)G06F3/06GK1680926SQ20051007414
公開(kāi)日2005年10月12日 申請(qǐng)日期2005年3月22日 優(yōu)先權(quán)日2004年3月22日
發(fā)明者B-M·赫希, D·F·凱利, Y·N·古帕蘭, A·M·羅杰斯 申請(qǐng)人:微軟公司