專利名稱:計(jì)算機(jī)文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng)的文件系統(tǒng)。更具體地,本發(fā)明提供一種文件系統(tǒng),該文件系統(tǒng)不將存儲在該文件系統(tǒng)中的項(xiàng)的生存周期與由該文件系統(tǒng)所使用的底層組織結(jié)構(gòu)合并,從而允許存儲在該文件系統(tǒng)中的項(xiàng)的每一個(gè)在該組織結(jié)構(gòu)中具有零個(gè)、一個(gè)或多個(gè)父項(xiàng)而沒有被刪除的風(fēng)險(xiǎn)。
背景技術(shù):
計(jì)算機(jī)在諸如磁盤驅(qū)動器等存儲設(shè)備上存儲文件。磁盤驅(qū)動器僅提供類似于空文件箱等存儲數(shù)據(jù)的場所。正如空文件箱不伴隨文件的任何預(yù)定義的文件編排系統(tǒng)(即,文件箱的用戶必須例如通過按照字母順序排列文件來自己創(chuàng)建文件編排系統(tǒng)或組織結(jié)構(gòu)),硬盤驅(qū)動器默認(rèn)也僅是空的存儲空間。僅靠其自身,訪問硬盤驅(qū)動器上的數(shù)據(jù)的唯一的方法是,或者通過指定數(shù)據(jù)的物理位置(例如,通過指定存儲文件的硬盤驅(qū)動器的柱面、磁頭以及扇區(qū)),或者通過其在磁盤上的邏輯位置(例如,第21,671塊)。一旦硬盤驅(qū)動器被安裝在計(jì)算機(jī)上,計(jì)算機(jī)使用文件系統(tǒng)以可容易訪問的方式來跟蹤存儲在硬盤驅(qū)動器上的文件。
已知的文件系統(tǒng)過度地限制文件系統(tǒng)的操作系統(tǒng)和用戶如何能夠組織文件系統(tǒng)中的文件。即,已知的文件系統(tǒng)一般要求用戶在文件和目錄的樹中組織項(xiàng),其中目錄實(shí)際上是由文件系統(tǒng)識別的特殊類型的文件。即使文件系統(tǒng)支持另外的數(shù)據(jù)結(jié)構(gòu),這種能力一般也不展示給文件系統(tǒng)的客戶(即,終端用戶和應(yīng)用程序)。圖2示出了現(xiàn)有文件系統(tǒng)的典型組織結(jié)構(gòu)201的簡要的示例。如在圖2中所示,已知的文件系統(tǒng)使用樹來組織目錄(使用圓形端示出)和文件(使用方形端示出)。在樹結(jié)構(gòu)中,項(xiàng)的位置和組織是合并的;每一項(xiàng)必須在一個(gè)且僅一個(gè)目錄中。這就是用戶必須如何組織他或她的文件,且用戶不能夠在沒有創(chuàng)建項(xiàng)的新副本的情況下將一個(gè)項(xiàng)置于多個(gè)組織中。
典型的文件系統(tǒng)使用兩個(gè)彼此結(jié)合的表或數(shù)據(jù)庫來組織文件。第一張表或數(shù)據(jù)庫是識別文件存儲在諸如硬盤驅(qū)動器等存儲設(shè)備上的物理位置的查找表。第二張表定義了文件的組織結(jié)構(gòu)。這些表在此一般分別被稱為位置表(LOC)和組織表(ORG)。組織表存儲關(guān)于持有鏈接,即一個(gè)項(xiàng)是另一個(gè)項(xiàng)的父項(xiàng)的信息。某些文件系統(tǒng)可將位置表和組織表組合成單張表或結(jié)構(gòu),但仍舊要求存在兩張表的元素以使文件系統(tǒng)能夠正確地運(yùn)作。例如,在由微軟公司銷售的NT文件系統(tǒng),即NTFS中,主文件表既用作位置表又用作組織表。類似地,Unix文件系統(tǒng),即UFS,使用一種i個(gè)節(jié)點(diǎn)的表,該表既用作文件的位置表又用作組織表。目錄作為特殊類型的文件存儲,其中目錄“文件”在目錄內(nèi)部存儲文件名列表和其各自的i個(gè)節(jié)點(diǎn)。
在這些和其它已知的文件系統(tǒng)中,只要文件位于如由組織表中的持有鏈接定義的至少一個(gè)位置上,即,存在指向該文件的至少一個(gè)持有鏈接,文件系統(tǒng)就保持將該文件存儲在物理存儲設(shè)備上。即,如果從組織表中刪除對文件的持有鏈接,且不再有指向該文件的持有鏈接,那么文件系統(tǒng)移除位置表中該文件的條目(不考慮該文件在存儲設(shè)備上是否被物理地重寫)。存儲設(shè)備然后可以使用該存儲空間來寫入新的數(shù)據(jù)。例如,如果用戶想要“刪除”圖2所示的文件C\PROGRAMS\MICROSOFT\OFFICE\WORD\FILE.DOC,那么文件系統(tǒng)首先從組織表中移除該文件的條目。如果該文件在位置表中沒有其它條目,即該文件沒有存儲在其它地方,那么文件系統(tǒng)移除位置表中該文件的條目,由此為其它數(shù)據(jù)釋放了空間。通常,文件系統(tǒng)維護(hù)任何給定項(xiàng)具有的祖先(被稱為“持有鏈接”)的數(shù)量的引用計(jì)數(shù)。當(dāng)移除項(xiàng)上的最后一個(gè)持有鏈接時(shí),通過移除位置表中該文件的引用來“刪除”該項(xiàng)。然而,從終端用戶觀點(diǎn)來看,這是不合需要的,因?yàn)樗拗屏宋募到y(tǒng)可以使用的組織結(jié)構(gòu)。
由于上述約束和限制(例如,作為將文件從樹中移除的副產(chǎn)物的刪除),文件系統(tǒng)不允許客戶機(jī)以不同于目錄和文件的樹形層次的數(shù)據(jù)結(jié)構(gòu)來組織數(shù)據(jù)。用戶想要能夠以各種組織數(shù)據(jù)結(jié)構(gòu)來對項(xiàng)進(jìn)行組織和去除組織,而不涉及刪除給定的項(xiàng)。如果項(xiàng)的生存周期與其在文件系統(tǒng)中的組織相分離,這將是本領(lǐng)域中的進(jìn)步。即,提供不將項(xiàng)的生存周期與組織結(jié)構(gòu)合并的文件系統(tǒng)將是本領(lǐng)域中的進(jìn)步,在該文件系統(tǒng)中,對項(xiàng)進(jìn)行組織和去除組織的動作不影響其生存周期。這樣,提供這樣一種文件系統(tǒng),它不限制操作系統(tǒng)和/或用戶能夠用于組織文件的數(shù)據(jù)結(jié)構(gòu)的類型,也不會僅僅因?yàn)槲募奈募到y(tǒng)內(nèi)的所有組織結(jié)構(gòu)中移除或者沒有指向該文件的持有鏈接而刪除文件,將是本領(lǐng)域中的進(jìn)步。
發(fā)明內(nèi)容
下文提供了本發(fā)明的簡化的概述,以提供對本發(fā)明的某些方面的基本理解。該概述不是本發(fā)明的廣泛的概觀。它不旨在標(biāo)識本發(fā)明的關(guān)鍵或重要的元素,也不描繪本發(fā)明的范圍。下文的概述僅以簡化的形式提供本發(fā)明的某些概念,以作為下文提供的更詳細(xì)的描述的序言。
為了克服上述的現(xiàn)有技術(shù)中的一個(gè)或多個(gè)限制,和/或克服在閱讀和理解本說明書之后顯而易見的其它限制,本發(fā)明一般針對一種實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的數(shù)據(jù)項(xiàng)和計(jì)算機(jī)可執(zhí)行指令的文件系統(tǒng)。數(shù)據(jù)項(xiàng)一般指的是可以存儲在文件系統(tǒng)中的任何數(shù)據(jù),包括但不限于,文件、文件夾、數(shù)據(jù)、音樂等。該文件系統(tǒng)使用存儲至少用于存儲在文件系統(tǒng)內(nèi)的第一、第二和第三數(shù)據(jù)項(xiàng)的項(xiàng)位置信息的第一數(shù)據(jù)表,并使用存儲第一和第二數(shù)據(jù)項(xiàng)的組織信息但不存儲第三數(shù)據(jù)項(xiàng)的組織信息的第二數(shù)據(jù)表。
該文件系統(tǒng)的文件系統(tǒng)管理器軟件模塊可以被實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令。該文件系統(tǒng)管理器基于項(xiàng)位置數(shù)據(jù)和項(xiàng)組織數(shù)據(jù)來管理存儲在文件系統(tǒng)中的數(shù)據(jù)項(xiàng)。該文件系統(tǒng)管理器使用用于從文件系統(tǒng)中刪除項(xiàng)的第一子例程,并使用用于從文件系統(tǒng)中移除項(xiàng)的第二子例程。
該文件系統(tǒng)管理器執(zhí)行一種用于管理存儲在文件系統(tǒng)中的項(xiàng)的方法,該方法包括接收從文件系統(tǒng)中刪除第一項(xiàng)的第一請求,并響應(yīng)于第一請求,從與文件系統(tǒng)相關(guān)聯(lián)的位置信息以及從與文件系統(tǒng)相關(guān)聯(lián)的組織信息中刪除對第一項(xiàng)的引用。該文件系統(tǒng)管理器接收從文件系統(tǒng)中移除第二項(xiàng)的第二請求,并響應(yīng)于第二請求,從與文件系統(tǒng)相關(guān)聯(lián)的組織信息中刪除對第二項(xiàng)的引用,但是不從與文件系統(tǒng)相關(guān)聯(lián)的位置信息中刪除對第二項(xiàng)的引用。
本發(fā)明的另一方面提供一種用于存儲數(shù)據(jù)項(xiàng)的文件系統(tǒng),其中該文件系統(tǒng)被實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令。在該文件系統(tǒng)中,數(shù)據(jù)項(xiàng)生存周期獨(dú)立于該文件系統(tǒng)中數(shù)據(jù)項(xiàng)的任何概念組織內(nèi)的數(shù)據(jù)項(xiàng)的位置。
考慮附圖,通過參考下文的描述,可以獲得對本發(fā)明及其優(yōu)點(diǎn)的更完整的理解,附圖中,相同的參考標(biāo)號指示相同的特征,附圖中圖1示出了根據(jù)本發(fā)明的說明性實(shí)施例適用于實(shí)現(xiàn)媒體用戶界面的通用操作環(huán)境。
圖2示出了已知文件系統(tǒng)的典型組織結(jié)構(gòu)。
圖3示出了根據(jù)本發(fā)明的說明性實(shí)施例的位置表(“LOC”)。
圖4示出了根據(jù)本發(fā)明的說明性實(shí)施例的組織表(“ORG”)。
圖5示出了根據(jù)圖4所示的組織表的有向無環(huán)圖(DAG)組織結(jié)構(gòu)。
圖6示出了根據(jù)本發(fā)明的說明性實(shí)施例的文件系統(tǒng)的框圖。
圖7示出了根據(jù)本發(fā)明的說明性實(shí)施例的文件區(qū)域。
圖8示出了定義圖7的組織結(jié)構(gòu)的組織表。
圖9示出了根據(jù)本發(fā)明的說明性實(shí)施例的文件區(qū)域。
圖10示出了定義圖9的組織結(jié)構(gòu)的組織表。
圖11示出了根據(jù)本發(fā)明的說明性實(shí)施例的組織表。
圖12示出了根據(jù)圖11所示的組織表的文件區(qū)域。
圖13示出了根據(jù)本發(fā)明的說明性實(shí)施例用于管理存儲在文件系統(tǒng)中的項(xiàng)的方法。
具體實(shí)施例方式
在下文對于各個(gè)實(shí)施例的描述中,參考附圖,附圖形成了本發(fā)明的一部分,并作為說明示出可在其中實(shí)現(xiàn)本發(fā)明的各種實(shí)施例??梢岳斫?,可以使用其它實(shí)施例,且可以進(jìn)行結(jié)構(gòu)和功能的修改而不背離本發(fā)明的范圍。
示例性計(jì)算環(huán)境圖1示出了可在其上實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境100的示例。計(jì)算系統(tǒng)環(huán)境100只是合適的計(jì)算環(huán)境的一個(gè)示例,并不旨在對本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該把計(jì)算環(huán)境100解釋為對示例性操作環(huán)境100中示出的任一組件或其組合有任何依賴性或要求。
本發(fā)明可用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。適合在本發(fā)明中使用的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算機(jī)環(huán)境等。
本發(fā)明可在諸如由計(jì)算機(jī)執(zhí)行的程序模塊等的計(jì)算機(jī)可執(zhí)行指令的通用語境下描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲器存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。
參考圖1,用于實(shí)現(xiàn)本發(fā)明的一個(gè)示例性系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可以包括,但不限于,處理單元120、系統(tǒng)存儲器130和將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干類型的總線結(jié)構(gòu)中的任一種,包括存儲器總線或存儲器控制器、外圍總線和使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。作為示例,而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、擴(kuò)展的ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線和外圍部件互連(PCI)總線(也被稱為Mezzanine總線)。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能夠被計(jì)算機(jī)110訪問的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)的用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或能用于存儲所需信息且可以由計(jì)算機(jī)110訪問的任何其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指的是這樣一種信號,其一個(gè)或多個(gè)特征以在信號中編碼信息的方式被設(shè)定或更改。作為示例,而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其它無線介質(zhì)。上述中任一個(gè)的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括易失性或非易失性存儲器形式的計(jì)算機(jī)存儲介質(zhì),諸如只讀存儲器(ROM)131和隨機(jī)存取存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包含有助于諸如啟動時(shí)在計(jì)算機(jī)110中元件之間傳遞信息的基本例程,它通常存儲在ROM 131中。RAM 132通常包含處理單元120可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110也可以包括其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)。僅作為示例,圖1示出了從不可移動、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動器141,從可移動、非易失性磁盤152中讀取或向其寫入的磁盤驅(qū)動器151,以及從諸如CD ROM或其它光學(xué)介質(zhì)等可移動、非易失性光盤156中讀取或向其寫入的光盤驅(qū)動器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅(qū)動器141通常由不可移動存儲器接口,諸如接口140連接至系統(tǒng)總線121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常由可移動存儲器接口,諸如接口150連接至系統(tǒng)總線121。
以上描述和在圖1中示出的驅(qū)動器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲介質(zhì)為計(jì)算機(jī)110提供了對計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖1中,硬盤驅(qū)動器141被示為存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同或不同。操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147在這里被標(biāo)注了不同的標(biāo)號是為了說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,諸如鍵盤162和定點(diǎn)設(shè)備161(通常指鼠標(biāo)、跟蹤球或觸摸墊)向計(jì)算機(jī)110輸入命令和信息。其它輸入設(shè)備可以包括遙控器163、麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等(未全部示出)。這些和其它輸入設(shè)備通常由耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但也可以由其它接口或總線結(jié)構(gòu),諸如并行端口、游戲端口或通用串行總線(USB)連接。監(jiān)視器191或其它類型的顯示設(shè)備(例如,電視機(jī))也經(jīng)由接口,諸如視頻接口190連接至系統(tǒng)總線121。除監(jiān)視器以外,計(jì)算機(jī)也可以包括其它外圍輸出設(shè)備,諸如揚(yáng)聲器197和打印機(jī)196,它們可以通過輸出外圍接口195連接。
在某些方面,提供了筆數(shù)字化儀165和附屬的筆或觸針166以數(shù)字化地捕捉手畫線輸入。盡管示出了筆數(shù)字化儀165和用戶輸入接口160之間的直接連接,但在實(shí)際上,筆數(shù)字化儀165可以使用包括無線技術(shù)在內(nèi)的任何技術(shù),直接地、通過并行端口或其它接口以及系統(tǒng)總線130來耦合至處理器單元110。而且,筆166可以含有與其相關(guān)聯(lián)的照相機(jī),以及用于將由該照相機(jī)所捕捉到的圖像信息無線地發(fā)送到與總線130交互的接口的收發(fā)器。此外,筆可以含有除照相機(jī)之外的或代替照相機(jī)的其它傳感系統(tǒng),用于確定電子墨跡的筆劃,這些傳感系統(tǒng)包括加速計(jì)、磁強(qiáng)計(jì)和陀螺儀等。
計(jì)算機(jī)110可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它常見網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對于計(jì)算機(jī)110描述的許多或所有元件,盡管在圖1中只示出存儲器存儲設(shè)備181。圖1中所示邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其它網(wǎng)絡(luò)。這樣的連網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。此外,系統(tǒng)可以包括有線和/或無線能力。例如,網(wǎng)絡(luò)接口170可以包括藍(lán)牙、SWLan和/或IEEE 802.11的組合能力類??梢岳斫?,可以結(jié)合這些協(xié)議或替代這些協(xié)議來使用其它無線通信協(xié)議。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接至局域網(wǎng)171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過諸如因特網(wǎng)等WAN 173建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,它可以通過用戶輸入接口160或其它合適的機(jī)制連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對于計(jì)算機(jī)110所描述的程序模塊或其部分可以存儲在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例,而非限制,圖1示出了遠(yuǎn)程應(yīng)用程序185駐留在存儲器設(shè)備181上??梢岳斫?,所示的網(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
可以理解,所示網(wǎng)絡(luò)鏈接是示例性的,可以使用在計(jì)算機(jī)之間建立通信鏈路的其它技術(shù)。假設(shè)諸如TCP/IP、以太網(wǎng)、FTP、HTTP等各種公知協(xié)議的任一種存在,系統(tǒng)可以在客戶機(jī)-服務(wù)器配置中操作,以允許用戶從基于web的服務(wù)器中檢索網(wǎng)頁。各種常規(guī)網(wǎng)絡(luò)瀏覽器的任何一種可以用于顯示和處理網(wǎng)頁上的數(shù)據(jù)。
本發(fā)明的一個(gè)或多個(gè)方面可以被實(shí)施為諸如由計(jì)算機(jī)110等一臺或多臺計(jì)算機(jī)或其它設(shè)備執(zhí)行的一個(gè)或多個(gè)程序模塊中的計(jì)算機(jī)可執(zhí)行指令。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。計(jì)算機(jī)可執(zhí)行指令可以被存儲在諸如硬盤、光盤、可移動存儲介質(zhì)、固態(tài)存儲器、RAM等的計(jì)算機(jī)可讀介質(zhì)中。本領(lǐng)域的技術(shù)人員可以理解,程序模塊的功能可以如在各個(gè)實(shí)施例中所需而結(jié)合或分布。另外,功能可以被實(shí)施為諸如集成電路、現(xiàn)場可編程門陣列(FPGA)等固件或硬件等效物的全部或部分。
本發(fā)明的說明性實(shí)施例根據(jù)本發(fā)明的說明性方面,此處描述了一種文件系統(tǒng),該文件系統(tǒng)不將項(xiàng)的生存周期與該項(xiàng)在文件系統(tǒng)組織結(jié)構(gòu)內(nèi)的位置合并,從而允許項(xiàng)諸如通過基于查詢的屬性和通過列表來參與多個(gè)組織或者根本不參與組織,這些組織構(gòu)成一個(gè)或多個(gè)有向無環(huán)圖(DAG)。DAG是一種組織,其中項(xiàng)可以擁有多個(gè)父項(xiàng)。在DAG中,項(xiàng)不能夠是其祖先的父項(xiàng),否則會形成環(huán)。
此處描述的文件系統(tǒng)可以被實(shí)施化為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,例如,文件系統(tǒng)138和/或文件系統(tǒng)148(圖1)。另外,圖1中的其它計(jì)算機(jī)可讀介質(zhì)或存儲器也可以包括與本發(fā)明所述的文件系統(tǒng)相同或不同的文件系統(tǒng)。例如,介質(zhì)152和156也可以包括文件系統(tǒng)。為說明起見,此處將參考文件系統(tǒng)148來描述文件系統(tǒng)。
參考圖3和圖4,文件系統(tǒng)148主要依賴于兩張表——位置表(LOC)301和組織表(ORG)401。位置表301也被稱為LOC表,它存儲關(guān)于存儲在文件系統(tǒng)中的每一項(xiàng)的物理和/或邏輯位置的信息,包括,例如,文件標(biāo)識符(ID)303、文件名305、存儲卷307、位置309以及文件大小311。文件ID 303是用來引用每一項(xiàng)的主鍵或引用,且對存儲在文件系統(tǒng)418中的每一項(xiàng)是唯一的。文件ID可以包括數(shù)字、字母文本、符號或者任何組合,只要每一文件ID唯一地標(biāo)識存儲在文件系統(tǒng)148中的單個(gè)項(xiàng)。
文件名305可以包括由文件系統(tǒng)418的用戶提供的關(guān)于項(xiàng)的短的描述性文件名。文件名305較佳地是用戶對每一文件的主要概念參考,且可以由用戶以描述性的格式指定,使得文件可以由用戶基于文件名來容易地識別。文件名305可以是有限長度的,例如8.3格式,最長256個(gè)字符,或是某些其它最大值。較佳地,對文件名彼此是否可以重復(fù),或者甚至是否要求文件名或已經(jīng)分配文件名沒有限制。即,多個(gè)文件可以各自被命名為“README.TXT”或“Read this first”,即使它們處于相同的目錄、文件夾或列表中,只要每一文件擁有唯一的文件ID 303。這不像要求每一文件在其父項(xiàng)的上下文中擁有唯一的名稱的先前的文件系統(tǒng)。
卷307、位置309和大小311可以用來從物理或邏輯存儲位置中檢索項(xiàng)。卷307可以指的是物理或邏輯存儲設(shè)備,例如,物理或邏輯硬盤驅(qū)動器、光盤驅(qū)動器、存儲介質(zhì)卡、固態(tài)存儲設(shè)備等。位置309可以指的是項(xiàng)在標(biāo)識的物理或邏輯卷上的實(shí)際起始位置,而大小311可以指的是其中項(xiàng)以標(biāo)識的位置開始被存儲在所標(biāo)識的卷上的空間量的定量測量。位置表301中可以包括另外的或替換的信息,只要包含的信息可用于從項(xiàng)的各自的標(biāo)識的存儲位置檢索每一存儲的項(xiàng)。
組織表401也被稱為ORG表,它存儲了存儲在文件系統(tǒng)418中的項(xiàng)之間的層次關(guān)系。如上簡要所述,為概念上在文件系統(tǒng)148中排列項(xiàng),ORG表401可以定義包含一棵或多棵樹的一個(gè)或多個(gè)有向無環(huán)圖(DAG)。ORG表401可以對每一關(guān)系包括父項(xiàng)403以及子項(xiàng)405。圖5示出了如由LOC表301的各部分定義的以及如由ORG表401定義的DAG 501的示例。DAG 501不是樹,因?yàn)轫?xiàng)I3的父項(xiàng)是“To Do List(要完成的事情列表)”和“Items For My Trip(關(guān)于我的旅行的項(xiàng))”(也被稱為“在兩者中”),項(xiàng)I4的父項(xiàng)是“Items For My Trip”和“Key Slide Decks(主要滑板)”。文件系統(tǒng)418中的每一項(xiàng)可以沒有父項(xiàng)、有一個(gè)父項(xiàng)或者有兩個(gè)或更多個(gè)父項(xiàng),只要組織結(jié)構(gòu)仍舊是DAG。
圖6示出了可以在文件系統(tǒng)148中使用的軟件模塊的框圖。文件系統(tǒng)148可以含有管理文件系統(tǒng)148的總體操作的文件系統(tǒng)管理器程序模塊601。管理器601可以使用此處所述的LOC表301和ORG表401來添加、更新、刪除和讀取/查詢存儲在數(shù)據(jù)存儲611中的項(xiàng),同時(shí)實(shí)施關(guān)于施加在DAG上的任何約束(例如,不允許環(huán))的規(guī)則。管理器601可以展示一個(gè)或多個(gè)應(yīng)用程序編程接口(API),通過這些API,諸如操作系統(tǒng)等更高級程序可以與文件系統(tǒng)148交互。API可以包括Add_Item API 603、Update_Item API 605、Delete_Item API 607以及Query_ItemAPI 609。
Add_Item API 603可以由操作系統(tǒng)或其它更高級程序或應(yīng)用程序在有新的項(xiàng)將被存儲在文件系統(tǒng)148中時(shí)調(diào)用。Add_Item API 603可以接受指向該新的項(xiàng)的當(dāng)前臨時(shí)存儲位置的指針,以及文件名和可任選的預(yù)期的存儲卷和/或父項(xiàng)ID作為輸入。Add_Item API 603可以任選地為新添加的項(xiàng)返回文件ID。
Update_Item API 605可以被調(diào)用來更新已經(jīng)存儲在文件系統(tǒng)148中的現(xiàn)有項(xiàng),且可以接受文件ID和從指向該項(xiàng)的更新版本的指針、ORG表401中的內(nèi)容的更新的關(guān)系和/或更新的文件名中選出的一個(gè)或多個(gè)可任選地包含的信息作為輸入。
Delete_Item API 607可以被調(diào)用以通過向Delete_Item API傳遞將要刪除的文件ID來從文件系統(tǒng)148中移除項(xiàng)。僅當(dāng)明確地調(diào)用Delete_Item API 607時(shí),才從文件系統(tǒng)148中刪除項(xiàng)。
Query_Item API 609可以在需要從文件系統(tǒng)中檢索項(xiàng)以供OS或應(yīng)用程序使用時(shí)調(diào)用。Query_Item接受文件ID作為輸入,并返回請求的項(xiàng)。以上列出的API代表了較佳地包含在本發(fā)明的說明性實(shí)施例中的API類型。文件系統(tǒng)148可以基于系統(tǒng)需求和設(shè)計(jì)包含另外的或替換的API。
因?yàn)槲募到y(tǒng)148允許每一項(xiàng)擁有零個(gè)或多個(gè)父項(xiàng),因此在文件系統(tǒng)的單個(gè)卷中可能存在多個(gè)獨(dú)立的數(shù)據(jù)結(jié)構(gòu)(即,多個(gè)DAG)。這不像一般將客戶機(jī)(用戶或應(yīng)用程序)限于對每個(gè)卷在單棵樹中存儲項(xiàng)的已知文件系統(tǒng)。這樣,如此處所述的,其中項(xiàng)被存儲在文件系統(tǒng)中的概念空間被稱為文件區(qū)域(FR)。文件區(qū)域指的是用于控制項(xiàng)的生存周期的組織區(qū)域的高級用戶概念。只要項(xiàng)仍舊在文件區(qū)域內(nèi),該項(xiàng)將不被刪除,而不考慮該項(xiàng)是否服從ORG表401中定義的任何父-子關(guān)系。
文件區(qū)域可以在概念上被看作其中可以放置項(xiàng)的盒子,而不考慮項(xiàng)是否在概念上是相關(guān)的。如果項(xiàng)被放置在文件區(qū)域中,那么項(xiàng)保持處于文件區(qū)域中,直到用戶刪除該項(xiàng)。盡管項(xiàng)是在文件區(qū)域中,但是項(xiàng)可以在文件區(qū)域內(nèi)以一個(gè)或多個(gè)DAG中的任何一個(gè)來組織,而對該項(xiàng)是否在文件區(qū)域中沒有影響,且對該項(xiàng)的生存周期沒有影響。即,該文件不會被刪除,直到用戶肯定地指示文件系統(tǒng)刪除該文件。文件區(qū)域可以包括任何任意定義的存儲區(qū)域,而不考慮所有包含的數(shù)據(jù)存儲是否彼此在同一計(jì)算機(jī)、網(wǎng)絡(luò)等中是物理上鄰近的,只要數(shù)據(jù)存儲是作為單個(gè)文件區(qū)域來管理以確保項(xiàng)的生存周期。例如,文件區(qū)域可以包括計(jì)算機(jī)上的所有內(nèi)部硬盤驅(qū)動器、計(jì)算機(jī)上的單個(gè)硬盤驅(qū)動器的一部分、單獨(dú)的或與本地存儲結(jié)合的網(wǎng)絡(luò)化存儲、或者任何其它定義的存儲空間。
圖7和8示出了含有三個(gè)獨(dú)立DAG 501、703和705的文件區(qū)域701。在DAG 501、703和703之間的唯一強(qiáng)制關(guān)系是它們位于同一文件區(qū)域內(nèi),它們之間不存在必須的概念關(guān)系。圖8示出了描述圖7中所示的DAG的ORG表801。圖7示出了文件區(qū)域701的概念視圖,而圖8示出了在文件區(qū)域701中使用的持有鏈接。文件區(qū)域701可以由用戶打開,此時(shí)文件系統(tǒng)148可以向用戶呈現(xiàn)由文件系統(tǒng)定義的文件區(qū)域中的所有“頂層”或“浮動”項(xiàng)。如此處所使用的,如果項(xiàng)不是來自對應(yīng)于該文件區(qū)域的ORG表中的其它項(xiàng)的任何持有鏈接的目標(biāo),則項(xiàng)被定義為“頂層”或者“浮動的”。這樣,在圖7中,項(xiàng)i1,i7,“ToDo List”和“Items For My Trip”被認(rèn)為是頂層項(xiàng),即浮動項(xiàng)。對終端用戶,列表i7是組織數(shù)據(jù)結(jié)構(gòu)形式的。基于多個(gè)父項(xiàng)的概念,項(xiàng)可以處于多個(gè)列表中,例如項(xiàng)i3。列表是持有其它項(xiàng)、已排序的或未排序的項(xiàng),且列表可以代替用戶在使用以往的文件系統(tǒng)時(shí)慣用的文件夾/目錄。列表也可以在其它列表中或持有其它列表。
文件系統(tǒng)148在用戶或應(yīng)用程序(共同被稱為客戶機(jī))何時(shí)想要從項(xiàng)的基礎(chǔ)組織結(jié)構(gòu)中移除該項(xiàng),以及客戶機(jī)何時(shí)想要將該項(xiàng)從文件系統(tǒng)中完全刪除之間進(jìn)行區(qū)分。圖9和10示出了在用戶或應(yīng)用程序從Key Slide Decks列表中移除項(xiàng)i5之后的文件區(qū)域801。即,管理器601基于通過Update_Item API 605的請求,移除ORG表1001中將Key Slide Decks(文件ID 000007)標(biāo)識為項(xiàng)i5(文件ID 000006)的父項(xiàng)的持有鏈接。項(xiàng)i5不再是多項(xiàng)組織結(jié)構(gòu)的一部分,因?yàn)殛P(guān)于項(xiàng)i5的所有持有鏈接都已經(jīng)從ORG表401中移除。然而,因?yàn)轫?xiàng)i5仍舊保持在文件區(qū)域801中,所以不從文件系統(tǒng)148或LOC表301中移除項(xiàng)i5。換言之,因?yàn)榭蛻魴C(jī)沒有請求刪除項(xiàng)i5,而是請求移除項(xiàng)i5,所以不從數(shù)據(jù)存儲611和LOC表301中刪除項(xiàng)i5。僅當(dāng)客戶機(jī)通過Delete_Item API肯定地選擇項(xiàng)i5并請求刪除操作之后,管理器601才會從數(shù)據(jù)存儲611和LOC表301中移除項(xiàng)i5(文件ID 000006)。
參考圖11和12,文件系統(tǒng)148可用于基于在例如目錄樹等先前已知的文件系統(tǒng)中使用的組織結(jié)構(gòu)來模擬用戶熟悉的組織結(jié)構(gòu)?;仡^參考LOC表301(圖3),具有文件ID 000301-000312的項(xiàng)表示對存儲在文件系統(tǒng)148中的列表的持有鏈接。每一未排序的列表表示在文件區(qū)域1201(圖12)和ORG表1101(圖11)中概念上表示的目錄樹1203中的目錄。目錄樹1203和先前已知的目錄樹的主要區(qū)別在于,“Shared(共享的)”子目錄可通過兩個(gè)“User Data(用戶數(shù)據(jù))”未排序列表中的任一個(gè)來訪問,這樣利用了文件系統(tǒng)148的多父項(xiàng)能力。以這種方式,用戶之間可以容易地共享目錄,同時(shí)仍舊向用戶提供他們熟悉的組織結(jié)構(gòu)。
根據(jù)本發(fā)明的說明性實(shí)施例,文件系統(tǒng)148向計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)的每一單獨(dú)用戶提供在其上實(shí)現(xiàn)文件系統(tǒng)148的私有工作空間,并向該計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)的所有用戶提供可用的公共共享工作空間。形成名字空間,使得它具有UserData下的Private(私有)和Shared文件區(qū)域。這允許用戶針對系統(tǒng)的查詢可以作為由User Data形成的項(xiàng)域的根,從而將在所有典型查詢中返回私有和共享的項(xiàng)。使用圖12的名字空間,當(dāng)用戶與文件系統(tǒng)中的項(xiàng)交互時(shí)(獲得新的相片或音樂、創(chuàng)建文檔等),用戶僅需在概念上考慮問題“這是私有的還是共享的?”并將項(xiàng)放置于合適的工作空間中。共享工作空間的所有用戶然后擁有對共享工作空間的公共可見性。另外,每個(gè)工作空間可以有共享的回收站,這樣如果一個(gè)用戶刪除了另一個(gè)用戶仍舊想要的項(xiàng),那么第二個(gè)用戶可以找回它。
對公共共享工作空間的情形不限于家庭用戶。在公司域上,知識工作者可以為同事建立共享的工作空間以在項(xiàng)目上協(xié)作。工作空間的靈活性可以向工作空間的每一用戶提供組織項(xiàng)、在工作空間內(nèi)查詢項(xiàng)以及提供對這些項(xiàng)的公共總體可見性的能力。
圖13示出了用于從項(xiàng)的底層組織結(jié)構(gòu)中移除項(xiàng)和/或從文件系統(tǒng)148中刪除項(xiàng)的方法。最初,在步驟1301中,客戶機(jī)選擇具有特定文件ID的項(xiàng)。下一步,在步驟1303中,客戶機(jī)指示該客戶機(jī)想要將該項(xiàng)從文件系統(tǒng)148中完全地刪除,或者該客戶機(jī)僅想從項(xiàng)的底層組織結(jié)構(gòu)中移除該項(xiàng)。如果客戶機(jī)在步驟1303中選擇“移除”,那么在步驟1305中,文件系統(tǒng)管理器從ORG表中移除其中該項(xiàng)的文件ID在子項(xiàng)欄中出現(xiàn)的任何條目,然后該方法結(jié)束。
如果客戶機(jī)在步驟1303中選擇“刪除”,那么在步驟1307中,對其中該項(xiàng)的文件ID出現(xiàn)在父項(xiàng)欄中的每一ORG表?xiàng)l目,文件系統(tǒng)管理器601在ORG表中添加其中子項(xiàng)是child而該項(xiàng)的父項(xiàng)是parent的條目(如果該條目不是已經(jīng)存在于ORG表中)??梢允褂玫膫未a如下對其中Xparent=file_ID(ITEM)的每一ORG表?xiàng)l目X對其中Ychild=file ID(ITEM)的每一ORG表?xiàng)l目Y如果ORG表不含有條目(Yparent,Xchild)那么添加ORG表?xiàng)l目(Yparent,Xchild)在相應(yīng)地更新ORG表之后,文件系統(tǒng)管理器在步驟1309中從ORG表中刪除引用該項(xiàng)的文件ID作為父項(xiàng)或者子項(xiàng)的任何條目。最后,在步驟1311中,文件系統(tǒng)管理器601從LOC表中刪除指示該項(xiàng)存儲在哪里的條目。文件系統(tǒng)管理器601還可以執(zhí)行安全擦除操作,并使用垃圾數(shù)據(jù)重寫存儲在該項(xiàng)位置上的數(shù)據(jù),使得不能執(zhí)行恢復(fù)刪除操作。
或者,文件系統(tǒng)管理器可以跳過步驟1307而在步驟1309中僅從ORG表中移除其中該項(xiàng)要么是父項(xiàng)要么是子項(xiàng)的任何條目。該替換實(shí)施方式的副作用是,被刪除的項(xiàng)的每一子項(xiàng)被從文件系統(tǒng)148的組織結(jié)構(gòu)中移除,除非該子項(xiàng)是以仍舊保持在文件系統(tǒng)148的組織結(jié)構(gòu)中的另一項(xiàng)作為父項(xiàng)的。
示出上述方法,使得所選擇的項(xiàng)和該項(xiàng)指向的任何項(xiàng)被從底層組織結(jié)構(gòu)中移除。然而,本領(lǐng)域的技術(shù)人員可以理解,可以使用其它方法,其中當(dāng)從組織結(jié)構(gòu)中移除項(xiàng)時(shí),不將該項(xiàng)的子項(xiàng)也從組織結(jié)構(gòu)中移除。移除方法是如何執(zhí)行的對于以下事實(shí)是次要的,即移除和刪除是兩個(gè)獨(dú)立的過程刪除過程從存儲中完全刪除項(xiàng),而移除過程從底層組織結(jié)構(gòu)中移除項(xiàng)而不影響該項(xiàng)的生存周期(即,不從存儲或文件系統(tǒng)中刪除該項(xiàng))。
傳統(tǒng)文件系統(tǒng)導(dǎo)航工具,例如由華盛頓州雷德蒙市的微軟公司推出的Windows EXPLORER系統(tǒng)導(dǎo)航工具,一般僅顯示文件系統(tǒng)組織結(jié)構(gòu)中的文件。這樣,如果客戶機(jī)從文件系統(tǒng)148的組織結(jié)構(gòu)中移除了項(xiàng),即該項(xiàng)不存在于ORG表中,那么該項(xiàng)將不會在文件系統(tǒng)導(dǎo)航顯示中出現(xiàn)。然而,使用本發(fā)明的各方面,客戶機(jī)可以向文件系統(tǒng)管理器601查詢所有浮動或頂層項(xiàng)(即,沒有父項(xiàng)的項(xiàng)),以找出在組織結(jié)構(gòu)內(nèi)不存在的任何項(xiàng)。
文件系統(tǒng)148可以基于由ORG表401定義的組織結(jié)構(gòu)提供附加的特征,諸如查詢域和安全性。即,除了定義組織結(jié)構(gòu)之外,ORG表中的持有鏈接也可以用于形成可查詢項(xiàng)域,或者也被稱為名字空間。客戶機(jī)可以查詢涉及到該項(xiàng)是父項(xiàng)的至少一條持有鏈接的任何項(xiàng)。例如,參考圖7,對“Items For My Trip”的查詢返回項(xiàng)i3、i4、i5和i8,以及Key Slide Decks。重復(fù)的項(xiàng)較佳地僅返回一次。例如,Key Slide Decks也是i4的父項(xiàng),它較佳地僅被返回一次。
文件系統(tǒng)148的組織結(jié)構(gòu)也可以用于傳播名字空間以供傳統(tǒng)應(yīng)用程序使用,也可以向新用戶提供概念上可識別的用戶界面來與文件系統(tǒng)148交互。例如,參考圖12,“U1”下的項(xiàng)“User Data”可由客戶機(jī)如“\Users\U1\User Data”來引用,這樣向終端用戶和傳統(tǒng)應(yīng)用程序提供概念上熟悉的界面。
由ORG 401定義的組織結(jié)構(gòu)也可以用于在文件系統(tǒng)148中傳播安全信息。即,安全表(未示出)可以提供關(guān)于項(xiàng)的安全信息。默認(rèn)地,如果用戶能夠訪問給定項(xiàng),該用戶默認(rèn)地不論直接或間接地也能夠訪問該給定項(xiàng)指向的所有其它項(xiàng)。
例如,項(xiàng)“U1”(圖12)的安全性可以指示只有用戶名=Ross的用戶才能訪問U1中的文件。如果沒有提供了父項(xiàng)為U1的項(xiàng)“App Data(應(yīng)用程序數(shù)據(jù))”和“User Data”的不同安全信息,那么也僅有Ross才能查看這些項(xiàng)。對“Private”(由父項(xiàng)為“U1”的“User Data”作為父親)和“Shared”,這也成立。項(xiàng)“U2”(圖12)的安全性可以指示只有用戶名=Jordan的用戶才能訪問U2中的文件。如果沒有提供父項(xiàng)為“U2”的項(xiàng)“Application Data”和“UserData”的不同安全信息,那么也僅有Jordan才能查看這些項(xiàng)。對“Private”(由父項(xiàng)為“U2”的“User Data”作為父親)和“Shared”,這也成立。盡管看上去項(xiàng)“Shared”具有不一致的安全信息,安全信息較佳地是加性的。這樣,項(xiàng)“Shared”將會接收到來自“U1”和“U2”的安全信息,以允許“僅Ross和Jordan”?;蛘撸僭O(shè)項(xiàng)“U1”具有等價(jià)于“僅Ross,而不是Tom”的許可。項(xiàng)“Shared”則將接收到等價(jià)于“僅Ross和Jordan,而不是Tom”的安全許可。
當(dāng)從ORG中移除項(xiàng),安全性停止傳播至被移除的項(xiàng)。例如,如果如圖9中所示,從“Key Slide Decks”中移除項(xiàng)i5,那么用戶不再擁有訪問i5的能力,除非該用戶被給予訪問i5的許可。然而,文件系統(tǒng)148可以指定默認(rèn)地客戶機(jī)可以訪問所有項(xiàng),除非該客戶機(jī)被明確地禁止訪問項(xiàng)。
因?yàn)榱斜硪残纬扇缟纤龅拿挚臻g,因此如果來自Windows XP或其它傳統(tǒng)機(jī)器(可能不配備如此處所述的文件區(qū)域、DAG或列表來工作)的用戶連接至文件系統(tǒng)148,用戶可以見到如可以被導(dǎo)航的文件夾可見的列表。類似地,當(dāng)用戶在列表(或者在傳統(tǒng)操作系統(tǒng)或者能夠使用文件系統(tǒng)148的系統(tǒng)上)的上下文內(nèi)的給定項(xiàng)上雙擊時(shí),那么文件系統(tǒng)向請求應(yīng)用程序提供由當(dāng)前列表形成的名字空間。這向應(yīng)用程序提供了必要的上下文。例如,如果用戶試圖通過列表“To Do List”來打開項(xiàng)i2,那么文件系統(tǒng)將向應(yīng)用程序返回通過“To doList”形成的路徑,即“\To do List\i2”。這樣,如果用戶選擇在應(yīng)用程序內(nèi)使用命令“File|Save As...”(例如,用于創(chuàng)建該項(xiàng)的新副本),那么應(yīng)用程序?qū)⒕哂姓_的上下文來提供給用戶。
盡管本發(fā)明是相對于包括實(shí)現(xiàn)本發(fā)明的當(dāng)前最佳的方式的特定示例來描述的,但本領(lǐng)域的技術(shù)人員可以理解,存在上述系統(tǒng)和技術(shù)的眾多變化和改變。這樣,本發(fā)明的精神和范圍應(yīng)該如所附權(quán)利要求所述來寬泛地解釋。
權(quán)利要求
1.一種實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的數(shù)據(jù)項(xiàng)和計(jì)算機(jī)可執(zhí)行指令的文件系統(tǒng),包括第一數(shù)據(jù)表,它存儲所述文件系統(tǒng)內(nèi)的至少第一、第二和第三數(shù)據(jù)項(xiàng)的項(xiàng)位置信息;以及第二數(shù)據(jù)表,它存儲所述第一和第二數(shù)據(jù)項(xiàng)的組織信息,但是不包括所述第三數(shù)據(jù)項(xiàng)的組織信息。
2.如權(quán)利要求1所述的文件系統(tǒng),其特征在于,所述第一表和所述第二表包括分開的表。
3.如權(quán)利要求1所述的文件系統(tǒng),其特征在于,所述第一表為每一數(shù)據(jù)項(xiàng)存儲唯一的項(xiàng)ID、項(xiàng)名和數(shù)據(jù)項(xiàng)的存儲位置。
4.如權(quán)利要求1所述的文件系統(tǒng),其特征在于,所述第二表中的每一條目定義了兩個(gè)存儲的數(shù)據(jù)項(xiàng)之間的關(guān)系。
5.如權(quán)利要求4所述的文件系統(tǒng),其特征在于,所述關(guān)系包括父-子關(guān)系。
6.如權(quán)利要求5所述的文件系統(tǒng),其特征在于,所述第二數(shù)據(jù)表的所有條目可以被共同表示為有向無環(huán)圖。
7.如權(quán)利要求4所述的文件系統(tǒng),其特征在于,所述第二表存儲將所述第一數(shù)據(jù)項(xiàng)標(biāo)識為所述第二數(shù)據(jù)項(xiàng)的父項(xiàng)的第一條目。
8.如權(quán)利要求7所述的文件系統(tǒng),其特征在于,所述第二項(xiàng)基于所述第一數(shù)據(jù)項(xiàng)和所述第二數(shù)據(jù)項(xiàng)之間的關(guān)系從所述第一數(shù)據(jù)項(xiàng)繼承安全許可。
9.一種實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令的文件系統(tǒng)管理器軟件模塊,所述文件系統(tǒng)管理器使用項(xiàng)位置數(shù)據(jù)和項(xiàng)組織數(shù)據(jù)來管理存儲在文件系統(tǒng)中的項(xiàng),所述文件系統(tǒng)管理器包括第一子例程,用于從所述文件系統(tǒng)中刪除第一指定的項(xiàng);以及第二子例程,用于從所述文件系統(tǒng)的組織結(jié)構(gòu)中移除第二指定的項(xiàng),而不從所述文件系統(tǒng)中刪除第二指定的項(xiàng)。
10.如權(quán)利要求9所述的文件系統(tǒng)管理器,其特征在于,項(xiàng)位置數(shù)據(jù)是存儲在第一表中的,且項(xiàng)組織數(shù)據(jù)是存儲在第二表中的。
11.如權(quán)利要求10所述的文件系統(tǒng)管理器,其特征在于,所述第一表是與所述第二表分開的。
12.如權(quán)利要求10所述的文件系統(tǒng)管理器,其特征在于,所述第一子例程包括從所述第一表和第二表中刪除對所述第一指定的項(xiàng)的任何引用。
13.如權(quán)利要求12所述的文件系統(tǒng)管理器,其特征在于,所述第一子例程還包括在刪除之前基于所述第二表中關(guān)于所述第一指定的項(xiàng)的條目向所述第二表添加新的條目。
14.如權(quán)利要求10所述的文件系統(tǒng)管理器,其特征在于,所述第二子例程包括從所述第二表中刪除對所述第二指定的項(xiàng)的任何引用,而不從所述第一表中刪除對所述第二指定的項(xiàng)的任何引用。
15.如權(quán)利要求9所述的文件系統(tǒng)管理器,其特征在于,所述第一子例程是可以通過第一應(yīng)用程序編程接口(API)來調(diào)用的。
16.如權(quán)利要求15所述的文件系統(tǒng)管理器,其特征在于,所述第二子例程是可以通過不同于所述第一API的第二API來調(diào)用的。
17.如權(quán)利要求9所述的文件系統(tǒng)管理器,其特征在于,還包括基于所述組織數(shù)據(jù)的安全數(shù)據(jù)。
18.如權(quán)利要求9所述的文件系統(tǒng)管理器,其特征在于,所述文件系統(tǒng)管理器基于所述組織數(shù)據(jù)為每一項(xiàng)構(gòu)造名字空間。
19.一種用于管理存儲在文件系統(tǒng)中的項(xiàng)的方法,所述方法包括以下步驟接收從所述文件系統(tǒng)中刪除第一項(xiàng)的第一請求;響應(yīng)于第一請求,從與所述文件系統(tǒng)相關(guān)聯(lián)的位置信息以及從與所述文件系統(tǒng)相關(guān)聯(lián)的組織信息中刪除對所述第一項(xiàng)的引用;接收從所述文件系統(tǒng)中移除第二項(xiàng)的第二請求;以及響應(yīng)于第二請求,從與所述文件系統(tǒng)相關(guān)聯(lián)的組織信息中刪除對所述第二項(xiàng)的引用,并且保持與所述文件系統(tǒng)相關(guān)聯(lián)的位置信息中對所述第二項(xiàng)的引用不變。
20.一種用于存儲數(shù)據(jù)項(xiàng)的文件系統(tǒng),所述文件系統(tǒng)被實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,其中,每一數(shù)據(jù)項(xiàng)的生存周期相對于存儲在所述文件系統(tǒng)中的其它數(shù)據(jù)項(xiàng)是獨(dú)立于每一數(shù)據(jù)項(xiàng)的組織的。
21.一種用于存儲數(shù)據(jù)項(xiàng)的文件系統(tǒng),所述文件系統(tǒng)被實(shí)施化為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,其中,所述文件系統(tǒng)確定每一數(shù)據(jù)項(xiàng)獨(dú)立于該數(shù)據(jù)項(xiàng)與存儲在所述文件系統(tǒng)中的其它數(shù)據(jù)項(xiàng)的關(guān)系的生存周期。
22.一種用于存儲數(shù)據(jù)項(xiàng)的文件系統(tǒng),所述文件系統(tǒng)被實(shí)施為存儲在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,其中,所述文件系統(tǒng)存儲第一數(shù)據(jù)項(xiàng),所述第一數(shù)據(jù)項(xiàng)對存儲在所述文件系統(tǒng)中的其它數(shù)據(jù)項(xiàng)沒有父-子關(guān)系。
全文摘要
本發(fā)明描述了不將項(xiàng)的生存周期與該項(xiàng)在文件系統(tǒng)組織結(jié)構(gòu)中的內(nèi)容合并的文件系統(tǒng)。另外,該文件系統(tǒng)的組織結(jié)構(gòu)不限于目錄樹,而是可以使用任何有向無環(huán)圖(DAG)。一旦存儲到文件系統(tǒng)中,項(xiàng)將被維護(hù),直到由文件系統(tǒng)的客戶機(jī)肯定地刪除,而不論該項(xiàng)是否是DAG的一部分。項(xiàng)可以被放置在文件區(qū)域中,文件區(qū)域是客戶機(jī)用來控制項(xiàng)生存周期以及將項(xiàng)組織進(jìn)用戶選擇的任何DAG結(jié)構(gòu)的概念上的工作空間。項(xiàng)可以并發(fā)地存儲在多個(gè)DAG中,且每一文件區(qū)域可以含有一個(gè)或多個(gè)獨(dú)立的DAG。項(xiàng)在DAG中的位置也可以用于管理諸如名字空間、安全性、保密性和讀/寫屬性等文件屬性。
文檔編號G06F17/30GK1773509SQ20051012481
公開日2006年5月17日 申請日期2005年11月14日 優(yōu)先權(quán)日2004年11月12日
發(fā)明者A·G·拜比, A·K·諾里, B·S·拉曼, T·P·麥基, W·R·史密斯 申請人:微軟公司