專利名稱:改進(jìn)程序發(fā)送時間的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在硬盤驅(qū)動器上存儲數(shù)據(jù),特別涉及在程序啟動和其它磁盤增強(qiáng)操作時以減少從磁盤讀數(shù)據(jù)所需時間的方式存儲數(shù)據(jù)。
在用于存儲計算機(jī)數(shù)據(jù)的磁盤驅(qū)動器的上下文中,術(shù)語“碎片”指的是文件在磁盤分區(qū)或邏輯盤上的非鄰近排列。碎片文件可以指在邏輯盤的不同區(qū)域上散布的相同磁盤文件部分,或者指整個文件的散布,從而使文件之間存在無用空間。當(dāng)從邏輯盤刪除舊文件和添加新文件時,常常出現(xiàn)碎片。當(dāng)刪除文件時,以前使用的空間就成為可用空間,計算機(jī)操作系統(tǒng)在邏輯盤的該空區(qū)域內(nèi)寫入新的文件。但是,如果新文件太大而在該空區(qū)域內(nèi)寫不下,操作系統(tǒng)可通過在幾個空區(qū)域內(nèi)存儲該文件的部分而將該文件變成碎片,這些空區(qū)域散布在整個邏輯盤上。同樣,如果產(chǎn)生的文件太大,超過了與存儲該文件的空間相鄰的鄰近自由空間的大小,則產(chǎn)生的文件便變成碎片。操作系統(tǒng)保持文件每部分存儲于何處的記錄,因而當(dāng)從該邏輯盤上讀取該文件時,可以以正確的順序恢復(fù)該文件。
在從開始至結(jié)束“線性”讀取文件的情況下,碎片降低了磁盤的存取速度并降低了整個磁盤操作的特性。提供應(yīng)用程序以在形成碎片的磁盤上整理碎片。除重新對文件排序以便將每個文件存儲在磁盤的鄰近部分上外,這些程序通常對文件排序使得這些文件都存儲在邏輯盤的開始端。這樣在磁盤末端的形成了合并空間,并認(rèn)為這是有益的,因?yàn)椴僮飨到y(tǒng)不需要為了尋找存儲新文件的足夠空間而進(jìn)行長時間搜索,新文件更可能存儲在鄰近簇(cluster)中(即非碎片的),而不是散布在整個文件的大量較小的簇組中。
碎片整理是有好處的,它提高了從開始端至末端線性讀取文件的特性。但是,當(dāng)執(zhí)行一些操作系統(tǒng)時,計算機(jī)以一些可預(yù)測的序列從幾個不同文件恢復(fù)數(shù)據(jù)塊,常常只從每個文件讀取幾個塊。例如,發(fā)送字處理程序可以導(dǎo)致裝入可主執(zhí)行的動態(tài)連接庫的第一部分、可主執(zhí)行的優(yōu)先文件的第二部分等。當(dāng)選擇一些程序命令(如“打開文件”)時,會發(fā)生類似的磁盤操作。這些類型的磁盤加強(qiáng)操作可以導(dǎo)致大量磁盤頭從一個物理簇移動到另一個物理簇。因?yàn)楝F(xiàn)代微處理器與磁盤驅(qū)動器的平均搜索時間相比是極快的,為了發(fā)送典型程序必需從磁盤上讀取許多不同文件,發(fā)送程序花費(fèi)了大量時間,使微處理器處于等待磁盤頭從一個簇移動到另一個簇的空閑狀態(tài)。
根據(jù)這些觀察,當(dāng)執(zhí)行磁盤加強(qiáng)操作(如發(fā)送程序或發(fā)送與一些命令相關(guān)的代碼),以便以在操作中的存取順序來對在邏輯盤分區(qū)(以及物理磁盤)上的磁盤加強(qiáng)操作中使用的數(shù)據(jù)塊排序。這會導(dǎo)致程序文件設(shè)計成“碎片”,并通過減少從邏輯盤裝入所需數(shù)據(jù)的無序磁盤存取的數(shù)量而提高特性。
為了優(yōu)化應(yīng)用程序發(fā)送過程,現(xiàn)有技術(shù)公開了該類型應(yīng)用文件的重構(gòu)和碎片整理。例如,IBM技術(shù)公開公報中順序號為TDB01960112的文件公開了一種配置文件(profile)引導(dǎo)文件系統(tǒng)的內(nèi)容。為取代根據(jù)關(guān)于文件參考模式的靜態(tài)假定而排序的文件,當(dāng)程序運(yùn)行并時,系統(tǒng)動態(tài)地確定文件存取模式,并分配磁盤空間以最大化程序運(yùn)行的每個硬件/軟件結(jié)構(gòu)的文件系統(tǒng)特性。為了實(shí)現(xiàn)上述功能,當(dāng)啟動程序時,監(jiān)視文件系統(tǒng)活動,并使存取的磁盤扇區(qū)記錄包含配置文件數(shù)據(jù)的文件。以預(yù)定的時間間隔,分析配置文件數(shù)據(jù)以便確定是否可能有更優(yōu)文件分配結(jié)構(gòu)。如果是,則操作者可以運(yùn)行重構(gòu)程序,該重構(gòu)程序根據(jù)配置文件數(shù)據(jù)指示的磁盤存取模式給文件分配磁盤空間。程序會映射出從配置文件數(shù)據(jù)到其相關(guān)文件的磁盤塊存取地址,并在磁盤上將頻繁存取的塊物理的放置在一起。所獲得的磁盤塊分配結(jié)構(gòu)優(yōu)化特定計算機(jī)配置的公用存取模式。
微軟公司還宣布“WINDOWS 98”操作系統(tǒng)具有這樣的特性,即使其在應(yīng)用程序發(fā)送和重新排序存儲文件中監(jiān)視磁盤活動,從而以順序形式對在啟動中使用的數(shù)據(jù)塊排序。
盡管現(xiàn)有技術(shù)公開了優(yōu)化用于程序啟動的文件的方法,但是這些技術(shù)使在程序安裝在計算機(jī)上并隨后由用戶發(fā)送后執(zhí)行的。該過程具有幾個缺點(diǎn)。例如,直到程序安裝和發(fā)送以及已經(jīng)監(jiān)視到啟動過程后才能進(jìn)行優(yōu)化。在程序啟動過程中監(jiān)視磁盤存取過程會大大降低啟動速度。在監(jiān)視了啟動過程后,計算機(jī)必須運(yùn)行費(fèi)時優(yōu)化例行程序,該程序防止用戶在優(yōu)化過程中使用計算機(jī),或需要用戶離開計算機(jī),以便運(yùn)行幾小時這樣的例行程序。最后,該過程只適于監(jiān)視和優(yōu)化啟動過程,而不適于其它磁盤加強(qiáng)操作,如裝入與一些命令(如“打開”)有關(guān)的代碼。
在操作系統(tǒng)軟件上實(shí)現(xiàn)優(yōu)化特性,用戶為利用這些優(yōu)化特性本身,必須獲得和安裝操作系統(tǒng)合適版本的拷貝。在很多情況下,用戶不愿在采用新性能的操作系統(tǒng)軟件升級上花費(fèi)錢或時間,或者是在公司中用戶自己不能作決定。因此使大量用戶使用老版本操作系統(tǒng),而不能獲得在應(yīng)用程序啟動上的改進(jìn)特性。
因此,本領(lǐng)域需要改進(jìn)的系統(tǒng)和方法,目的是以在應(yīng)用或命令發(fā)送時進(jìn)行存取的順序在邏輯盤上存儲數(shù)據(jù)。該方法應(yīng)使其在安裝在邏輯盤上后不需監(jiān)視應(yīng)用程序文件,并且也不要求用戶申請和安裝新版本的操作系統(tǒng)軟件。
本發(fā)明滿足上述需要,通過對程序安裝或以后的重構(gòu),使發(fā)送相關(guān)的部分以盡可能接近在典型發(fā)送中讀取的順序存儲,該部分是在發(fā)送程序或執(zhí)行命令時讀取的。在安裝中或安裝后使用的該軟件包含必要的程序文件和裝入順序表(1oad sequence list),其識別讀文件的與發(fā)送相關(guān)部分的順序。在安裝和以后的重排序中,文件的發(fā)送相關(guān)部分以裝入順序表中指示的順序排序,發(fā)送相關(guān)部分最好存儲在邏輯盤上的鄰近簇中。剩下的文件安裝在磁盤上的其它自由空間中。當(dāng)用戶運(yùn)行程序時,由于計算機(jī)能以正確順序從邏輯盤上的鄰近簇中讀取啟動文件,因而會減少啟動時間,由此縮短由于從非鄰近簇讀取數(shù)據(jù)而造成的延遲。
一般說來,本發(fā)明提供計算機(jī)可讀取安裝媒體,并以加速啟動或發(fā)送程序或其它磁盤加強(qiáng)操作過程的方式來安裝程序或在以后對程序重新排序。安裝媒體包含具有發(fā)送部分的多個文件和裝入順序表。裝入順序表指示要在邏輯盤上排序的文件發(fā)送相關(guān)部分的順序。該安裝媒體還包含計算機(jī)可執(zhí)行的指令,用于執(zhí)行安裝或重新排序步驟。安裝或重新排序包含識別在邏輯盤上的至少一組鄰近自由簇。多個文件的發(fā)送相關(guān)部分安裝在一組鄰近自由簇中,使發(fā)送相關(guān)部分以裝入順序表指示的順序存儲在硬盤驅(qū)動器上。
另一方面,本發(fā)明提供一種從安裝盤向硬盤驅(qū)動器安裝程序代碼的方法。該方法包含從存儲在安裝盤上的裝入順序表讀取項(xiàng)(entry)的步驟。每個項(xiàng)識別與程序代碼有關(guān)的文件部分。對于從裝入順序表讀取的每個項(xiàng),從安裝盤上讀取由項(xiàng)識別的文件部分,并將其寫到硬盤驅(qū)動器的一組鄰近自由簇上。該文件部分以對應(yīng)裝入順序表中的項(xiàng)的順序存儲在硬盤驅(qū)動器上。
另一方面,本發(fā)明提供一種產(chǎn)生程序代碼并將其從安裝盤安裝在邏輯盤上的方法。該方法包含產(chǎn)生包含發(fā)送相關(guān)部分的文件和確定在程序發(fā)送或其它磁盤加強(qiáng)操作中對發(fā)送相關(guān)部分的讀取順序。產(chǎn)生裝入順序表以反映在程序發(fā)送中讀取發(fā)送相關(guān)部分的順序。該文件、裝入順序表和安裝程序存儲在安裝盤中。該安裝程序包含計算機(jī)可執(zhí)行指令,用于識別邏輯盤上的至少一組鄰近自由簇,并安裝在一組或多組鄰近自由簇中的多個文件的發(fā)送相關(guān)部分。發(fā)送相關(guān)部分以裝入順序表中指示的順序存儲在邏輯盤上另一方面,本發(fā)明提供一種安裝和優(yōu)化邏輯盤上的程序代碼的方法。該方法包含步驟產(chǎn)生包含與磁盤加強(qiáng)操作有關(guān)的部分的多個文件和確定在磁盤加強(qiáng)操作中讀取磁盤加強(qiáng)部分的順序。產(chǎn)生裝入順序表以指示在磁盤加強(qiáng)操作中讀取磁盤加強(qiáng)部分的順序。多個文件和裝入順序表安裝在邏輯盤上。在安裝后,通過識別邏輯盤上至少一組鄰近自由簇并對自由簇中的磁盤加強(qiáng)部分重新排序而優(yōu)化磁盤加強(qiáng)部分。磁盤加強(qiáng)部分以裝入順序表中指示的順序存儲在邏輯盤上。
根據(jù)對下述實(shí)施例的詳細(xì)說明和參考附圖與權(quán)利要求,可以更清楚理解本發(fā)明的各個方面。
圖1是為本發(fā)明一個實(shí)施例提供操作環(huán)境的個人計算機(jī)的方框圖;圖2是流程圖,顯示了獲得在邏輯盤上安裝文件并以在程序發(fā)送中裝入的順序來存儲文件的安裝盤的舉例性方法;圖3是流程圖,顯示了從安裝盤向邏輯盤安裝文件并以在程序發(fā)送中裝入的順序來存儲文件的舉例性方法;圖4是顯示舉例性裝入順序表的內(nèi)容的表格;圖5是顯示啟動相關(guān)的三個文件的部分以及這些部分裝入順序的表格;圖6是顯示將文件部分寫到邏輯盤上的自由簇的舉例性方法的表格;圖7是顯示將文件部分寫到邏輯盤上的自由簇的舉例性方法的表格;圖8是流程圖,顯示另一種在將文件安裝到邏輯驅(qū)動器上后的優(yōu)化文件部分的方法。
本發(fā)明目的是提供用于在硬盤驅(qū)動器上安裝程序的改進(jìn)的系統(tǒng)和方法。在一個舉例性實(shí)施例中,應(yīng)用程序相關(guān)文件安裝在邏輯盤分區(qū)上(即物理磁盤驅(qū)動器的邏輯子集),使發(fā)送相關(guān)部分以在發(fā)送中讀取的順序存儲,該發(fā)送相關(guān)部分是在發(fā)送程序或選擇命令時讀取的。
安裝軟件包含必要文件和裝入順序表,裝入順序表識別在發(fā)送中裝入的文件的發(fā)送相關(guān)部分的順序。在安裝過程中,在發(fā)送中使用的文件部分以裝入順序表中指示的順序安裝,發(fā)送相關(guān)部分最好存儲在邏輯盤上的鄰近簇中。剩下的文件安裝在邏輯盤上的其它自由空間中。另外,可以以普通方式安裝程序文件,隨后以裝入順序表所指示的順序?qū)Πl(fā)送相關(guān)部分重新排序。當(dāng)用戶發(fā)送程序或選擇命令時,由于計算機(jī)能以正確順序從邏輯盤上的鄰近簇中讀取發(fā)送相關(guān)部分文件,因而縮短了發(fā)送時間,由此減少了由于從非鄰近簇讀取數(shù)據(jù)而延遲的時間。
下面參照
本發(fā)明的的各方面和舉例性的操作環(huán)境,其中相同標(biāo)號表示各圖中相同的部分。
圖1和下述說明試圖提供對實(shí)施本發(fā)明的合適計算機(jī)環(huán)境的簡潔而概括的說明。在安裝程序的概括上下文中描述的本發(fā)明用于在與個人計算機(jī)相連的硬盤驅(qū)動器上安裝應(yīng)用程序,本領(lǐng)域的技術(shù)人員會知道本發(fā)明還可結(jié)合各種程序模塊來實(shí)現(xiàn),這些程序模塊包含應(yīng)用程序模塊、操作系統(tǒng)模塊、實(shí)用程序模塊和類似的程序模塊。一般地,程序模塊包含例行程序、程序、元件和數(shù)據(jù)結(jié)構(gòu)等,用于完成特定任務(wù)或處理特定數(shù)據(jù)類型。此外,本領(lǐng)域的技術(shù)人員能理解,本發(fā)明可以和其它計算機(jī)系統(tǒng)配置一起使用,這些計算機(jī)系統(tǒng)配置包含手持式裝置、多處理器系統(tǒng)、基于微處理器或可編程的用戶電子設(shè)備、微型計算機(jī)、主計算機(jī)和類似裝置。本發(fā)明還可用于散布式計算環(huán)境,通過由通訊網(wǎng)絡(luò)連接的遠(yuǎn)程處理器來完成任務(wù)。在散布式計算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程內(nèi)存存儲器上。
參照圖1,實(shí)現(xiàn)本發(fā)明的系統(tǒng)實(shí)施例包含普通個人計算機(jī)20,個人計算機(jī)20包含處理器21、系統(tǒng)內(nèi)存22和將系統(tǒng)內(nèi)存與處理器21相連的系統(tǒng)總線23。系統(tǒng)內(nèi)存22包含只讀存儲器(ROM)24和隨機(jī)存取存儲器(RAM)25?;据斎?輸出系統(tǒng)26(BIOS)存儲在ROM24內(nèi),BIOS 26包含幫助在個人計算機(jī)20內(nèi)的各組成之間傳送信息的基本例行程序,如在啟動中。個人計算機(jī)20還包含硬盤驅(qū)動器27、可換式磁盤驅(qū)動器28和光盤驅(qū)動器30,可換式磁盤驅(qū)動器28可在可換式磁盤29上讀寫,光盤驅(qū)動器30用于讀CD-ROM盤31或在另一光媒體上讀寫。硬盤驅(qū)動器27、可換磁盤式驅(qū)動器28和光盤驅(qū)動器30分別通過硬盤驅(qū)動器接口32、可換磁盤式驅(qū)動器接口33和光盤驅(qū)動器接口34連接到系統(tǒng)總線33上。驅(qū)動器和其相關(guān)的計算機(jī)可讀媒體向個人計算機(jī)20提供非易失性存儲器。本領(lǐng)域的技術(shù)人員會理解單硬盤驅(qū)動器27包含一個或多個“分區(qū)”或“邏輯盤”,它們是物理驅(qū)動器的邏輯子集。盡管上述的計算機(jī)可讀的媒體指的是硬盤驅(qū)動器、可換式磁盤和CD-ROM盤,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解還可在實(shí)施例操作系統(tǒng)中采用其它類型的計算機(jī)可讀媒體,如磁卡、快速內(nèi)存卡、數(shù)字視頻盤、伯努里盒式盤和類似的部件。
可將多個程序模塊存儲在驅(qū)動器上和RAM 25中,包含操作系統(tǒng)35(如微軟公司的“WINDOWS 95”操作系統(tǒng))、一組應(yīng)用程序36(如“MICROSOFTOFFICE”程序組)、一個或多個其它應(yīng)用程序37和數(shù)據(jù)38。操作系統(tǒng)軟件和應(yīng)用程序一般從CD-ROM 31或軟盤29安裝在硬盤驅(qū)動器27上。多數(shù)情況下,安裝過程由存儲在CD-ROM或軟盤上的安裝程序以及操作系統(tǒng)或應(yīng)用程序相關(guān)文件來控制。
用戶可通過鍵盤40和指點(diǎn)器如鼠標(biāo)42向個人計算機(jī)20輸入命令或信息。其它輸入裝置(未示)可包含麥克風(fēng)、控制桿、游戲墊、衛(wèi)星盤、掃描儀或類似裝置。這些和其它輸入裝置通常通過串行端口接口46與處理器21連接,串行端口接口46與系統(tǒng)總線連接,但是也可通過其它接口連接,如游戲端口或通用串行總線(UBS)。還可通過接口如視頻適配器48將監(jiān)視器47或其它類型顯示器連接于系統(tǒng)總線23。除監(jiān)視器外,個人計算機(jī)一般包含其它外圍輸出裝置(未示),如揚(yáng)聲器或打印機(jī)。
個人計算機(jī)20可在采用邏輯連接到一個或多個遠(yuǎn)程計算機(jī)如遠(yuǎn)程計算機(jī)9的網(wǎng)絡(luò)環(huán)境中工作。遠(yuǎn)程計算機(jī)49可以是郵件服務(wù)器(包含一個或多個消息存儲)、文件服務(wù)器(包含一個或多個文件存儲)、路由器、對等器或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),一般包含許多或所有上述與個人計算機(jī)20相關(guān)的部件,盡管圖1中只給出了內(nèi)存存儲器50。圖1所示的邏輯連接包含局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。該網(wǎng)絡(luò)環(huán)境廣泛使用在辦公室、企事業(yè)范圍的計算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)絡(luò)和互聯(lián)網(wǎng)中。
當(dāng)使用在LAN網(wǎng)絡(luò)環(huán)境中,個人計算機(jī)20通過網(wǎng)絡(luò)接口53連接到LAN 51上。當(dāng)使用在WAN網(wǎng)絡(luò)環(huán)境中,個人計算機(jī)20一般包含調(diào)制解調(diào)器54或其它在WAN 52如互聯(lián)網(wǎng)上建立通訊的裝置。調(diào)制解調(diào)器54可以是內(nèi)置的或外置的調(diào)制解調(diào)器,可通過串行端口接口46連接到系統(tǒng)總線23上。在網(wǎng)絡(luò)環(huán)境中,顯示的關(guān)于個人計算機(jī)20的程序模塊或其組成部分可以存儲在遠(yuǎn)程內(nèi)存存儲器上。應(yīng)理解圖示的網(wǎng)絡(luò)連接只是舉例性的,還可使用在計算機(jī)之間建立通信連接的其它裝置。
普通磁盤驅(qū)動器格式化在說明本發(fā)明的特征之前,說明數(shù)據(jù)在普通硬盤存儲器中存儲的方式是很有幫助的。
硬盤存儲器允許計算機(jī)改變存儲于其中的數(shù)據(jù),因而可以在磁盤上讀寫數(shù)據(jù)。物理磁盤驅(qū)動器包含一個或多個分區(qū)或邏輯盤,作為物理驅(qū)動器的邏輯子集。數(shù)據(jù)通常以獨(dú)立文件存儲在邏輯盤上,對每個文件進(jìn)行單獨(dú)存取。每個文件存儲在磁盤上的位置被識別和存儲在數(shù)據(jù)結(jié)構(gòu)中,使計算機(jī)快速存取邏輯盤上的任何文件。
當(dāng)對使用的硬盤驅(qū)動器格式化時,硬盤上的存儲區(qū)域被劃分成同心圓稱為磁道。磁盤上磁道的數(shù)量取決于磁盤的大小。磁盤上的每個磁道被分成相同數(shù)量的扇區(qū)。一般地,扇區(qū)呈片排列,使得在磁盤外緣的扇區(qū)占用的線空間多于靠近磁盤內(nèi)邊緣的扇區(qū)。但是,每個扇區(qū)用于存儲相同量的數(shù)據(jù),一般為512字節(jié)。
每個磁道上的扇區(qū)組成簇。扇區(qū)組成簇是由操作系統(tǒng)完成的,因此不是物理劃分。磁盤上的每個磁道包含相同數(shù)量的扇區(qū)。根據(jù)磁盤的大小,簇通常包含1至64個扇區(qū),每個扇區(qū)一般存儲512字節(jié)的數(shù)據(jù)。每個簇是獨(dú)立存取的。
計算機(jī)的操作系統(tǒng)在邏輯盤上的一個或多個簇中存儲每個文件。大文件需要幾個簇以存儲與文件相關(guān)的所有數(shù)據(jù),很小的文件可以存儲在單個簇中。由于簇不存儲來自一個以上文件的數(shù)據(jù),因此如果文件不包含足夠填充簇的所有扇區(qū)的數(shù)據(jù),則一個或多個簇的扇區(qū)會是空的。因此,如果存儲在每個簇中的數(shù)據(jù)量相對于多數(shù)文件較小的話,則最有效使用磁盤空間。
硬磁盤驅(qū)動器一般包含層疊的幾個硬鋁磁盤,其上覆蓋有磁性材料。每個盤的上表面和下表面可存儲數(shù)據(jù)。通過磁盤表面的磁化區(qū)域而在每個磁盤上對數(shù)據(jù)編碼。通過讀/寫頭恢復(fù)數(shù)據(jù)或?qū)?shù)據(jù)添加到磁盤上。磁盤驅(qū)動器的每個磁頭包含連接到旋轉(zhuǎn)臂上的小電磁鐵,該電磁鐵非常接近磁盤表面。向每張盤的每個記錄表面提供一個磁頭。該臂繞軸旋轉(zhuǎn)并在磁盤表面上的徑向路徑上來回移動。磁頭驅(qū)動器使臂旋轉(zhuǎn)以便控制磁頭的移動。當(dāng)在磁盤上寫數(shù)據(jù)時,磁頭位于磁盤上要寫入數(shù)據(jù)的合適區(qū)域上。加在磁頭的電流產(chǎn)生磁場,磁化磁頭附近的小磁盤區(qū)域。小的磁化區(qū)域代表數(shù)字比特。同樣地,當(dāng)在磁盤驅(qū)動器上讀數(shù)據(jù)時,磁頭位于磁盤上的合適區(qū)域上,在磁頭上感應(yīng)出電流。磁頭上感應(yīng)出的電流然后解碼成數(shù)字?jǐn)?shù)據(jù)。
磁盤驅(qū)動器的盤與單個軸連接。該軸與電機(jī)相連,以一致的恒速旋轉(zhuǎn)磁盤。盡管磁盤的扇區(qū)可占用不同量的空間,但是存儲在每個扇區(qū)的數(shù)據(jù)量是相同的。這使磁盤以恒速旋轉(zhuǎn),從而取出相同量的數(shù)據(jù),而與磁盤上扇區(qū)的所在位置無關(guān)。
當(dāng)磁盤上的新簇被存取時,在磁頭實(shí)際開始讀或?qū)憯?shù)據(jù)之前,必須進(jìn)行兩個機(jī)械操作。第一,磁頭從當(dāng)前位置徑向移動到包含目標(biāo)簇的磁道位置。“尋道時間”指臂支撐磁頭以克服慣性和摩擦作用和進(jìn)行移動所需時間。“尋道時間”還包含“固定時間”,指的是磁頭在移動后固定在靜止位置所需時間。第二,磁頭必須等待包含所需數(shù)據(jù)的簇旋轉(zhuǎn)到磁頭下面。該時間指的是“旋轉(zhuǎn)等待時間”。由于磁盤以恒速旋轉(zhuǎn),因此磁頭必須等待需要簇經(jīng)過磁頭下面的最長時間是需要盤完成一個循環(huán)的時間。因此,主要由于到達(dá)磁盤正確區(qū)域的機(jī)械動作需要,使新簇的每次存取產(chǎn)生固有延遲。
操作系統(tǒng)必須保持存儲在邏輯盤上的文件位置記錄。有幾種數(shù)據(jù)結(jié)構(gòu)用于文件存取。邏輯盤上的每個扇區(qū)具有基于邏輯盤上扇區(qū)位置的唯一識別數(shù)字。同樣的,每個簇具有唯一簇數(shù)字。識別數(shù)字是這樣分配的,即對相臨扇區(qū)和簇連續(xù)編數(shù)字。用于確定邏輯盤的哪部分用于文件數(shù)據(jù)存儲的基本數(shù)據(jù)結(jié)構(gòu)是文件分配表(FAT)。其它文件系統(tǒng)包含高性能文件系統(tǒng)(HPFS)和NT文件系統(tǒng)(NTFS)。盡管在FAT文件系統(tǒng)中說明了本發(fā)明,本發(fā)明還應(yīng)用于其它類型的文件系統(tǒng)。
在FAT文件系統(tǒng)中,F(xiàn)AT存儲在靠近邏輯盤或分區(qū)的開始端,并包含邏輯盤上每個簇的項(xiàng)。簇通過其簇數(shù)連續(xù)列在FAT中。每個簇的FAT項(xiàng)包含文件下一部分的簇的數(shù)字。包含文件最后數(shù)據(jù)的簇的FAT項(xiàng)包含文件的末端(EOF)項(xiàng)。因此,存儲在邏輯盤上的每個文件在FAT中,表示為一個或多個簇鏈。FAT指示是否每個簇已分配給了一個文件,但是不直接告訴計算機(jī)的操作系統(tǒng)所給的簇屬于哪個文件。
如上所述,如果每個簇很小(如4KB),則可最有效地使用磁盤空間。但是,磁盤分區(qū)的FAT大小決定可以包含在邏輯盤上的簇的最大數(shù)字,從而決定簇的大小。例如,在一個FAT 16文件系統(tǒng)中,F(xiàn)AT使用16-bit數(shù)字表示每個簇。這就決定了磁盤上的簇最大數(shù)字為65,536(即,64K)。數(shù)字通過FAT的大小劃分磁盤的大小,以確定每個簇的最小量,如表Ⅰ所示
磁盤大小最小簇大小(比特)達(dá)到32MB512>32MB至62MB1K>64MB至128MB 2K>128MB至256MB 4K>256MB至512MB 8K>512MB至1GB 16K>1GB至2GB 32K表ⅠFAT 32文件系統(tǒng)采用28-bit數(shù)字表示每個簇,并能保持228個簇的磁道,在非常大的邏輯盤上允許有4K字節(jié)或更小的簇。在“WINDOWS 95”操作系統(tǒng)以及后來的“WINDOWS”操作系統(tǒng)如“WINDOWS 98”操作系統(tǒng)的OSR2(OEM服務(wù)版本2)版本中提供FAT 32。
稱為目錄的數(shù)據(jù)結(jié)構(gòu)包含存儲在邏輯盤上的所有文件的列表和子目錄(有一些作為正規(guī)文件與目錄比特置位(set)存儲)。根目錄不同于子目錄,根目錄沒有父目錄,并且一般先于用于存儲文件數(shù)據(jù)的扇區(qū)存儲在接近邏輯盤的開始端。該目錄具有包含簇數(shù)字的每個文件的項(xiàng),其中存儲文件的第一部分。通過存儲每個文件的開始簇數(shù)字,目錄使每個文件依賴于FAT。
為在邏輯盤上存取文件,計算機(jī)的操作系統(tǒng)讀取文件的目錄項(xiàng),以確定對應(yīng)于存儲文件數(shù)據(jù)的第一簇的FAT項(xiàng)。操作系統(tǒng)然后讀取開始于文件第一FAT項(xiàng)的整串FAT項(xiàng)。利用第一簇的位置和來自FAT的簇串,操作系統(tǒng)可以確定屬于文件的每個簇,并相應(yīng)存取每個簇。
當(dāng)向邏輯盤添加數(shù)據(jù)或從邏輯盤上刪除數(shù)據(jù)時,磁盤會變成碎片。碎片指在邏輯盤上的非相臨簇存儲單個文件的組成部分。當(dāng)在邏輯盤上寫文件時,操作系統(tǒng)在由FAT的自由簇列表識別的空白空間內(nèi)存儲數(shù)據(jù)。用來存儲數(shù)據(jù)的空白空間可以包括幾個非相臨的簇。
為改進(jìn)發(fā)送時間而安裝程序或?qū)Τ绦蛑匦屡判驁D2至7顯示了以改進(jìn)程序發(fā)送時間的方式安裝應(yīng)用程序相關(guān)文件的方法實(shí)施例。本領(lǐng)域的技術(shù)人員會理解本發(fā)明可以結(jié)合各種應(yīng)用程序、實(shí)用程序和操作系統(tǒng)相關(guān)程序使用,包含由華盛頓雷德蒙德的微軟公司公開的“MICROSOFT OFFICE”應(yīng)用程序組。
與現(xiàn)有技術(shù)一樣,本發(fā)明必須確定在程序發(fā)送時從邏輯盤讀取的文件部分的順序。但是,與現(xiàn)有技術(shù)在邏輯盤上安裝好文件后確定文件和對文件重新排序不同,本發(fā)明是當(dāng)文件最初安裝邏輯盤上時,就以接近最優(yōu)化順序排列文件。一般說來,通過確定發(fā)送中文件各部分存取順序、在安裝盤上產(chǎn)生裝入順序表和以裝入順序表指示的順序安裝的發(fā)送相關(guān)文件部分來實(shí)現(xiàn)上述過程。另外,在將文件安裝在邏輯盤上后,可以使用裝入順序表對文件重新排序。裝入順序表可以通過互聯(lián)網(wǎng)或其它發(fā)布裝置裝在安裝盤上。
圖2和3是流程圖,顯示了產(chǎn)生安裝盤和以在程序發(fā)送中裝入的順序在邏輯盤上安裝文件的舉例性方法。圖2的流程圖顯示了產(chǎn)生包含應(yīng)用程序相關(guān)文件、一個或多個裝入順序表和安裝程序的安裝盤的方法200。圖3的流程圖顯示了從安裝盤向邏輯盤安裝程序以及將其以在發(fā)送中讀取的順序存儲的方法300。
首先參照圖2,圖中顯示了產(chǎn)生安裝盤的方法200。方法200的第一步是產(chǎn)生應(yīng)用程序相關(guān)文件(步驟205)。在該舉例性方法中,以本領(lǐng)域的技術(shù)人員熟悉的普通方式實(shí)現(xiàn)該步驟,該步驟包含產(chǎn)生與程序(如應(yīng)用程序)相關(guān)的所有文件。這些文件可包含可執(zhí)行文件、動態(tài)鏈接庫、數(shù)據(jù)文件、優(yōu)選文件和類似文件。
在產(chǎn)生這些文件后,方法200運(yùn)行到步驟210。此時,文件安裝在了計算機(jī)上,并發(fā)送程序。發(fā)送過程由測試代碼監(jiān)視或“測試”,其決定在發(fā)送中存取文件的哪部分。測試代碼產(chǎn)生裝入順序表,該裝入順序表指示讀取了哪個文件部分以及其讀取的順序。
圖4顯示了裝入順序表的格式。表中的每個項(xiàng)識別存取的文件、文件中的偏置和讀取的數(shù)據(jù)量。以字節(jié)測量偏置和長度,該偏置和長度與文件的開始端相關(guān)。偏置和長度限定了讀取部分的開始和長度。該步驟形成程序發(fā)送中接觸的所有文件的表、每個讀取的文件的位置以及當(dāng)文件發(fā)送時從磁盤讀取的數(shù)據(jù)量。
方法200從步驟210運(yùn)行到步驟220。本領(lǐng)域的技術(shù)人員會理解初始裝入順序表包含不是程序本身的組成部分的文件,該初始裝入順序表在步驟210產(chǎn)生,并包含在引導(dǎo)中接觸的所有文件的記錄。例如,當(dāng)發(fā)送應(yīng)用程序時,可以要求計算機(jī)讀各系統(tǒng)文件或其它共享文件的部分,這些文件的產(chǎn)生與應(yīng)用程序本身無關(guān)。在步驟220,方法200分析初始文件順序表的內(nèi)容并移去不是最優(yōu)化的或在安裝程序時重新安裝在用戶計算機(jī)上的文件。該排除的文件將包含不能或不應(yīng)該由安裝程序改變的文件以及可能很頻繁改變的文件(如優(yōu)選文件)。本領(lǐng)域的技術(shù)人員會理解可以以不同方式實(shí)現(xiàn)該步驟,包含使用防止其包含在初始裝入順序表中的排除表,或在安裝時處理裝入順序表以忽略某些文件。
在編輯裝入順序表以移去不是最優(yōu)化的文件后,方法200運(yùn)行到步驟225,產(chǎn)生一個或多個最后裝入順序表。本領(lǐng)域的技術(shù)人員會理解裝入文件的順序可以受各種與將安裝程序的計算機(jī)相關(guān)的因素影響。例如,操作系統(tǒng)的特殊版本(包含主版本和小的更新)和與計算機(jī)相關(guān)的簇大小與在邏輯盤上安裝文件部分的最佳順序有一些關(guān)系。因此,每個方案可以產(chǎn)生不同裝入順序表。例如,與操作系統(tǒng)的特殊版本一起使用的裝入順序表可為另一機(jī)器配置添加附加文件或從優(yōu)化裝入順序表刪除文件。同樣地,可以提供用于各個簇大小的裝入順序表。另外,可以提供和小簇(如4KB)一起使用的單個裝入順序表,在文件排序時由其獲得其它簇大小的裝入順序表。在圖4所示的實(shí)施例中,最后裝入順序表具有相同的格式。
在步驟230,產(chǎn)生實(shí)際的安裝盤(如CD-ROM或軟盤)。安裝盤包含應(yīng)用程序相關(guān)文件、裝入順序表和安裝程序。當(dāng)安裝盤插入用戶計算機(jī)上的驅(qū)動器時,用戶會發(fā)送安裝程序以在計算機(jī)邏輯盤上安裝文件。根據(jù)用戶的輸入和從計算機(jī)讀取的配置信息,安裝程序確定需要安裝哪個文件以及文件應(yīng)該安裝的順序,并從安裝盤上讀文件和以正確順序?qū)懘疟P。
圖3顯示了方法300,方法300用于從安裝盤向邏輯盤安裝文件,并以在程序發(fā)送中讀取的順序存儲發(fā)送相關(guān)程序部分。在一實(shí)施例中,由安裝盤上包含的安裝程序執(zhí)行方法300,安裝盤可以是插入盤驅(qū)動器30的CD-ROM(圖1)。
當(dāng)用戶發(fā)送安裝程序時,開始方法300并運(yùn)行到步驟305。在步驟305,安裝程序詢問計算機(jī)并獲得適于操作系統(tǒng)安裝在計算機(jī)上的數(shù)據(jù)、硬盤驅(qū)動器的特性等。
在步驟310,安裝程序提示用戶并獲得適于特殊程序或用戶想要安裝的程序的信息。進(jìn)行安裝前,安裝程序還要求用戶輸入他或她的名字和系列編號。
在步驟315,安裝程序使用在步驟310和315獲得的信息以確定來自安裝盤的哪個文件應(yīng)該安裝在硬盤驅(qū)動器上。
在步驟320,安裝程序采用在步驟310和315獲得的信息以確定應(yīng)該使用哪個裝入順序表來確定應(yīng)該安裝和存儲在邏輯盤上的發(fā)送相關(guān)文件部分的順序。如前所述,可以提供不同的裝入順序表以適于不同版本的操作系統(tǒng)、不同硬盤驅(qū)動器簇大小等。
圖5顯示四個應(yīng)用程序文件的部分(文件A,B,C,D)和簡單裝入順序表的實(shí)例,該裝入順序表識別發(fā)送相關(guān)文件部分和當(dāng)程序發(fā)送時其裝入的順序。在該實(shí)例中,應(yīng)用程序可以包含文件A、B、C和D。當(dāng)然,應(yīng)用程序可以包含許多附加文件。每個文件包含多個部分(如A1-A8、B1-B6、C1-C5和D1-D5)。但是,只有文件A、B和C包含在應(yīng)用程序發(fā)送時裝入的部分。這些發(fā)送相關(guān)部分包含部分A1-A4、B1-B3、C1-C3。文件A、B、C剩下的部分和整個文件D不在發(fā)送中裝入。本領(lǐng)域的技術(shù)人員會理解每個文件(如A1-A4)的發(fā)送相關(guān)部分不需要是鄰近的或優(yōu)先于非發(fā)送相關(guān)文件部分(如A5-A8)。圖3的最后線顯示了發(fā)送裝入順序,其說明了在發(fā)送中發(fā)送相關(guān)文件A、B和C部分裝入的順序。在該實(shí)施例中,發(fā)送裝入順序是A1、B3、A3、B2、B1、C2、C1、A2、C3、A4。
剩下的安裝過程(步驟325、330和335)目的是以上述發(fā)送裝入順序在邏輯盤上的鄰近簇中安裝的發(fā)送相關(guān)文件部分。這樣,安裝過程可描述成具有兩個目標(biāo)(1)以正確順序?qū)懭氚l(fā)送相關(guān)文件部分以及(2)保證發(fā)送相關(guān)文件部分存儲在邏輯盤上的鄰近扇區(qū)中。通過裝入順序表對以正確順序?qū)懓l(fā)送相關(guān)文件部分的目標(biāo)編址。滿足存儲在鄰近簇中的文件部分由于用于大多數(shù)個人計算機(jī)上FAT文件系統(tǒng)的各特性的要求。
一般,F(xiàn)AT文件系統(tǒng)以“簇自由表”順序?qū)⑽募懭脒壿嫳P。換句話說,當(dāng)文件寫到硬盤驅(qū)動器上時,文件的第一簇寫在FAT中識別的第一自由簇,文件的第二簇寫在FAT中識別的第二自由簇,等等。在許多情況下,自由簇不是鄰近的。因此,當(dāng)安裝程序時,需要識別包含足夠鄰近自由簇的邏輯盤部分,以便存儲程序發(fā)送相關(guān)文件部分??梢砸源刈杂杀眄樞?qū)懯O碌奈募糠帧?br>
在步驟325中,安裝程序識別將用于存儲發(fā)送相關(guān)文件部分的鄰近自由簇塊(在邏輯盤上)。本發(fā)明考慮用幾種方法來識別足以存儲發(fā)送部分文件的可用磁盤空間。
第一種方法是假定產(chǎn)生的文件存儲在邏輯盤的開始端,以及假定在末端有足夠鄰近自由空間量。盡管該假定是不現(xiàn)實(shí)的,但是在安裝過程中,可以建議用戶使用普通碎片整理實(shí)用程序來整理邏輯磁盤的碎片,以實(shí)現(xiàn)該假定。在整理了磁盤碎片后,應(yīng)用程序可以安裝在磁盤末端的自由空間中,使發(fā)送相關(guān)文件部分存儲在鄰近簇中。本領(lǐng)域的技術(shù)人員會理解該方法是不夠理想的,因?yàn)樵诎惭b前對邏輯盤整理碎片要花費(fèi)時間,并且一些用戶會不愿意或不能完成建議的碎片整理。
第二種方法是假定在磁盤的末端有大自由空間,但是在磁盤開始端有一些非鄰近自由簇。在該方法中,最后安裝來自裝入順序表的發(fā)送相關(guān)文件部分。這會使剩下的應(yīng)用程序文件(即非發(fā)送相關(guān)部分)首先安裝并以簇自由表順序保存在磁盤上。在多數(shù)情況下,存儲的大量文件數(shù)據(jù)應(yīng)該導(dǎo)致非發(fā)送相關(guān)文件部分存入非鄰近自由簇和發(fā)送相關(guān)文件部分最后安裝在鄰近自由簇中,該鄰近自由簇保留在磁盤的末端。
第三種識別足夠鄰近自由簇的方法包含讀整個自由簇表并追蹤任何鄰近自由簇組的大小。然后以大小排序,以便發(fā)現(xiàn)的最大鄰近自由簇組。識別和標(biāo)記用于存儲發(fā)送相關(guān)文件部分的最大自由簇組。在識別了發(fā)送文件的目標(biāo)簇后,過程利用自由簇的初始表,并開始向邏輯盤寫入數(shù)據(jù)。如果目標(biāo)簇不是表中的第一自由簇,為了取得理想的目標(biāo)簇而將臨時文件寫入需要存儲的自由簇。在發(fā)送文件寫入鄰近目標(biāo)簇后,刪除臨時文件,這些簇返回簇自由表。下面更詳細(xì)地說明臨時文件的使用。
第四種方法類似于第三種,但是減少了需要寫成臨時文件的數(shù)據(jù)數(shù)量??赡艿谌N方法會需要許多要寫到磁盤早期部分的多個小的簇組數(shù)據(jù)。為了使活動最少化,第四種方法采用最早期鄰近簇組或組集合來大大改進(jìn)程序發(fā)送時間。
在已經(jīng)識別了用于安裝發(fā)送相關(guān)文件部分的足夠鄰近自由簇后,安裝程序運(yùn)行到步驟330,并以正確順序?qū)l(fā)送相關(guān)文件部分寫入自由空間。本領(lǐng)域的技術(shù)人員會理解,需要以裝入順序表指示的順序?qū)l(fā)送文件部分寫入自由空間的特殊步驟會依賴于各種因素。這些因素中最重要的可能是計算機(jī)特殊操作系統(tǒng),該特殊系統(tǒng)提供工具,用以將文件寫入邏輯磁盤,并限制多少文件可以寫入硬驅(qū)動器。下面說明適于與“WINDOWS 95”操作系統(tǒng)一起使用的兩種方法。
本領(lǐng)域的技術(shù)人員會理解在邏輯盤上寫發(fā)送文件的最簡單方案是當(dāng)自由空間是鄰近的并位于邏輯盤的末端以及操作系統(tǒng)不試圖強(qiáng)迫文件成鄰近的時候。在該簡單和也許不現(xiàn)實(shí)的方案中,可以以下述方式實(shí)現(xiàn)在邏輯盤上寫文件的過程。第一,安裝程序打開CD-ROM(用于讀)和邏輯盤(用于寫)上的必要文件。接著,從CD-ROM上讀在裝入順序表中列出的第一簇并將其寫入硬盤驅(qū)動器。有些情況下,必須刷新(flush)輸出文件,以保證數(shù)據(jù)已實(shí)際寫在磁盤上。重復(fù)這些步驟,直到裝入順序表中的所有簇都寫入邏輯盤了。此時,安裝程序可以運(yùn)行到步驟335,在步驟335,從CD-ROM上讀剩下的文件部分(即非發(fā)送相關(guān)部分)并將其寫入邏輯盤。當(dāng)寫入所有文件時,讀、寫的文件關(guān)閉,操作系統(tǒng)更新FAT文件系統(tǒng)。方法300接著在步驟340結(jié)束并完成安裝。
在“WINDOWS 95”操作系統(tǒng)的上下文中說明了將單獨(dú)文件寫入非鄰近簇(步驟330)?!癢INDOWS 95”操作系統(tǒng)試圖將文件保存在鄰近簇中。因此,當(dāng)多個簇中寫入單個文件時,操作系統(tǒng)試圖將其放入鄰近簇中。在本發(fā)明的一個實(shí)施例中,通過用臨時文件占用硬盤驅(qū)動器上的空間來克服操作系統(tǒng)的這一特征,并迫使每個文件的發(fā)送相關(guān)部分以期望的順序?qū)懭敕青徑?。本領(lǐng)域的技術(shù)人員會理解操作系統(tǒng)和文件系統(tǒng)文件可寫入順序強(qiáng)制的要求。最重要的是,文件的第一簇是以單調(diào)遞增順序分配的。換句話說,在文件的第二簇前分配文件的第一簇,等等,而與寫入文件的信息的順序無關(guān)。
圖6顯示了臨時文件的使用的實(shí)例,反映在安裝過程的不同階段中在邏輯盤上的12個簇的內(nèi)容。在該實(shí)施例中,圖5的10個文件部分將寫入圖6所示的12個簇中。在安裝開始前,12個簇(任意標(biāo)為數(shù)字0-11)是自由簇表中的鄰近簇。如果鄰近簇0-11不是自由簇表中的第一簇,安裝程序?qū)⑴R時文件寫入簇0前的簇。這使簇0成為自由簇表中的第一自由簇。
安裝程序會從合適的裝入順序表中讀取期望的簇順序、從CD-ROM中讀簇并將其寫入邏輯磁盤的簇0-9。由于操作系統(tǒng)要求以單調(diào)遞增順序?qū)懨總€文件的簇,將文件寫入邏輯磁盤的過程會需要多次通過自由空間,并包含使用臨時文件以保證數(shù)據(jù)寫入期望的簇。
現(xiàn)在參照圖6,在通過1中,安裝程序讀裝入順序表并確定簇A1應(yīng)該首先裝入。因?yàn)檫@是文件A1中的第一簇,因此可將其立即寫入簇0。
接著,安裝程序確定簇B3應(yīng)該寫入簇1,但是,還不能保存簇B3,因?yàn)榇谺1和B2還沒有寫入硬盤驅(qū)動器。因此,安裝程序?qū)⑴R時文件t1寫入簇1。
在寫完臨時文件t1后,安裝程序確定應(yīng)該寫簇A3。但是不能保存簇A3,因?yàn)榇谹2還沒有寫入硬盤驅(qū)動器。因此,安裝程序?qū)⑴R時文件t2寫入簇2。
然后將臨時文件t3寫入簇3,因?yàn)橹钡酱谺1已經(jīng)寫入硬盤驅(qū)動器后才能保存簇B2。
在寫入臨時文件t3后,安裝程序確定應(yīng)該將簇B1寫入簇4。因?yàn)檫@是文件B中的第一簇。因此可以將其寫入硬盤驅(qū)動器的簇4中。
在簇B1后,安裝程序?qū)⑴R時文件t4入簇5,因?yàn)橹钡酱谺1已經(jīng)寫入硬盤驅(qū)動器后才能保存簇B2。
接著,安裝程序確定應(yīng)該將簇C1寫入簇6。因?yàn)榇谻1是文件C中的第一簇,因此將其寫入簇6。
接著,安裝程序確定應(yīng)該將簇A2寫入簇7。因?yàn)橐呀?jīng)寫了簇A1,因此簇A1可以寫入簇7。
在將簇A2寫入硬盤驅(qū)動器后,安裝程序確定簇C3應(yīng)該寫入簇8。但是,由于沒有存儲簇C2,因此還不能寫簇C3。安裝程序?qū)⑴R時文件t5寫入簇8。
接著,安裝程序確定應(yīng)該將簇A4寫入簇9。但是,由于簇A3還沒有寫入硬盤驅(qū)動器,因此安裝程序?qū)⑴R時文件t6寫入簇9。
在安裝程序已經(jīng)將數(shù)據(jù)寫入所有將用于存儲發(fā)送相關(guān)文件部分的簇后,安裝程序?qū)⒋笈R時文件t7寫入磁盤上剩下的自由空間。
在通過2中,安裝程序繼續(xù)以單調(diào)遞增的順序?qū)l(fā)送相關(guān)文件寫入硬盤驅(qū)動器的過程。
在通過2中,簇B3不能寫入硬盤驅(qū)動器,因?yàn)榇谺2還沒有被保存。
由于簇A1和A2已經(jīng)保存,則簇A3可以寫入簇2。因此安裝程序刪除臨時文件t2并將A3寫入簇2。
由于簇B1已經(jīng)保存,則簇B2可以寫入簇3。安裝程序刪除臨時文件t3并將B2寫入簇3。
由于簇C1已經(jīng)保存,則簇C2可以寫入簇5。安裝程序刪除臨時文件t5并將簇C2寫入簇5。
由于簇C1已經(jīng)保存,則簇C3可以寫入簇8。安裝程序刪除臨時文件t5并將C3寫入簇8。
最后,由于簇A1-A3已經(jīng)保存,則簇A4可以寫入簇9。安裝程序刪除臨時文件t6并將A4寫入簇9。
在通過3中,由于簇B1和B2已經(jīng)保存,因此簇B3可以最后寫入簇1。安裝程序刪除臨時文件t1并將簇B3寫入簇1。
在寫完所有發(fā)送相關(guān)文件部分后,安裝程序刪除臨時文件t7和任何寫入簇0以前的簇的臨時文件。這使得空著的簇返回自由簇表。此時,從CD-ROM讀取剩下的程序部分(即非發(fā)送相關(guān)文件部分)并將其寫入硬盤驅(qū)動器。這些文件將以簇自由表順序保存在硬盤驅(qū)動器中。
有些版本的“WINDOWS 95”操作系統(tǒng)采用文件分配策略,假定如果打開兩個文件并且程序正寫入兩個文件,程序會在文件之間需要一些自由空間。圖7顯示了第二種方法,用于將發(fā)送文件部分寫入硬盤簇0-9,盡管這是操作系統(tǒng)的特征。第二種方法非常類似于圖6所示的方法,但是需要額外通過自由簇以在每個自由簇中產(chǎn)生臨時文件。
在圖7的實(shí)例中,圖5的10個文件部分將寫入硬驅(qū)動器的簇0-9。在安裝開始前,12個簇(數(shù)字0-11)是在自由簇表中的鄰近簇。如果鄰近簇0-11不是自由簇表中的第一簇,安裝程序?qū)⑴R時文件寫入簇0之前的簇。這使簇0成為自由簇表中的第一自由簇。
在通過1中,安裝程序?qū)ⅹ?dú)立臨時文件(t1-t10)寫入每個簇,每個簇將用于存儲在裝入順序表中識別的文件簇。將另一臨時文件t11寫入跟著簇9的所有自由簇。這保證操作系統(tǒng)不會在由安裝程序?qū)懙拇刂g留出空間。
通過2-4與圖6的通過1-3同樣進(jìn)行,并用于以單調(diào)遞增順序?qū)懳募?。但是,在通過2中,由于簇A1、B1、C1和A1可以分別寫入簇1、4、6和7中,因此必須刪除臨時文件t1、t5、t7和t8。
在所有發(fā)送相關(guān)文件部分已經(jīng)寫入邏輯盤后,安裝程序刪除臨時文件t11和任何寫入簇0之前的簇的臨時文件。這使空著的簇返回自由簇表。此時,從CD-ROM中讀剩下的文件部分(即非發(fā)送相關(guān)文件部分)并將其寫入邏輯盤。這些文件將以簇自由表順序保存在邏輯盤上。
上述說明描述了本發(fā)明的幾個實(shí)施例。這些實(shí)施例一般包含一種識別哪個發(fā)送相關(guān)程序部分應(yīng)該安裝在邏輯盤上的鄰近簇的裝入順序表,該裝入順序表用于識別足夠量的鄰近自由簇的方法,以及用于以期望的順序?qū)⒊绦虿糠謱懭豚徑亍?br>
本發(fā)明具有幾個附加特征,可以合并入本發(fā)明的實(shí)施例。
可以將本發(fā)明的方法擴(kuò)展,不僅包含新文件的發(fā)送相關(guān)部分,而且包含產(chǎn)生邏輯盤上的文件和新程序的附加部分。
例如,如果系統(tǒng)文件和其它預(yù)先安裝的文件包含在裝入順序表中,則本發(fā)明可用于優(yōu)化這些文件。為了完成這些優(yōu)化,進(jìn)行如上所述的安裝過程,但還會包含打開要讀的文件和打開要寫的新臨時文件。將產(chǎn)生文件的相關(guān)簇和其它發(fā)送相關(guān)程序部分一起寫入鄰近自由簇。在發(fā)送相關(guān)部分都寫入邏輯盤上的鄰近簇后,將刪除初始產(chǎn)生文件,對臨時文件重新命名成具有與刪除的初始文件相同的名字。
如上所述,本發(fā)明的原理可用于測試(instrument)和安裝(或重新排序)其它命令、程序的磁盤加強(qiáng)部分。例如,可以測試執(zhí)行例行程序如OPEN、SAVE、LOAD和PRINT的代碼,結(jié)果包含在安裝盤上的裝入順序文件中。然后,當(dāng)安裝新程序時,安裝程序使用該信息并將這些部分代碼寫入邏輯盤的鄰近部分,或在安裝后對代碼的相關(guān)部分重新排序。
如上所述,在安裝過程的有些階段,臨時文件可以用于占用邏輯盤上的幾乎所有自由空間。在完成安裝過程后,一般由安裝程序刪除這些臨時文件。但是,為了保證移去臨時文件并向計算機(jī)提供空著的空間,可以對由操作系統(tǒng)執(zhí)行的后-再引導(dǎo)(post-reboot)或“調(diào)整”過程編程,以便檢查出現(xiàn)的一個或多個臨時文件并刪除發(fā)現(xiàn)的文件。安裝過程的后一再引導(dǎo)部分可以用于刪除和重命名任何由于使用在安裝過程中而不能刪除的優(yōu)化系統(tǒng)文件。
圖8是流程圖,顯示采用本發(fā)明原理優(yōu)化涉及啟動的代碼部分和在該代碼已經(jīng)安裝在邏輯驅(qū)動器上后的其它磁盤加強(qiáng)操作的另一種方法800。與圖3的方法相同,方法800采用一個或多個裝入順序表和程序文件的安裝盤。但是,在該實(shí)施例中,程序文件是以普通方式與復(fù)制的裝入順序表一起首先安裝在邏輯驅(qū)動器。在安裝后,有時調(diào)整程序可以使用裝入順序表以優(yōu)化形式對磁盤加強(qiáng)數(shù)據(jù)重新排序。
在步驟805,方法800包含以普通方式在邏輯驅(qū)動器上安裝程序文件。此時,復(fù)制的裝入順序表還復(fù)制到邏輯驅(qū)動器上。
在安裝好程序后,可以使用單獨(dú)程序?qū)εc磁盤加強(qiáng)操作如程序啟動相關(guān)的程序部分重新排序??稍诟鱾€時間運(yùn)行該“調(diào)整”或重新排序程序。例如,當(dāng)安裝好程序后計算機(jī)重新啟動時,可以自動運(yùn)行調(diào)整程序。每逢用戶選擇完成他或她的計算機(jī)的維護(hù)活動時,還可人工控制調(diào)整程序。
步驟810是調(diào)整或重新排序過程的第一步。在步驟810,調(diào)整程序查詢計算機(jī)并獲得匹配安裝在計算機(jī)上的操作系統(tǒng)以及硬盤驅(qū)動器特性的數(shù)據(jù)。
在步驟815,調(diào)整程序使用在步驟810獲得的數(shù)據(jù)以確定應(yīng)該使用哪個裝入順序表來確定應(yīng)該在邏輯盤上重新排序的磁盤加強(qiáng)文件部分的順序。如前所述,可以提供不同裝入順序表以適應(yīng)不同版本的操作系統(tǒng)、不同硬盤驅(qū)動器簇大小等等。
本領(lǐng)域的技術(shù)人員會理解,程序組如“MICROSOFT OFFICE”程序組包含一個以上應(yīng)用程序。通過提供每個應(yīng)用程序的裝入順序表可以將本發(fā)明應(yīng)用于一組程序的安裝。如果要支持多個版本的操作系統(tǒng),本發(fā)明可以提供每個支持系統(tǒng)的每個應(yīng)用程序的裝入順序表。當(dāng)“優(yōu)化”程序時(在安裝中或安裝后),可應(yīng)用的裝入順序表可以以預(yù)定順序集中在一起。如果發(fā)送相關(guān)文件部分包含在一個以上的裝入順序表中,可為了包括該部分可以從除第一裝入順序表的所有裝入順序表中移去該部分。
在步驟820,調(diào)整程序識別用于存儲磁盤加強(qiáng)文件部分的鄰近自由簇(在邏輯盤上)塊。如上所述,本發(fā)明采用幾種方法用于識別足夠存儲發(fā)送文件部分的可用磁盤空間。
在為安裝發(fā)送相關(guān)文件部分而識別了足夠鄰近自由簇后,安裝程序運(yùn)行到步驟825,并以正確順序在自由空間中對磁盤加強(qiáng)文件部分重新排序。
簡單地說,圖8的方法使文件在安裝時或緊接著重新排序,還在安裝后的任何時候?qū)ζ湔{(diào)整或固定。通過采用裝入順序表,完成該調(diào)整而不使用現(xiàn)有技術(shù)中使用的監(jiān)視功能。
最后,上述的過程使用由操作系統(tǒng)提供的讀、寫功能。該方法具有很強(qiáng)功能并實(shí)際減小了安裝過程毀壞用戶硬盤驅(qū)動器上的數(shù)據(jù)的可能性。但是,本領(lǐng)域的技術(shù)人員會理解,通過使用低級功能在簇級寫數(shù)據(jù),可以將數(shù)據(jù)寫在硬盤驅(qū)動器上。該方法要求安裝程序?qū)⑽募糠謱懭胝_簇,然后返回和修補(bǔ)(patch)FAT。盡管在本發(fā)明的上下文中可以采用該方法,但是有使硬盤上的數(shù)據(jù)以一些方式遭受破壞的危險。
詳細(xì)說明的綜述從上述說明中會理解本發(fā)明提供一種以改進(jìn)程序發(fā)送時間的方式安裝文件或?qū)ξ募匦屡判虻母倪M(jìn)的系統(tǒng)和方法。本發(fā)明的主要優(yōu)點(diǎn)在于,在通過提供一個或多個裝入順序表安裝好程序后,不需要監(jiān)視啟動過程。
上述的實(shí)施例監(jiān)視程序啟動過程,并確定在磁盤加強(qiáng)操作如發(fā)送程序或選擇某些程序命令中從磁盤讀取文件部分的順序。該數(shù)據(jù)用于產(chǎn)生裝入順序表,該裝入順序表指示在發(fā)送中讀取文件各個部分的順序。在安裝中,安裝程序從裝入順序表讀數(shù)據(jù),并以上述順序?qū)l(fā)送相關(guān)文件部分寫在邏輯盤上的鄰近簇中。另外,在程序安裝后,根據(jù)裝入順序表對發(fā)送相關(guān)文件部分重新排序。在完成上述過程后,計算機(jī)從邏輯盤上以正確順序從鄰近磁盤簇讀發(fā)送相關(guān)數(shù)據(jù),這減少和消除了由于為讀取發(fā)送數(shù)據(jù)而使磁盤磁頭必須在非鄰近簇之間移動的磁盤存取所造成的時間浪費(fèi)。
本發(fā)明還可以在一個或多個根據(jù)和實(shí)施圖2至8所示的特征的程序模塊中實(shí)現(xiàn)。沒有說明為實(shí)現(xiàn)上述各個過程的特殊編程語言,因?yàn)榭紤]到上述的和附圖所示的操作、步驟和過程足以公開了供本領(lǐng)域技術(shù)人員實(shí)施本發(fā)明的內(nèi)容。此外,由多種可以實(shí)施本發(fā)明的計算機(jī)和操作系統(tǒng),因此不能提供適于這些不同系統(tǒng)的詳細(xì)計算機(jī)程序。特定計算機(jī)的每個用戶會知道最滿足用戶需要和目的的語言和工具。
此外,盡管在“WINDOWS 95”操作系統(tǒng)下安裝應(yīng)用程序的安裝程序的上下文中主要說明了本發(fā)明,本領(lǐng)域的技術(shù)人員會理解本發(fā)明適用于各種類型的程序模塊和運(yùn)行各種操作系統(tǒng)并使用各種文件系統(tǒng)的系統(tǒng)。例如,本發(fā)明可用于安裝應(yīng)用程序、實(shí)用程序、操作系統(tǒng)程序模塊和類似程序。如上所述,本發(fā)明還可用于對與多種磁盤加強(qiáng)操作相關(guān)的代碼相關(guān)的程序數(shù)據(jù)排序,該磁盤加強(qiáng)操作包括發(fā)送應(yīng)用程序、發(fā)送與程序命令(如FILE OPEN)和類似的操作。
上面說明了關(guān)于特殊實(shí)施例的本發(fā)明,這些實(shí)施例只是用于說明本發(fā)明而不是限定本發(fā)明的。本領(lǐng)域的技術(shù)人員會明白有適合于本發(fā)明而不背離本發(fā)明的精神和范圍的可替換實(shí)施例。因此,本發(fā)明的范圍不是由上述說明限定的,而是由附加權(quán)利要求限定的。
權(quán)利要求
1.一種計算機(jī)可讀媒體,包括包含發(fā)送相關(guān)部分的多個文件;裝入順序表,指示多個文件的發(fā)送相關(guān)部分要安裝在磁盤上的順序;計算機(jī)可執(zhí)行指令,用于實(shí)現(xiàn)以下步驟,包括識別磁盤上的至少一組鄰近自由簇;以及安裝多個文件的發(fā)送相關(guān)部分,所述發(fā)送相關(guān)部分以裝入順序表指示的順序存儲在磁盤上。
2.如權(quán)利要求1所述的計算機(jī)可讀媒體,其中裝入順序表包含多個項(xiàng),每個項(xiàng)識別多個文件中的一個以及要安裝的文件部分。
3.如權(quán)利要求1所述的計算機(jī)可讀媒體,其中安裝發(fā)送相關(guān)部分的步驟包含以下步驟讀裝入順序表中的項(xiàng),該項(xiàng)識別多個文件中的一個以及要讀取的文件部分;讀從多個文件中識別的一個文件的文件部分;在磁盤上寫所述文件的部分。
4.如權(quán)利要求1所述的計算機(jī)可讀媒體,其中識別至少一組鄰近自由簇的步驟包含以下步驟從存儲在磁盤上的數(shù)據(jù)讀提供自由簇的表;以及識別具有鄰近自由簇的最大數(shù)字的一組鄰近自由簇。
5.如權(quán)利要求1所述的計算機(jī)可讀媒體,其中多個文件包含非發(fā)送相關(guān)部分,在安裝所述多個文件的所述發(fā)送相關(guān)部分的步驟后,將所述非發(fā)送相關(guān)部分存儲在磁盤上。
6.如權(quán)利要求1所述的計算機(jī)可讀媒體,其中在程序啟動時讀發(fā)送相關(guān)部分。
7.如權(quán)利要求1所述的計算機(jī)可讀媒體,其中在執(zhí)行程序命令時讀發(fā)送相關(guān)部分。
8.一種從安裝盤向磁盤安裝程序代碼的方法,包含步驟從存儲在安裝盤上的裝入順序表讀多個項(xiàng),每個項(xiàng)識別與所述程序代碼相關(guān)的文件部分;對于從裝入順序表讀到的每個項(xiàng),從安裝盤讀由所述項(xiàng)識別的文件部分;以及對于從裝入順序表讀到的每個項(xiàng),將讀到的文件部分寫入磁盤上的鄰近自由簇,所述文件部分以對應(yīng)裝入順序表中的項(xiàng)的順序存儲在磁盤上。
9.如權(quán)利要求8所述的方法,其中裝入順序表識別在程序發(fā)送中讀多個發(fā)送相關(guān)程序部分的順序。
10.如權(quán)利要求8所述的方法,其中裝入順序表中的每個項(xiàng)包含文件識別符以及從識別文件讀的數(shù)據(jù)位置
11.如權(quán)利要求8所述的方法,其中裝入順序表中的每個項(xiàng)包含文件名、命名文件的偏置,以及從命名文件讀的數(shù)據(jù)量。
12.如權(quán)利要求8所述的方法,進(jìn)一步包含步驟在寫完與裝入順序表的每個項(xiàng)相關(guān)的文件部分后,從安裝盤向磁盤寫入非發(fā)送相關(guān)程序代碼。
13.一種從安裝盤向磁盤安裝程序代碼的方法,包括步驟產(chǎn)生包括發(fā)送相關(guān)部分的多個文件;確定讀發(fā)送相關(guān)部分的順序;產(chǎn)生指示讀發(fā)送相關(guān)部分的順序的裝入順序表;以及在安裝盤上存儲多個文件、裝入順序表和安裝程序;安裝程序包括計算機(jī)可執(zhí)行指令,用于完成以下步驟識別磁盤上的至少一組鄰近自由簇;以及在所述至少一組鄰近自由簇中安裝多個文件的發(fā)送相關(guān)部分,所述發(fā)送相關(guān)部分以所述裝入順序表指示的順序存儲在磁盤上。
14.如權(quán)利要求13所述的方法,其中裝入順序表包括多個項(xiàng),每個項(xiàng)包括多個文件中的一個的文件名和要安裝的文件部分的名稱。
15.如權(quán)利要求13所述的方法,安裝發(fā)送相關(guān)部分的步驟包括步驟讀裝入順序表中的項(xiàng),所述項(xiàng)識別多個文件中的一個和要讀的文件部分;從所述識別的多個文件中的一個讀所述文件部分;將所述文件部分寫入磁盤。
16.如權(quán)利要求13所述的方法,識別至少一組鄰近自由簇的步驟包括步驟從存儲在磁盤上的數(shù)據(jù)讀一列可用自由簇;以及識別具有大量鄰近自由簇的鄰近自由簇組。
17.如權(quán)利要求13所述的方法,其中多個文件包含非發(fā)送相關(guān)部分,在安裝所述多個文件的所述發(fā)送相關(guān)部分的步驟后,將所述非發(fā)送相關(guān)部分存儲在磁盤上。
18.一種在邏輯盤上安裝和優(yōu)化程序代碼的方法,包括步驟產(chǎn)生包括與磁盤加強(qiáng)操作相關(guān)的部分的多個文件;確定在磁盤加強(qiáng)操作中讀磁盤加強(qiáng)的順序;產(chǎn)生裝入順序表,所述裝入順序表指示在磁盤加強(qiáng)操作中讀磁盤加強(qiáng)部分的順序;以及在安裝盤上存儲多個文件、裝入順序表和安裝程序;從安裝盤向邏輯盤安裝多個文件和裝入順序表;在邏輯盤上安裝后,通過完成以下步驟優(yōu)化磁盤加強(qiáng)部分識別邏輯盤上的至少一組鄰近自由簇;以及以裝入順序表中指示的順序?qū)Υ疟P加強(qiáng)部分重新排序。
19.如權(quán)利要求18所述的方法,其中裝入順序表包含多個項(xiàng),每個項(xiàng)包含多個文件中的一個的名稱以及要重新排序的文件部分的名稱。
20.如權(quán)利要求19所述的方法,其中通過從文件的開始端的偏置和從文件讀到的數(shù)據(jù)量中識別所述部分。
21.如權(quán)利要求18所述的方法,其中對磁盤加強(qiáng)部分重新排序的步驟包含步驟讀裝入順序表中的項(xiàng),該項(xiàng)識別多個文件中的一個以及要讀取的文件部分;讀從識別的多個文件中的一個文件的文件部分;在邏輯盤上寫所述的文件部分。
全文摘要
以改進(jìn)程序發(fā)送時間的方式在硬盤驅(qū)動器上安裝文件。在完成編程后,發(fā)送程序,并監(jiān)視與磁盤加強(qiáng)操作相關(guān)的磁盤活動,以便確定在程序或命令發(fā)送中從磁盤上讀取文件部分的順序。該數(shù)據(jù)用于產(chǎn)生裝入順序表,該裝入順序表指示在發(fā)送中讀取的文件各個部分的順序。安裝盤包括文件和裝入順序表。在安裝過程中,安裝程序從裝入順序表讀數(shù)據(jù),并寫文件部分,使其以由裝入順序表描述的順序存儲在硬盤驅(qū)動器上的鄰近簇中。計算機(jī)然后以從鄰近磁盤簇的正確順序從磁盤上讀發(fā)送相關(guān)數(shù)據(jù),這減少和消除由于為了讀發(fā)送相關(guān)數(shù)據(jù)而使磁頭在非鄰近簇之間移動的磁盤存取造成的時間浪費(fèi)。
文檔編號G06F12/02GK1296582SQ99805004
公開日2001年5月23日 申請日期1999年4月8日 優(yōu)先權(quán)日1998年4月15日
發(fā)明者詹姆斯·愛德華·沃爾什, 本杰民·阿倫·拉迪克-古爾德 申請人:微軟公司