亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種計算機設(shè)備系統(tǒng)啟動加速的方法和裝置制造方法

文檔序號:6519271閱讀:171來源:國知局
一種計算機設(shè)備系統(tǒng)啟動加速的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種電子設(shè)備(特別是計算機設(shè)備)系統(tǒng)(特別是操作系統(tǒng))啟動加速的方法和裝置,所述方法包括以下步驟:在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù);將預(yù)讀取線程讀取的預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取;以及在操作系統(tǒng)啟動過程中,利用預(yù)讀取線程繼續(xù)讀取預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停預(yù)讀取線程的讀取。
【專利說明】一種計算機設(shè)備系統(tǒng)啟動加速的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,尤其涉及一種電子設(shè)備(特別是計算機設(shè)備)系統(tǒng)(特別是操作系統(tǒng))啟動加速的方法和裝置。
【背景技術(shù)】
[0002]伴隨著信息技術(shù)的不斷發(fā)展,人們生活節(jié)奏不斷加快,人們對自己生活、學(xué)習(xí)和工作不可或缺的助手一各種電子設(shè)備,例如計算機的速度也不斷提出新的要求。如何加快電子設(shè)備操作系統(tǒng)的啟動速度一直是人們所關(guān)注的問題。
[0003]磁盤讀取速度被認(rèn)為是影響操作系統(tǒng)啟動速度的一個重要因素。操作系統(tǒng)啟動時,需要從磁盤中讀取啟動所需的大量文件,這些文件零散地分布在磁盤中,操作系統(tǒng)只能通過分散的請求和偏移一次一次地讀取這些文件。例如,某些操作系統(tǒng)啟動時,操作系統(tǒng)從磁盤讀取數(shù)據(jù)的請求隊列有上千個請求排隊,如果此時操作系統(tǒng)再發(fā)出新的請求,會根據(jù)其偏移排在隊列的適當(dāng)位置,一般是隊尾,導(dǎo)致系統(tǒng)啟動很慢。
[0004]一種加快操作系統(tǒng)啟動速度的做法是啟動時禁用不需要的軟件。在操作系統(tǒng)啟動時,由于系統(tǒng)需要加載很多應(yīng)用程序,通過禁用系統(tǒng)啟動時沒必要啟動的軟件,例如,將第三方安裝的軟件,用戶用不到的打印,遠(yuǎn)程登陸等服務(wù)等應(yīng)用,對系統(tǒng)啟動速度進行優(yōu)化。這通常是用戶層通過修改配置文件,來實現(xiàn)系統(tǒng)啟動的加速,需要解析數(shù)據(jù)結(jié)構(gòu),其加速效果不明顯。

【發(fā)明內(nèi)容】

[0005]鑒于上述問題,提出了本發(fā)明,以便提供一種克服上述問題或者至少部分地解決上述問題的電子設(shè)備操作系統(tǒng)啟動加速的方法和裝置。
[0006]依據(jù)本發(fā)明的第一方面,提供了一種電子設(shè)備操作系統(tǒng)啟動加速的方法,包括以下步驟:在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù);將預(yù)讀取線程讀取的預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀??;以及在操作系統(tǒng)啟動過程中,利用預(yù)讀取線程繼續(xù)讀取預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停預(yù)讀取線程的讀取。
[0007]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,還包括步驟:記錄操作系統(tǒng)啟動的信息,并且基于信息以及用于之前一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),并且按照系統(tǒng)啟動時讀取的優(yōu)先級對所述預(yù)先定義的預(yù)讀取數(shù)據(jù)中的數(shù)據(jù)進行排序。
[0008]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,還包括步驟:檢測磁盤碎片整理時數(shù)據(jù)移動的情況,并且根據(jù)數(shù)據(jù)移動的情況,重新生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。
[0009]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,操作系統(tǒng)啟動的信息包括操作系統(tǒng)啟動所花費的時間、操作系統(tǒng)從內(nèi)存中讀取所緩存的預(yù)讀取數(shù)據(jù)的情況。
[0010]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,利用預(yù)讀取線程讀取預(yù)讀取數(shù)據(jù)的步驟包括:在小于或等于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件;以及在大于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件。
[0011]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,還包括步驟:在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取數(shù)據(jù),并將數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0012]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,還包括步驟:在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在檢測到操作系統(tǒng)仍在讀取地址偏移連續(xù)的數(shù)據(jù)的情況下,保持暫停所述預(yù)讀取線程的讀取,直到檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù)。
[0013]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,還包括步驟:在檢測到操作系統(tǒng)對磁盤進行自檢時,暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),直到檢測到磁盤自檢結(jié)束。
[0014]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法中,還包括步驟:在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在檢測到操作系統(tǒng)要從磁盤中讀取的數(shù)據(jù)中的部分包括在所述預(yù)讀取數(shù)據(jù)中的情況下,將這部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀?。徊⑶以陬A(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0015]依據(jù)本發(fā)明的第二方面,提供了一種電子設(shè)備操作系統(tǒng)啟動加速的裝置,包括:預(yù)讀取模塊,用于在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù);緩存模塊,用于將預(yù)讀取模塊讀取的預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取,預(yù)讀取模塊在操作系統(tǒng)啟動過程中,利用預(yù)讀取線程繼續(xù)讀取預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停預(yù)讀取線程的讀取。
[0016]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,還包括:預(yù)讀取數(shù)據(jù)生成模塊,用于記錄操作系統(tǒng)啟動的信息,并且基于信息以及用于之前一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。
[0017]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,還包括:磁盤碎片整理檢測模塊,用于檢測磁盤碎片整理時數(shù)據(jù)移動的情況,預(yù)讀取數(shù)據(jù)生成模塊根據(jù)磁盤碎片整理檢測模塊檢測到的數(shù)據(jù)移動的情況,重新生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。
[0018]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,操作系統(tǒng)啟動的信息包括操作系統(tǒng)啟動所花費的時間、操作系統(tǒng)從內(nèi)存中讀取所緩存的預(yù)讀取數(shù)據(jù)的情況。
[0019]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,預(yù)讀取模塊用于:在小于或等于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件;以及在大于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件。
[0020]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,預(yù)讀取模塊用于在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取數(shù)據(jù),并且緩存模塊用于將數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0021]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,所述預(yù)讀取模塊在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在檢測到操作系統(tǒng)仍在讀取地址偏移連續(xù)的數(shù)據(jù)的情況下,保持暫停所述預(yù)讀取線程的讀取,直到檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù)。
[0022]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,所述預(yù)讀取模塊在檢測到操作系統(tǒng)對磁盤進行自檢時,暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),直到檢測到磁盤自檢結(jié)束。
[0023]可選地,在根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置中,所述預(yù)讀取模塊在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在檢測到操作系統(tǒng)要從磁盤中讀取的數(shù)據(jù)中的部分包括在所述預(yù)讀取數(shù)據(jù)中的情況下,將這部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取;并且在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,所述預(yù)讀取模塊利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0024]本發(fā)明提供了上述電子設(shè)備操作系統(tǒng)啟動加速的方法和裝置。根據(jù)本發(fā)明的實施例,能夠在電子設(shè)備啟動時,操作系統(tǒng)啟動前,創(chuàng)建預(yù)讀取線程,盡可能早地將操作系統(tǒng)啟動所需要的數(shù)據(jù)讀取出來,并緩存到內(nèi)存中以供操作系統(tǒng)啟動時使用,避免了磁盤請求隊列阻塞,從而使操作系統(tǒng)啟動加速;根據(jù)本發(fā)明的實施例,能夠通過一次或少數(shù)幾次從磁盤中讀取出操作系統(tǒng)啟動所需的預(yù)讀取數(shù)據(jù),將其合并成一個數(shù)據(jù)塊并緩存到內(nèi)存中,加快了操作系統(tǒng)啟動的速度;根據(jù)本發(fā)明的實施例,預(yù)讀取線程從磁盤中讀取數(shù)據(jù)與操作系統(tǒng)從內(nèi)存中讀取數(shù)據(jù)能夠同時進行,減少了操作系統(tǒng)啟動所需的時間;根據(jù)本發(fā)明的實施例,通過對預(yù)讀取線程從磁盤中讀取數(shù)據(jù)、操作系統(tǒng)從內(nèi)存中讀取數(shù)據(jù)、以及操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求的適當(dāng)安排,并且在需要時暫停預(yù)讀取線程從磁盤中讀取數(shù)據(jù),為操作系統(tǒng)從磁盤讀取數(shù)據(jù)讓路,能夠?qū)崿F(xiàn)快速讀取數(shù)據(jù),同時滿足操作請求的時序性。
[0025]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】

【附圖說明】
[0026]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0027]圖1是根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法的流程圖;以及
[0028]圖2是根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0029]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0030]在本發(fā)明的實施例中,電子設(shè)備可以是計算機、移動電話、平板電腦、視頻播放器、電子閱讀器、數(shù)碼相框等。本發(fā)明的原理適用于任何電子設(shè)備的操作系統(tǒng),包括、但不限于:計算機的Windows、Linux、Mac OS、Unix等桌面操作系統(tǒng);移動電話、平板電腦、視頻播放器、電子閱讀器、數(shù)碼相框的iOS、Android、Windows Phone、Symbian等移動操作系統(tǒng)。
[0031]在下文中,將以計算機作為電子設(shè)備的例子、以Windows作為操作系統(tǒng)的例子,對本發(fā)明的原理進行示例性地描述。然而,這只是為了以具體的示例描述本發(fā)明,以幫助讀者理解本發(fā)明的原理,本發(fā)明的范圍不限于此,而是可以適用于任何電子設(shè)備和任何操作系統(tǒng)。
[0032]圖1示出了根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的方法的流程圖。
[0033]如圖1所示,所述方法100始于步驟S110,在步驟SllO中,在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。
[0034]根據(jù)本發(fā)明的實施例,可以在計算機啟動時、即BOOT驅(qū)動初始化時,從注冊表中獲取預(yù)先定義的預(yù)讀取數(shù)據(jù)的信息(例如這些數(shù)據(jù)的偏移地址),并且創(chuàng)建預(yù)讀取線程,在磁盤設(shè)備附加好后,利用該預(yù)讀取線程按照從注冊表獲取到的預(yù)讀取數(shù)據(jù)的信息,開始從磁盤中讀取所述預(yù)先定義的預(yù)讀取數(shù)據(jù)。由于預(yù)讀取線程與操作系統(tǒng)是并發(fā)運行的,且預(yù)讀取線程先于操作系統(tǒng)運行,因此操作系統(tǒng)啟動所要讀取的數(shù)據(jù)會盡可能早地被預(yù)讀取線程讀取出來。
[0035]可選地,所述磁盤可以是任何類型的用于在電子設(shè)備中實現(xiàn)存儲功能的磁性存儲設(shè)備,包括、但不限于:普通硬盤、混合式硬盤、固態(tài)硬盤等等。而所述磁盤采用各種格式的文件系統(tǒng),包括、但不限于:FAT、FAT32、NTFS等等。
[0036]如圖1所示,在步驟SlOl之后,執(zhí)行步驟S103,其中,將所述預(yù)讀取線程讀取的所述預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取。
[0037]可選地,所述內(nèi)存可以采用半導(dǎo)體存儲單元,包括、但不限于:隨機存儲器(RAM)、只讀存儲器(ROM)、高速緩沖存儲器(Cache)等等。一般來說,內(nèi)存具有比磁盤更快的讀寫速度。在電子設(shè)備的運行過程中,一般會將程序和數(shù)據(jù)從磁盤調(diào)入到內(nèi)存中來進行操作和處理。
[0038]在步驟S103之后,可以執(zhí)行步驟S105,其中,在操作系統(tǒng)啟動過程中,利用所述預(yù)讀取線程繼續(xù)讀取所述預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取。
[0039]在步驟S105中,在操作系統(tǒng)開始啟動(一般要在讀取系統(tǒng)驅(qū)動文件之后再進行)之后,繼續(xù)利用所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),即,在操作系統(tǒng)啟動后從內(nèi)存中讀取所述預(yù)讀取數(shù)據(jù)的同時,預(yù)讀取線程并發(fā)地繼續(xù)讀取所述預(yù)讀取數(shù)據(jù)。預(yù)讀取線程在系統(tǒng)底層操作,不需要解析數(shù)據(jù)結(jié)構(gòu),即使在操作系統(tǒng)存在讀取阻塞的情況下,預(yù)讀取線程仍然可以正常讀取數(shù)據(jù)。操作系統(tǒng)在讀取文件系統(tǒng)元數(shù)據(jù)和文件碎片數(shù)據(jù)時,會將請求和偏移分散著一次一次讀取,速度非常慢,而根據(jù)本發(fā)明的方案,預(yù)讀取線程可以在底層將要讀取的數(shù)據(jù)合并為一個數(shù)據(jù)塊,從磁盤中一次性地(或者用很少的次數(shù))將數(shù)據(jù)讀取出來。
[0040]根據(jù)本發(fā)明的實施例,在上述步驟SlOl和S105中,利用預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù)的步驟可以包括:在小于或等于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件;以及在大于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件。
[0041]在現(xiàn)有技術(shù)方法中,例如微軟公司的操作系統(tǒng)Windows XP,采用磁盤請求隊列的方式讀取數(shù)據(jù),往往會存在上千個請求排隊,此時,如果系統(tǒng)的主線程發(fā)出請求,就會根據(jù)其偏移排在適當(dāng)?shù)奈恢?,往往都是在隊尾。根?jù)本發(fā)明的方案,盡量將系統(tǒng)要讀取的數(shù)據(jù)利用預(yù)讀取線程提前讀取并緩存到內(nèi)存中,并采取上述方式避免隊列阻塞。即,在小于或等于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件,此時系統(tǒng)時間間隔很短,無需考慮時間順序。而在大于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件,這主要是按照系統(tǒng)初始化時處理文件的順序來進行讀取。
[0042]可選地,所述預(yù)先定義的時間間隔可以根據(jù)實際需要來選取,一個示例可以是200毫秒。在預(yù)先定義的時間間隔是200毫秒的情況下,如果第一毫秒訪問文件A,第二毫秒訪問文件B,則可以一起讀出這兩個文件;而如果第一秒訪問文件A,第二秒訪問文件B,則需要按照時間順序進行處理。按照上述方式,在接收到請求時,可以保證只有兩個請求在排隊。由于請求只能一個一個地進行處理,因此磁盤隊列中存在兩個請求與存在上千個請求對于磁盤IO的吞吐量是一樣的。
[0043]如果操作系統(tǒng)在啟動過程中,發(fā)現(xiàn)所述預(yù)讀取線程緩存到內(nèi)存的預(yù)讀取數(shù)據(jù)之外的數(shù)據(jù)中沒有所需的數(shù)據(jù),此時操作系統(tǒng)會向磁盤請求讀取數(shù)據(jù),在上述步驟S105中,在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,可以在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取,例如暫停30毫秒,這樣,就可以保證操作系統(tǒng)能夠及時讀取到數(shù)據(jù),而不會因磁盤隊列問題被堵塞。當(dāng)然,本領(lǐng)域技術(shù)人員可以根據(jù)實際需要來選擇上述預(yù)先定義的時間段,本發(fā)明的范圍不僅限于30毫秒。
[0044]可選地,根據(jù)本發(fā)明的一個實施例,方法100還可以包括以下步驟:在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到所述數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取所述數(shù)據(jù),并將所述數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。仍以30毫秒的預(yù)先定義的時間段為例,在暫停所述預(yù)讀取線程的讀取達(dá)30毫秒之后,如果此時操作系統(tǒng)仍未從磁盤中獲取到所需的數(shù)據(jù),則可以利用預(yù)讀取線程讀取所述數(shù)據(jù),并將所述數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0045]可選地,根據(jù)本發(fā)明的一個實施例,方法100還可以包括以下步驟:在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在檢測到操作系統(tǒng)仍在讀取地址偏移連續(xù)的數(shù)據(jù)的情況下,保持暫停所述預(yù)讀取線程的讀取,直到檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù)。操作系統(tǒng)在連續(xù)讀取磁盤中地址偏移連續(xù)的數(shù)據(jù)時,磁頭連續(xù)移動,讀取效率較高,此時,不便打斷操作系統(tǒng)的讀取,而一旦檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù),則可以停止操作系統(tǒng)的讀取,恢復(fù)預(yù)讀取線程對于磁盤的讀取。
[0046]可選地,根據(jù)本發(fā)明的一個實施例,方法100還可以包括以下步驟:在檢測到操作系統(tǒng)對磁盤進行自檢時,暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),直到檢測到磁盤自檢結(jié)束。如果在操作系統(tǒng)對磁盤進行自檢時,所述預(yù)讀取線程仍讀取預(yù)讀取數(shù)據(jù),則可能會導(dǎo)致磁盤自檢異常,因此此時需要暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù)。
[0047]可選地,根據(jù)本發(fā)明的一個實施例,方法100還可以包括以下步驟:在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在檢測到操作系統(tǒng)要從磁盤中讀取的數(shù)據(jù)中的部分包括在所述預(yù)讀取數(shù)據(jù)中的情況下,將這部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀??;并且在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。具體來說,操作系統(tǒng)要從磁盤讀取的數(shù)據(jù)可能會存在部分已經(jīng)包括預(yù)讀取數(shù)據(jù)中、而其它部分未包括在其中的情況,此時,可以將該部分?jǐn)?shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取,而在預(yù)先定義的時間段(例如如上所述的30毫秒)后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,就可以利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。由此,完成了一個數(shù)據(jù)讀取請求切割的過程。
[0048]可選地,在本發(fā)明的一個實施例中,上述方法100還可以包括以下步驟:記錄操作系統(tǒng)啟動的信息,并且基于所述信息以及用于之前一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),并且按照系統(tǒng)啟動時讀取的優(yōu)先級對所述預(yù)先定義的預(yù)讀取數(shù)據(jù)中的數(shù)據(jù)進行排序。其中,所述操作系統(tǒng)啟動的信息包括操作系統(tǒng)啟動所花費的時間、操作系統(tǒng)從內(nèi)存中讀取所緩存的預(yù)讀取數(shù)據(jù)的情況(例如,緩存的預(yù)讀取數(shù)據(jù)命中操作系統(tǒng)請求的比例)。例如,可以基于上述操作系統(tǒng)啟動的信息以及例如前三次操作系統(tǒng)啟動的預(yù)讀取數(shù)據(jù),來生成用于之后的操作系統(tǒng)啟動的預(yù)讀取數(shù)據(jù)。優(yōu)選地,在生成預(yù)讀取數(shù)據(jù)時,既要保證能夠快速讀取,又要在操作系統(tǒng)請求之前將所需的數(shù)據(jù)讀取出來。
[0049]可選地,在本發(fā)明的一個實施例中,所述方法100還可以包括步驟:檢測磁盤碎片整理時數(shù)據(jù)移動的情況,并且根據(jù)所述數(shù)據(jù)移動的情況,重新生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。由于預(yù)讀取線程是根據(jù)磁盤偏移與大小來讀取預(yù)讀取數(shù)據(jù)的,因此在用戶執(zhí)行磁盤碎片整理操作之后,原有數(shù)據(jù)的磁盤偏移可能會發(fā)生改變,導(dǎo)致預(yù)讀取線程無法正確讀取到預(yù)讀取數(shù)據(jù)。此時,利用上述可選步驟,可以在檢測到磁盤碎片整理時數(shù)據(jù)移動的情況下,根據(jù)數(shù)據(jù)移動來重新生成正確的預(yù)讀取數(shù)據(jù),以用于之后的操作系統(tǒng)啟動。
[0050]與上述方法100相對應(yīng),本發(fā)明還提供了一種電子設(shè)備操作系統(tǒng)啟動加速的裝置200。圖2是根據(jù)本發(fā)明的實施例的電子設(shè)備操作系統(tǒng)啟動加速的裝置的結(jié)構(gòu)示意圖。
[0051]如圖2所示,所述裝置200主要包括預(yù)讀取模塊201以及緩存模塊203。根據(jù)本發(fā)明的實施例,所述預(yù)讀取模塊201用于在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù);所述緩存模塊203用于將所述預(yù)讀取模塊讀取的所述預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取。所述預(yù)讀取模塊201在操作系統(tǒng)啟動過程中,利用所述預(yù)讀取線程繼續(xù)讀取所述預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取??蛇x地,所述預(yù)讀取模塊201可以用于執(zhí)行上述方法100中的步驟SlOl以及S105,而所述緩存模塊203可以用于執(zhí)行上述方法100中的步驟S103。
[0052]根據(jù)本發(fā)明的實施例,在電子設(shè)備啟動時,所述預(yù)讀取模塊201創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。根據(jù)本發(fā)明的實施例,所述預(yù)讀取模塊201可以在計算機啟動時、即BOOT驅(qū)動初始化時,從注冊表中獲取預(yù)先定義的預(yù)讀取數(shù)據(jù)的信息(例如這些數(shù)據(jù)的偏移地址),并且創(chuàng)建預(yù)讀取線程,在磁盤設(shè)備附加好后,所述預(yù)讀取模塊201利用該預(yù)讀取線程按照從注冊表獲取到的預(yù)讀取數(shù)據(jù)的信息,開始從磁盤中讀取所述預(yù)先定義的預(yù)讀取數(shù)據(jù)。由于預(yù)讀取線程與操作系統(tǒng)是并發(fā)運行的,且預(yù)讀取線程先于操作系統(tǒng)運行,因此操作系統(tǒng)啟動所要讀取的數(shù)據(jù)會盡可能早地被所述預(yù)讀取模塊201利用預(yù)讀取線程讀取出來。
[0053]可選地,所述磁盤可以是任何類型的用于在電子設(shè)備中實現(xiàn)存儲功能的磁性存儲設(shè)備,包括、但不限于:普通硬盤、混合式硬盤、固態(tài)硬盤等等。而所述磁盤采用各種格式的文件系統(tǒng),包括、但不限于:FAT、FAT32、NTFS等等。
[0054]之后,所述緩存模塊203將所述預(yù)讀取線程讀取的所述預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取。
[0055]可選地,所述內(nèi)存可以采用半導(dǎo)體存儲單元,包括、但不限于:隨機存儲器(RAM)、只讀存儲器(ROM)、高速緩沖存儲器(Cache)等等。一般來說,內(nèi)存具有比磁盤更快的讀寫速度。在電子設(shè)備的運行過程中,一般會將程序和數(shù)據(jù)從磁盤調(diào)入到內(nèi)存中來進行操作和處理。
[0056]接下來,在操作系統(tǒng)啟動過程中,所述預(yù)讀取模塊201利用所述預(yù)讀取線程繼續(xù)讀取所述預(yù)讀取數(shù)據(jù),并且在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取。
[0057]其中,在操作系統(tǒng)開始啟動(一般要在讀取系統(tǒng)驅(qū)動文件之后再進行)之后,所述預(yù)讀取模塊201繼續(xù)利用所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),即,在操作系統(tǒng)啟動后從內(nèi)存中讀取所述預(yù)讀取數(shù)據(jù)的同時,所述預(yù)讀取模塊201利用預(yù)讀取線程并發(fā)地繼續(xù)讀取所述預(yù)讀取數(shù)據(jù)。所述預(yù)讀取模塊201利用預(yù)讀取線程在系統(tǒng)底層操作,不需要解析數(shù)據(jù)結(jié)構(gòu),即使在操作系統(tǒng)存在讀取阻塞的情況下,所述預(yù)讀取模塊201仍然可以利用預(yù)讀取線程正常讀取數(shù)據(jù)。操作系統(tǒng)在讀取文件系統(tǒng)元數(shù)據(jù)和文件碎片數(shù)據(jù)時,會將請求和偏移分散著一次一次讀取,速度非常慢,而根據(jù)本發(fā)明的方案,所述預(yù)讀取模塊201可以利用預(yù)讀取線程在底層將要讀取的數(shù)據(jù)合并為一個數(shù)據(jù)塊,從磁盤中一次性地(或者用很少的次數(shù))將數(shù)據(jù)讀取出來。
[0058]根據(jù)本發(fā)明的實施例,在上述操作中,所述預(yù)讀取模塊201在利用預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù)時,在小于或等于預(yù)先定義的讀取時間間隔的情況下,所述預(yù)讀取模塊201可以利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件;而在大于預(yù)先定義的讀取時間間隔的情況下,所述預(yù)讀取模塊201可以利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件。
[0059]在現(xiàn)有技術(shù)方法中,例如微軟公司的操作系統(tǒng)Windows XP,采用磁盤請求隊列的方式讀取數(shù)據(jù),往往會存在上千個請求排隊,此時,如果系統(tǒng)的主線程發(fā)出請求,就會根據(jù)其偏移排在適當(dāng)?shù)奈恢?,往往都是在隊尾。根?jù)本發(fā)明的方案,所述預(yù)讀取模塊201盡量將系統(tǒng)要讀取的數(shù)據(jù)利用預(yù)讀取線程提前讀取并緩存到內(nèi)存中,并采取上述方式避免隊列阻塞。即,在小于或等于預(yù)先定義的讀取時間間隔的情況下,所述預(yù)讀取模塊201利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件,此時系統(tǒng)時間間隔很短,無需考慮時間順序。而在大于預(yù)先定義的讀取時間間隔的情況下,所述預(yù)讀取模塊201利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件,這主要是按照系統(tǒng)初始化時處理文件的順序來進行讀取。
[0060]可選地,所述預(yù)先定義的時間間隔可以根據(jù)實際需要來選取,一個示例可以是200毫秒。在預(yù)先定義的時間間隔是200毫秒的情況下,如果第一毫秒訪問文件A,第二毫秒訪問文件B,則可以一起讀出這兩個文件;而如果第一秒訪問文件A,第二秒訪問文件B,則需要按照時間順序進行處理。按照上述方式,在接收到請求時,可以保證只有兩個請求在排隊。由于請求只能一個一個地進行處理,因此磁盤隊列中存在兩個請求與存在上千個請求對于磁盤IO的吞吐量是一樣的。
[0061]如果操作系統(tǒng)在啟動過程中,發(fā)現(xiàn)所述預(yù)讀取線程緩存到內(nèi)存的預(yù)讀取數(shù)據(jù)之外的數(shù)據(jù)中沒有所需的數(shù)據(jù),此時操作系統(tǒng)會向磁盤請求讀取數(shù)據(jù),在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,所述預(yù)讀取模塊201可以在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取,例如暫停30毫秒,這樣,就可以保證操作系統(tǒng)能夠及時讀取到數(shù)據(jù),而不會因磁盤隊列問題被堵塞。當(dāng)然,本領(lǐng)域技術(shù)人員可以根據(jù)實際需要來選擇上述預(yù)先定義的時間段,本發(fā)明的范圍不僅限于30毫秒。
[0062]可選地,根據(jù)本發(fā)明的一個實施例,在所述預(yù)讀取模塊201接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到所述數(shù)據(jù)的情況下,所述預(yù)讀取模塊201利用預(yù)讀取線程讀取所述數(shù)據(jù),并將所述數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。仍以30毫秒的預(yù)先定義的時間段為例,在所述預(yù)讀取模塊201暫停所述預(yù)讀取線程的讀取達(dá)30毫秒之后,如果此時操作系統(tǒng)仍未從磁盤中獲取到所需的數(shù)據(jù),則所述預(yù)讀取模塊201可以利用預(yù)讀取線程讀取所述數(shù)據(jù),并將所述數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0063]可選地,根據(jù)本發(fā)明的一個實施例,所述預(yù)讀取模塊201可以在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在檢測到操作系統(tǒng)仍在讀取地址偏移連續(xù)的數(shù)據(jù)的情況下,保持暫停所述預(yù)讀取線程的讀取,直到檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù)。操作系統(tǒng)在連續(xù)讀取磁盤中地址偏移連續(xù)的數(shù)據(jù)時,磁頭連續(xù)移動,讀取效率較高,此時,所述預(yù)讀取模塊201不便打斷操作系統(tǒng)的讀取,而一旦檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù),則所述預(yù)讀取模塊201可以停止操作系統(tǒng)的讀取,恢復(fù)預(yù)讀取線程對于磁盤的讀取。
[0064]可選地,根據(jù)本發(fā)明的一個實施例,所述預(yù)讀取模塊201可以在檢測到操作系統(tǒng)對磁盤進行自檢時,暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),直到檢測到磁盤自檢結(jié)束。如果在操作系統(tǒng)對磁盤進行自檢時,所述預(yù)讀取模塊201仍利用所述預(yù)讀取線程讀取預(yù)讀取數(shù)據(jù),則可能會導(dǎo)致磁盤自檢異常,因此此時需要暫停所述預(yù)讀取模塊201利用所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù)。
[0065]可選地,根據(jù)本發(fā)明的一個實施例,所述預(yù)讀取模塊201可以在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在檢測到操作系統(tǒng)要從磁盤中讀取的數(shù)據(jù)中的部分包括在所述預(yù)讀取數(shù)據(jù)中的情況下,將這部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀??;并且在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,所述預(yù)讀取模塊201利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。具體來說,操作系統(tǒng)要從磁盤讀取的數(shù)據(jù)可能會存在部分已經(jīng)包括預(yù)讀取數(shù)據(jù)中、而其它部分未包括在其中的情況,此時,所述預(yù)讀取模塊201可以將該部分?jǐn)?shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取,而在預(yù)先定義的時間段(例如如上所述的30毫秒)后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,所述預(yù)讀取模塊201就可以利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。由此,完成了一個數(shù)據(jù)讀取請求切割的過程。
[0066]可選地,在本發(fā)明的一個實施例中,所述裝置200還可以包括預(yù)讀取數(shù)據(jù)生成模塊205,其用于記錄操作系統(tǒng)啟動的信息,并且基于所述信息以及用于之前一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),并且按照系統(tǒng)啟動時讀取的優(yōu)先級對所述預(yù)先定義的預(yù)讀取數(shù)據(jù)中的數(shù)據(jù)進行排序。其中,所述操作系統(tǒng)啟動的信息包括操作系統(tǒng)啟動所花費的時間、操作系統(tǒng)從內(nèi)存中讀取所緩存的預(yù)讀取數(shù)據(jù)的情況(例如,緩存的預(yù)讀取數(shù)據(jù)命中操作系統(tǒng)請求的比例)。例如,預(yù)讀取數(shù)據(jù)生成模塊205可以基于上述操作系統(tǒng)啟動的信息以及例如前三次操作系統(tǒng)啟動的預(yù)讀取數(shù)據(jù),來生成用于之后的操作系統(tǒng)啟動的預(yù)讀取數(shù)據(jù)。優(yōu)選地,在預(yù)讀取數(shù)據(jù)生成模塊205生成預(yù)讀取數(shù)據(jù)時,既要保證能夠快速讀取,又要在操作系統(tǒng)請求之前將所需的數(shù)據(jù)讀取出來。
[0067]可選地,在本發(fā)明的一個實施例中,所述裝置200還可以包括磁盤碎片整理檢測模塊207,用于檢測磁盤碎片整理時數(shù)據(jù)移動的情況,預(yù)讀取數(shù)據(jù)生成模塊205根據(jù)所述數(shù)據(jù)移動的情況,重新生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。由于預(yù)讀取模塊201是利用預(yù)讀取線程根據(jù)磁盤偏移與大小來讀取預(yù)讀取數(shù)據(jù)的,因此在用戶執(zhí)行磁盤碎片整理操作之后,原有數(shù)據(jù)的磁盤偏移可能會發(fā)生改變,導(dǎo)致預(yù)讀取線程無法正確讀取到預(yù)讀取數(shù)據(jù)。此時,利用上述操作,可以在磁盤碎片整理檢測模塊207檢測到磁盤碎片整理時數(shù)據(jù)移動的情況下,預(yù)讀取數(shù)據(jù)生成模塊205根據(jù)數(shù)據(jù)移動來重新生成正確的預(yù)讀取數(shù)據(jù),以用于之后的操作系統(tǒng)啟動。
[0068]本發(fā)明提供了上述電子設(shè)備操作系統(tǒng)啟動加速的方法和裝置。根據(jù)本發(fā)明的實施例,能夠在電子設(shè)備啟動時,操作系統(tǒng)啟動前,創(chuàng)建預(yù)讀取線程,盡可能早地將操作系統(tǒng)啟動所需要的數(shù)據(jù)讀取出來,并緩存到內(nèi)存中以供操作系統(tǒng)啟動時使用,避免了磁盤請求隊列阻塞,從而使操作系統(tǒng)啟動加速;根據(jù)本發(fā)明的實施例,能夠通過一次或少數(shù)幾次從磁盤中讀取出操作系統(tǒng)啟動所需的預(yù)讀取數(shù)據(jù),將其合并成一個數(shù)據(jù)塊并緩存到內(nèi)存中,加快了操作系統(tǒng)啟動的速度;根據(jù)本發(fā)明的實施例,預(yù)讀取線程從磁盤中讀取數(shù)據(jù)與操作系統(tǒng)從內(nèi)存中讀取數(shù)據(jù)能夠同時進行,減少了操作系統(tǒng)啟動所需的時間;根據(jù)本發(fā)明的實施例,通過對預(yù)讀取線程從磁盤中讀取數(shù)據(jù)、操作系統(tǒng)從內(nèi)存中讀取數(shù)據(jù)、以及操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求的適當(dāng)安排,并且在需要時暫停預(yù)讀取線程從磁盤中讀取數(shù)據(jù),為操作系統(tǒng)從磁盤讀取數(shù)據(jù)讓路,能夠?qū)崿F(xiàn)快速讀取數(shù)據(jù),同時滿足操作請求的時序性。
[0069]在此提供的方法和裝置不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0070]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0071]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0072]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的裝置中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個裝置中。可以把實施例中的若干模塊組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者模塊中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的替代特征來代替。
[0073]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0074]本發(fā)明的各個裝置實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP )來實現(xiàn)根據(jù)本發(fā)明實施例的裝置中的一些或者全部模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0075]應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0076]本發(fā)明還公開了 Al —種電子設(shè)備操作系統(tǒng)啟動加速的裝置,包括:
[0077]預(yù)讀取模塊,用于在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù);
[0078]緩存模塊,用于將所述預(yù)讀取模塊讀取的所述預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取,
[0079]所述預(yù)讀取模塊在操作系統(tǒng)啟動過程中,利用所述預(yù)讀取線程繼續(xù)讀取所述預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取。
[0080]A2.如權(quán)利要求Al所述的裝置,還包括:
[0081]預(yù)讀取數(shù)據(jù)生成模塊,用于記錄操作系統(tǒng)啟動的信息,并且基于所述信息以及用于之前一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),并且按照系統(tǒng)啟動時讀取的優(yōu)先級對所述預(yù)先定義的預(yù)讀取數(shù)據(jù)中的數(shù)據(jù)進行排序。
[0082]A3.如權(quán)利要求A2所述的裝置,還包括:
[0083]磁盤碎片整理檢測模塊,用于檢測磁盤碎片整理時數(shù)據(jù)移動的情況,
[0084]所述預(yù)讀取數(shù)據(jù)生成模塊根據(jù)所述磁盤碎片整理檢測模塊檢測到的數(shù)據(jù)移動的情況,重新生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。
[0085]A4.如權(quán)利要求A2所述的裝置,其中所述操作系統(tǒng)啟動的信息包括操作系統(tǒng)啟動所花費的時間、操作系統(tǒng)從內(nèi)存中讀取所緩存的預(yù)讀取數(shù)據(jù)的情況。
[0086]A5.如權(quán)利要求Al至A4中的任一項所述的裝置,其中所述預(yù)讀取模塊用于:
[0087]在小于或等于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件;以及
[0088]在大于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件。
[0089]A6.如權(quán)利要求Al至A4中的任一項所述的裝置,其中所述預(yù)讀取模塊用于在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到所述數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取所述數(shù)據(jù),
[0090]并且所述緩存模塊用于將所述數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
[0091]A7.如權(quán)利要求Al至A4中的任一項所述的裝置,其中所述預(yù)讀取模塊在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在檢測到操作系統(tǒng)仍在讀取地址偏移連續(xù)的數(shù)據(jù)的情況下,保持暫停所述預(yù)讀取線程的讀取,直到檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù)。
[0092]A8.如權(quán)利要求Al至A4中的任一項所述的裝置,其中所述預(yù)讀取模塊在檢測到操作系統(tǒng)對磁盤進行自檢時,暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),直到檢測到磁盤自檢結(jié)束。
[0093]A9.如權(quán)利要求Al至A4中的任一項所述的裝置,其中所述預(yù)讀取模塊在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在檢測到操作系統(tǒng)要從磁盤中讀取的數(shù)據(jù)中的部分包括在所述預(yù)讀取數(shù)據(jù)中的情況下,將這部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取;并且在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,所述預(yù)讀取模塊利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
【權(quán)利要求】
1.一種電子設(shè)備操作系統(tǒng)啟動加速的方法,包括以下步驟: 在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù); 將所述預(yù)讀取線程讀取的所述預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀?。灰约? 在操作系統(tǒng)啟動過程中,利用所述預(yù)讀取線程繼續(xù)讀取所述預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取。
2.如權(quán)利要求1所述的方法,還包括步驟: 記錄操作系統(tǒng)啟動的信息,并且基于所述信息以及用于之前一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù),并且按照系統(tǒng)啟動時讀取的優(yōu)先級對所述預(yù)先定義的預(yù)讀取數(shù)據(jù)中的數(shù)據(jù)進行排序。
3.如權(quán)利要求2所述的方法,還包括步驟: 檢測磁盤碎片整理時數(shù)據(jù)移動的情況,并且根據(jù)所述數(shù)據(jù)移動的情況,重新生成用于之后一次或多次操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù)。
4.如權(quán)利要求2所述的方法,其中所述操作系統(tǒng)啟動的信息包括操作系統(tǒng)啟動所花費的時間、操作系統(tǒng)從內(nèi)存中讀取所緩存的預(yù)讀取數(shù)據(jù)的情況。
5.如權(quán)利要求1至4中的任一項所述的方法,其中利用預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù)的步驟包括: 在小于或等于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照磁盤排序和磁盤偏移同時讀取兩個文件;以及` 在大于預(yù)先定義的讀取時間間隔的情況下,利用兩個讀取請求按照操作系統(tǒng)啟動時處理文件的時間順序先后讀取兩個文件。
6.如權(quán)利要求1至4中的任一項所述的方法,還包括步驟: 在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到所述數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取所述數(shù)據(jù),并將所述數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
7.如權(quán)利要求1至4中的任一項所述的方法,還包括步驟: 在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段后,在檢測到操作系統(tǒng)仍在讀取地址偏移連續(xù)的數(shù)據(jù)的情況下,保持暫停所述預(yù)讀取線程的讀取,直到檢測到操作系統(tǒng)讀取地址偏移不連續(xù)的數(shù)據(jù)。
8.如權(quán)利要求1至4中的任一項所述的方法,還包括步驟: 在檢測到操作系統(tǒng)對磁盤進行自檢時,暫停所述預(yù)讀取線程讀取所述預(yù)讀取數(shù)據(jù),直到檢測到磁盤自檢結(jié)束。
9.如權(quán)利要求1至4中的任一項所述的方法,還包括步驟: 在接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在檢測到操作系統(tǒng)要從磁盤中讀取的數(shù)據(jù)中的部分包括在所述預(yù)讀取數(shù)據(jù)中的情況下,將這部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀?。徊⑶以陬A(yù)先定義的時間段后,在操作系統(tǒng)未從磁盤中獲取到其它部分的數(shù)據(jù)的情況下,利用預(yù)讀取線程讀取所述其它部分的數(shù)據(jù),并將所述其它部分的數(shù)據(jù)緩存到內(nèi)存中以供操作系統(tǒng)讀取。
10.一種電子設(shè)備操作系統(tǒng)啟動加速的裝置,包括: 預(yù)讀取模塊,用于在電子設(shè)備啟動時,創(chuàng)建預(yù)讀取線程,以利用預(yù)讀取線程開始從電子設(shè)備的磁盤中讀取用于操作系統(tǒng)啟動的預(yù)先定義的預(yù)讀取數(shù)據(jù); 緩存模塊,用于將所述預(yù)讀取模塊讀取的所述預(yù)讀取數(shù)據(jù)緩存到電子設(shè)備的內(nèi)存中,以供操作系統(tǒng)啟動時讀取, 所述預(yù)讀取模塊在操作系統(tǒng)啟動過程中,利用所述預(yù)讀取線程繼續(xù)讀取所述預(yù)讀取數(shù)據(jù),并且接收到操作系統(tǒng)從磁盤中讀取數(shù)據(jù)的請求時,在預(yù)先定義的時間段內(nèi)暫停所述預(yù)讀取線程的讀取。
【文檔編號】G06F9/445GK103677900SQ201310575119
【公開日】2014年3月26日 申請日期:2013年11月15日 優(yōu)先權(quán)日:2013年11月15日
【發(fā)明者】李常坤, 彭巖, 白川, 湯迪斌 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1