两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

帶有相對受限存儲空間以及操作/文件系統(tǒng)的計算裝置的制作方法

文檔序號:6620587閱讀:181來源:國知局
專利名稱:帶有相對受限存儲空間以及操作/文件系統(tǒng)的計算裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及計算裝置,但尤其涉及一種帶有相對受限存儲空間的計算裝置,例如象帶有一個相對較小的硬盤驅(qū)動器或一個隨機存儲器(RAM)的便攜式計算裝置,硬盤驅(qū)動器或隨機存儲器上存儲著用于這類裝置的操作系統(tǒng)。更特殊的,本發(fā)明涉及這樣一種計算裝置及其操作/文件系統(tǒng),特別涉及到以一種相對安全和有效的方式執(zhí)行文件系統(tǒng)的操作。
背景技術(shù)
在許多象個人計算機、游戲計算機、家用視頻錄制計算機等等的典型計算裝置中,計算裝置帶有一個相對較大的存儲裝置,其上可以存儲與計算裝置有關(guān)的數(shù)據(jù),當然包括能夠在其上執(zhí)行的應用程序以及可以在其上執(zhí)行的一個操作系統(tǒng)和/或文件系統(tǒng)(以下稱為“文件系統(tǒng)”),以便操作相同并允許對存儲裝置進行存取。因為存儲裝置相對較大,供存儲裝置上的應用程序和文件系統(tǒng)使用的空間量相對來說是可以忽略的,并且文件維護、系統(tǒng)更新、文件存取、文件存儲等等相關(guān)問題也就不是特別的嚴重。
然而,當計算裝置不包括這樣相對較大的存儲裝置,取而代之包括一個相對較小的存儲裝置時,裝置上的應用程序和操作系統(tǒng)使用的空間量就變得相對重要,前面提到的問題能夠并且確實變得更嚴重。例如,當該計算裝置是一種便攜式計算裝置或類似裝置時,類似裝置例如象便攜式音頻或視頻播放器或便攜式游戲計算機這樣的裝置,它具有相對較小的尺寸,很可能這樣的計算裝置就包括一個相對較小的存儲裝置,特別是因為該計算裝置可能在需要的功能方面受到限制,其中應用程序能在其上執(zhí)行,并且存儲裝置的物理尺寸能夠進行調(diào)整。應當可以理解,因為存儲裝置相對較小,供其上的操作系統(tǒng)使用的空間量就相對重要,并且文件維護、系統(tǒng)更新、文件存取、文件存儲等等相關(guān)問題現(xiàn)在就需要仔細的考慮。
必須要考慮的一個問題是怎么樣對相對較小的存儲裝置上的應用程序或文件系統(tǒng)進行更新。特別的,在相對較大的存儲裝置中,這樣的更新可以通過向存儲裝置中的未使用部分成功寫入更新數(shù)據(jù),然后從該存儲裝置的另一部分刪除掉相應的舊數(shù)據(jù)來實現(xiàn)。然而,在相對較小的存儲裝置中,其上的空間可能無法用來在刪除舊數(shù)據(jù)之前寫入更新數(shù)據(jù),因此舊數(shù)據(jù)必須在寫入更新數(shù)據(jù)之前刪除以便釋放空間。
嚴重的,盡管,如果應用程序或文件系統(tǒng)的更新不知什么原因失敗了,并且其中的舊數(shù)據(jù)已經(jīng)被刪除,那么該計算裝置可能就沒有辦法恢復到先前的狀態(tài),在先前狀態(tài)中,未更新的應用程序或文件系統(tǒng)可以在該計算裝置上運行。對于應用程序來說,如果可能進行重載的話,直到應用程序被重載,這樣的失敗可能是件討厭的事情。然而,對于文件系統(tǒng)來說,因為,在缺少能起作用的文件系統(tǒng)的情況下,該計算裝置可能是無法工作的,所以這樣的失敗可能是災難性的。相應的,需要一種方法,該方法用于在帶有相對較小存儲裝置的計算裝置上對應用程序和文件系統(tǒng)進行更新,其中,該方法確保更新能夠成功,否則不允許執(zhí)行更新操作。
另一個需要考慮的問題是如何在相對較小的存儲裝置上存儲文件。特別的,在相對較大的存儲裝置中,存儲文件是基于每一簇來執(zhí)行的,每個文件至少使用一簇,該簇可以被定義為1、2、4、8、16千字節(jié)或更多字節(jié)。這樣,如果僅有很小(例如一字節(jié))的文件數(shù)據(jù)量被安排到一個特殊的簇,在這樣的簇中所有保留的空間將不能被其它任何文件使用并且就這樣被浪費掉。這些浪費掉的空間在相對較大的存儲裝置中,特別是對于具有幾十或幾百個十億字節(jié)容量的存儲裝置來說不是特別的重要。
然而,在相對較小的存儲裝置中,這樣浪費掉的空間會很快上升到一個重要的程度,甚至于達到將存儲裝置空間用盡的程度。例如,一個具有16兆字節(jié)容量并且一簇被定義為16千字節(jié)的存儲裝置,即便每個文件僅有少量的字節(jié),這樣的存儲裝置也僅能保存大約1000個文件。此外,通常會有這種情況,如前所述的相對較小的存儲裝置實際上在其上已經(jīng)存儲了很多非常小的文件,這些文件都屬于幾個到幾百個字節(jié)的文件。相應的,需要一種文件系統(tǒng)框架,在沒有過度浪費空間的情況下,有效率地使用相對較小的存儲裝置的存儲容量。
還有另一個需要考慮的問題是,當文件包括未分配的部分或空數(shù)據(jù)時,如何在相對較小的存儲裝置上存儲文件。如所能理解的那樣,文件中這些未分配的數(shù)據(jù)或空數(shù)據(jù)是文件現(xiàn)存空間中的數(shù)據(jù),但是其中的這些數(shù)據(jù)還沒有建立起來。例如,在一個特殊的128千字節(jié)的文件中,可能有這種情況,它的中間部分包括作為占位符的32千字節(jié)的空數(shù)據(jù),但稍后它會由某種類型的信息來填充。因此,這樣的空數(shù)據(jù)可能用全零或類似的方式來表示,并且稍后還可能由實體信息進行填充。
特別的,在相對較大的存儲裝置中,盡管這樣的空數(shù)據(jù)不代表任何意思,這些文件的全部還是包括存儲的空數(shù)據(jù)。如所能理解的那樣,這些“存儲”的數(shù)據(jù)在相對較大的存儲空間上浪費的空間,取而代之,能夠得到更好的利用。然而,還有,在相對較大的存儲裝置中,特別是對于具有幾十或幾百個十億字節(jié)容量的存儲裝置來說,這樣浪費的空間不是特別的重要。
然而,還有,在相對較小的存儲裝置中,這些浪費掉的空間能夠很快的上升到一個重要的程度,甚至于達到將存儲裝置空間用盡的程度。此外,可以理解,當基于相對較小的存儲裝置中的舊文件,試圖在其上建立新文件時,特別是當該裝置幾乎飽和時,這些浪費掉的空間會起到干擾的作用。相應的,需要一種文件結(jié)構(gòu),允許有效地使用相對較小的存儲裝置的存儲容量,尤其是當該文件中包括空數(shù)據(jù)時。
還有另一個需要考慮的問題是,如何在相對較小的存儲裝置中執(zhí)行文件。特別的,在可能包括相對較小存儲裝置的計算裝置中,例如象移動電話,位置定位器,音樂播放器等等,用戶很可能希望請求的操作可以立即實施。換另一個角度說,如果請求的操作需要執(zhí)行一個可執(zhí)行文件的話,這樣的用戶不希望文件從存儲裝置加載到本地RAM或類似存儲器及準備執(zhí)行需要等很多秒。此外,在一定的環(huán)境下,操作本來甚至可能需要幾乎立即執(zhí)行,例如象如果該計算裝置是處理突發(fā)事件的職員在突發(fā)事件中要用到的一臺便攜式通訊裝置。
相應的,需要一種方法和機制,通過它計算裝置中存儲裝置上的文件幾乎能夠立即執(zhí)行。特別的,需要一種方法和機制,其中文件存儲在存儲裝置上并且能夠直接從其上執(zhí)行。更進一步,需要一種方法和機制,通過它文件能夠以碎片方式存儲在存儲裝置上并且還能夠從這樣的存儲裝置上直接執(zhí)行。

發(fā)明內(nèi)容
通過本發(fā)明可以至少部分地使前面提到的需要得到滿足,其中本發(fā)明提出了一種對貯留在計算裝置的存儲裝置上的應用程序進行更新的方法。在該方法中,可以通過執(zhí)行除實際向該存儲裝置提交與更新有關(guān)的數(shù)據(jù)之外的所有所需操作來模擬更新,并判斷模擬的更新是否成功。如果成功,通過執(zhí)行同樣的所需操作來執(zhí)行更新并且還實際將與更新有關(guān)的數(shù)據(jù)提交給該存儲裝置。
通過本發(fā)明可以至少部分地使前面提到的需要得到滿足,其中計算裝置包括存儲裝置和用于在存儲裝置上存儲和提取文件的文件系統(tǒng)。該存儲裝置包括劃分成扇區(qū)的存儲空間,并且該文件系統(tǒng)基于每一扇區(qū)對該存儲裝置進行外部尋址,但內(nèi)部將該存儲裝置的每個扇區(qū)劃分成信息塊,并且基于每一信息塊對每個扇區(qū)中的數(shù)據(jù)進行管理。這樣,該文件系統(tǒng)通過對帶有信息塊的扇區(qū)進行讀取和寫入操作,來從該存儲裝置中讀取信息塊或者向該存儲裝置寫入信息塊。
通過本發(fā)明進一步可以至少部分地使前面提到的需要得到滿足,其中計算裝置包括存儲裝置,該存儲裝置中帶有文件以及用于在存儲裝置上存儲和提取該文件的文件系統(tǒng)。該文件包括多個段,其中至少一些段中的每一個都是空數(shù)據(jù),以及至少一些段中的每一個都是實體數(shù)據(jù)。該文件中包括為每個空數(shù)據(jù)段分配的空間,但是這樣分配的空間實際上沒有填充信息,以及該文件中包括為每個實體數(shù)據(jù)段分配的空間,并且這樣分配的空間實際上填充了信息。每個空數(shù)據(jù)段實際上沒有物理存儲到存儲裝置上,而每個實體數(shù)據(jù)段實際存儲到了存儲裝置上。
通過本發(fā)明更進一步可以至少部分地使前面提到的需要得到滿足,其中計算裝置包括處理器、帶有可執(zhí)行文件的存儲裝置、以及代表該處理器用于執(zhí)行該存儲器上的文件的文件系統(tǒng)。該文件被分割成存儲裝置上多個不連續(xù)的碎片,該計算裝置進一步包括置于該處理器和該存儲裝置之間的虛擬地址轉(zhuǎn)換器,用于在存儲裝置上的文件的碎片的物理地址和供該處理器使用的相應的虛擬地址之間進行轉(zhuǎn)換。


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