国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      預(yù)測性的軟件流傳輸?shù)闹谱鞣椒?

      文檔序號:6443682閱讀:233來源:國知局
      專利名稱:預(yù)測性的軟件流傳輸?shù)闹谱鞣椒?br> 預(yù)測性的軟件流傳輸
      背景技術(shù)
      傳統(tǒng)上,當(dāng)在機(jī)器上執(zhí)行軟件時,在軟件可以運(yùn)行之前必須將整款軟件安裝在該機(jī)器上。然而,有可能使用流傳輸技術(shù)從遠(yuǎn)離將要執(zhí)行軟件的機(jī)器的位置提供軟件。在流傳輸情景中,機(jī)器A可以執(zhí)行從機(jī)器B流傳輸至機(jī)器A的軟件。這樣一來,機(jī)器A可以執(zhí)行一款軟件(a piece of software)的一些組件,即便機(jī)器A上存在的組件少于全部組件。針對在其上執(zhí)行軟件的機(jī)器來說,一種用于實(shí)現(xiàn)此類型軟件流傳輸?shù)姆绞绞前葱枵埱筌浖M件。舉個例子,假設(shè)該軟件是一個游戲,在該游戲中,用戶從一個場景行進(jìn)到另一個場景,并且選擇下一步去往哪里。如果每一個場景都是軟件的一個組件,那么用戶選擇
      去往的方向確定了下一步必須執(zhí)行哪一個場景-由此確定必須執(zhí)行哪一個組件。作為響
      應(yīng),游戲可以獲取組件,并且簡單地等待了解用戶想要去哪兒,并且請求與用戶的選擇相對應(yīng)的組件。雖然游戲提供被分成組件的軟件的簡單示例,但是理論上幾乎任何軟件都可以采用這種方式來模塊化——例如文字處理器可以具有一個用于“打印預(yù)覽”功能的組件,另一個用于“打印”的組件,還有一個用于“繪制表格”的組件等等。在以這種方式流傳輸軟件時,有可能會出現(xiàn)一個問題,那就是用戶可能必須等待組件被下載。如果組件只在用戶已經(jīng)請求執(zhí)行這些組件的時候才被下載,那么在首次使用組件時該組件在用戶的機(jī)器上將是不可用的,并且用戶將必須等待該組件被下載。關(guān)于軟件流傳輸平臺質(zhì)量的一個量度是用戶等待使用程序的正在下載的部分所耗費(fèi)的時間量(或者相反缺乏時間量)。通過該量度,按需平臺可以提供低于所能實(shí)現(xiàn)的質(zhì)量。

      發(fā)明內(nèi)容
      在軟件流傳輸平臺中,軟件可以以預(yù)測方式被流傳輸,使得可以在實(shí)際請求使用軟件組件之前將其下載到使用這些組件的機(jī)器。為了高效使用有限的傳輸帶寬,該平臺嘗試預(yù)測接下來可能使用哪一個(些)組件,然后則在實(shí)際請求使用這些組件之前使用另外的閑置的資源來下載這些組件。為了支持組件的預(yù)測性下載,軟件被分成了單元,并且構(gòu)建了指示軟件數(shù)據(jù)的每一個單元成為接下來將要下載的軟件數(shù)據(jù)單元的可能性模型。該模型是依照歷史一即, 哪些組件已經(jīng)被請求且按照什么順序進(jìn)行——來預(yù)測軟件的特定單元將被下載的可能性。 由此,如果將軟件分成單元A、B、C、D和E,那么可以確定C、D、E中的每一個跟隨在序列AB 之后的可能性。舉個例子,C將跟隨在AB之后的概率可能是O. 5,D將跟隨在AB之后的概率可能是O. 3,以及E將跟隨在AB之后的概率可能是O. 2 (存在定義什么構(gòu)成軟件“單元” 的很多種方式,這些方式的示例是在以下的具體實(shí)施方式
      部分中描述的)。這種概率信息可以用于構(gòu)建可能跟隨在AB之后的軟件單元的列表及其可能性的順序。例如,C最有可能跟隨在AB之后,并且D和E分別是第二和第三最有可能跟隨在AB之后的組件。AB是歷史的示例,然而類似的列表可以針對其他任何歷史構(gòu)建(例如,列表可以構(gòu)建很有可能跟隨在BD 之后的那些單元的列表。此外,從歷史是由最后兩個被請求的單元定義的意義上講,AB是大小為2的歷史,但是歷史的大小既可以是1,也可以是3,還可以是其他任何大小)。
      在創(chuàng)建了顯示哪些軟件單元可以遵循一給定歷史且以什么可能性遵循給定歷史的列表時,可以做出關(guān)于要下載哪些單元以及以什么順序下載的決定。通常,當(dāng)實(shí)際請求的是尚未下載的單元時,系統(tǒng)會下載該單元。但是,在不存在針對軟件的任何部分的未得到滿足的請求時,系統(tǒng)嘗試通過下載那些可能通過減少未來等待時間來增強(qiáng)未來用戶體驗(yàn)的項(xiàng)目而有效地使用閑置資源。為了決定要下載什么,系統(tǒng)嘗試估計特定單元的下載價值,然后設(shè)法下載價值最高的單元。如果單元可能具有不同的大小,那么一個考慮因素是較大的單元通常具有較高的價值,這是因?yàn)楫?dāng)用戶最終的確請求該單元時,未下載大單元的代價是更長的等待。另一個問題是預(yù)測將實(shí)際使用所下載的單元的可能性,這是因?yàn)椤谒?br> 其他條件相同的情況下-較高的使用可能性意味著預(yù)先下載該單元的價值較高。此外,
      有可能是以廣度優(yōu)先遍歷(按照可能性的順序下載所有可能遵循當(dāng)前歷史的單元)或是深度優(yōu)先遍歷(下載下一個單元,之后是可能跟隨下一個單元的單元等等)下載單元。廣度優(yōu)先和深度優(yōu)先遍歷可以與不同的成本曲線相關(guān)聯(lián),由此系統(tǒng)可以通過基于哪一個選擇具有較低成本而使用廣度優(yōu)先或深度優(yōu)先遍歷來從該過程中的任何判定點(diǎn)繼續(xù)找出下一個將要下載的單元。本發(fā)明內(nèi)容被提供以通過簡化形式引入在以下的具體實(shí)施方式
      中進(jìn)一步描述的構(gòu)思的選擇。本發(fā)明內(nèi)容不旨在確定要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限制要求保護(hù)的主題的范圍。


      圖I是接收流傳輸軟件的示例過程的流程圖。
      圖2是識別程序的哪一個單元很可能遵循給定的歷史的示例過程的流程圖。
      圖3是示例圖表的框圖。
      圖4是圖3中的圖表的表格表不的框圖。
      圖5是將節(jié)點(diǎn)一起組合成組塊的示例圖表的框圖。
      圖6是示例預(yù)測列表的框圖。
      圖7是可以結(jié)合這里描述的主題的實(shí)現(xiàn)方式使用的示例組件的框圖。
      具體實(shí)施例方式對于早期的計算技術(shù)來說,軟件是作為單個單元提供給計算機(jī)的。如果想在特定機(jī)器上執(zhí)行某款軟件,那么通常該軟件作為單個單元被遞送到該機(jī)器(例如借助磁帶,借助可移除盤,借助網(wǎng)絡(luò)連接等等)。在軟件的任何使用之前,整款軟件通常會被下載并安裝在機(jī)器上。然而,現(xiàn)今有可能將軟件流傳輸?shù)綀?zhí)行該軟件的機(jī)器上。軟件可以被模塊化,并且可以在執(zhí)行軟件的時候?qū)⑻囟ǖ哪K(或是其他類型的組件)遞送到計算機(jī)。模塊甚至可以在尚未下載其他模塊時執(zhí)行。這種模塊化工作所處場景的一個典型示例是游戲程序的情形。游戲通常涉及影響游戲下一步將會采取的行動的用戶決定。例如,用戶處于房間中并且選擇向左還是向右移動。每一個方向都會導(dǎo)致另一個場景,并且每一個場景都可以由程序的組件來實(shí)現(xiàn)。由此, 接下來將要執(zhí)行的特定組件取決于用戶選擇移動的方向。雖然游戲是這種情形的一個示例,但是理論上任何軟件都可以采用這種方式工作。例如,在文字處理程序中,諸如“打印預(yù)覽”、“打印”、“保存”等功能可以由單獨(dú)的組件來實(shí)現(xiàn)。在以這種方式將軟件模塊化時,有可能從遠(yuǎn)程位置流傳輸軟件。由此,即使在機(jī)器上不存在實(shí)現(xiàn)游戲中的某些場景的組件,游戲也可以在該機(jī)器上執(zhí)行。類似地,即使在機(jī)器上不存在實(shí)現(xiàn)某些功能的組件,文字處理器也可以在機(jī)器上執(zhí)行。(例如,即使尚未將執(zhí)行打印功能的組件下載至用戶機(jī)器,文字處理器也可以允許用戶編輯文檔。)。理論上,允許這種流傳輸?shù)钠脚_可以建立在“懶惰(lazy)”范式上,其中每一個組件都是在請求使用該組件的時候下載的。但是,這種懶惰技術(shù)可能使用戶等待下一個模塊。舉個例子,如果游戲玩家在游戲中去往一個特定場景,并且游戲引擎僅僅在用戶訪問該場景時才下載用于該場景的模塊,那么用戶將必須在其首次訪問每個場景的時候等待該場景下載。實(shí)際上,在后續(xù)訪問相同場景的時候,用戶可能必需等待下載,這是因?yàn)橥嬖撚螒蛩诘臋C(jī)器可能具有有限的資源來存儲程序組件,并且可能在各種不同的時間從其存儲器中刷新(flush)較舊的組件, 以便為新的組件騰出空間。從用戶必須等待下載的時間長度是流傳輸軟件平臺質(zhì)量的量度的意義上講,懶惰下載方案可能導(dǎo)致劣質(zhì)的平臺。這里描述的主題使用了預(yù)測技術(shù)來實(shí)現(xiàn)流傳輸軟件平臺,以便嘗試為用戶提供相對較低的等待時間。該預(yù)測流傳輸軟件平臺通過嘗試預(yù)測在軟件執(zhí)行過程中接下來有可能使用什么軟件組件而在使用所述軟件組件之前下載這些組件。所述預(yù)測可以基于任何類別的統(tǒng)計模型。然而,其思想通常是事件發(fā)生概率可根據(jù)已發(fā)生什么事件(“歷史”)而改變。 由此,假設(shè)軟件具有用A-Z標(biāo)記的26個組件。如果不知道軟件已被如何使用,那么下載組件 Q的概率可能是O. 01。然而,如果知道已被使用的最后三個組件是G、V和X,按照該順序, 那么可能知道(基于使用模式的歷史)Q將是下一個要被使用的組件的概率是O. 50,這明顯高于Q將被使用的一般總體概率。(或者與此相反,可能知道Q未曾跟隨在G-V-X之后,在這種情況下,Q將是該序列之后的下一個組件的概率是O)。給定使用模式的一些分析,有可能創(chuàng)建一個模型,該模型針對每一個組件指示該組件的使用將遵循某些組件使用歷史的概率。為了預(yù)測接下來將要使用的軟件單元,必須具有什么構(gòu)成軟件“單元”的概念。在一個示例中,軟件單元是“組件”——即軟件的功能單元,例如在特定游戲中實(shí)現(xiàn)“hall of mountain king”場景的程序部分或是文字處理器中的“打印預(yù)覽”功能。然而,在示例實(shí)現(xiàn)方式中,軟件可以分成“塊”,其中每一個塊都可以僅僅是表示程序中的特定數(shù)據(jù)量的單元 (例如某數(shù)量的千字節(jié))。如果連續(xù)的塊伴隨出現(xiàn)的概率足夠高,則可以將塊集合成“組塊”。 由此,如果程序包含了塊A-Z,那么G是其中一個塊。如果在使用了 G之后使用X的概率是
      O.9,那么序列G-X可以被認(rèn)為是“組塊”。如果R跟隨在G-X之后的概率是O. 95,那么可以將R添加到組塊中,由此使得G-X-R成為一個組塊。如果假設(shè)B跟隨在G-X-R之后的概率是O. 4,并且沒有一個塊跟隨在G-X-R之后的概率更大,那么可以停止向該組塊添加附加的塊,這是因?yàn)闆]有一個塊跟隨在G-X-R之后的概率高到使得將附加的塊視為是與G-X-R相同單元的部分是有意義的??梢源_立閾值(例如O. 9),以使得系統(tǒng)將嘗試將塊合并到組塊中,直至沒有一個塊跟隨在現(xiàn)有組塊之后的機(jī)會超過或等于該閾值。因此,這里的主題使用了軟件“單元”,在決定接下來將要下載什么的過程中,在系統(tǒng)選擇特定“單元”而不選擇小于一個單元的軟件部分的意義上講,該軟件單元是原子性的 (atomic)。但是,該“單元”可以是軟件的功能組件、“塊”、“組塊”(如上所述)或是其他任何類型的單元。應(yīng)該指出的是,在系統(tǒng)不決定下載小于一個單元的軟件部分的意義上講,“單元”是原子性的,但是實(shí)際的下載技術(shù)細(xì)節(jié)可能允許下載小于單個單元。舉個例子,如果組塊包括三個塊,那么有可能下載組塊中的一個塊(或甚至小于單個塊),然后響應(yīng)于剛好接收的用戶請求而暫停下載組件,之后則繼續(xù)下載組塊中的下一個塊。將塊一起組合成組塊的重要性在于決定接下來將要下載什么的系統(tǒng)可以決定特定組塊(即塊的序列)是接下來將要下載的“單元”。(雖然在程序的功能組件與“組塊”之間存在概念上的差別,但是在實(shí)踐中,“組塊”很有可能——雖然并不是絕對確定——對應(yīng)于功能單元。如果頻繁出現(xiàn)請求塊B跟隨在請求塊A之后的情形,那么塊A和B很有可能是相同功能單元的一部分)。一旦確定了什么構(gòu)成了軟件“單元”,則可以分析在另一個單元之后使用給定單元的概率。換言之,給定某有序?qū)Φ能浖卧猆,/O,則有可能確定(例如基于對歷史使用模式的分析)在使用〃之后使用盧的概率。在統(tǒng)計語言中,如果h是被請求的單元的歷史,那么可以定義一個條件概率分布函數(shù)
      /φ(χ),對于任何單元Z來說,fAh (Jf)是z將跟隨在A之后的概率。特定的系統(tǒng)可以
      選擇固定的歷史大小,例如單個單元、兩個單元、三個單元等等。因此,在歷史大小是三個單元的示例中,可以針對每個三單元序列確定任何特定單元將跟隨在該序列之后的概率。如果ur、U2和U3是在序列UfU2-U3中使用的三個單元,那么可以定義一個條件概率分布函數(shù)
      O) ,該函數(shù)表示任何給定單元X將跟隨在序列U1-U2-U3之后的概率。使用條件概率分布,可以為任一值確定哪一個單元是第η個最有可能遵循任意給定歷史的單元。舉個例子,可以假設(shè)U57最有可能跟隨在WU3之后,A3第二最有可能跟隨在U1-U2-Il3之后,h第三最有可能等等。使用這種類型的信息可以確定機(jī)器接下來應(yīng)該請求下載的是什么單元,假設(shè)執(zhí)行下載的資源另外未被使用。(如果用戶正在請求使用當(dāng)前不在機(jī)器上的特定程序部分,那么接下來下載該程序部分是有意義的,這是因?yàn)殛P(guān)于用戶接下來希望使用什么的任何統(tǒng)計“預(yù)測”將有效地被用戶接下來想要什么的實(shí)際知識所取代。)
      具有可用下載帶寬的系統(tǒng)可以選擇使用該帶寬來下載那些在機(jī)器上具有高的存在價值的單元。在確定如何評價各種不同選擇的過程中,一個考慮因素是請求有很高概率在不久的將來會被用戶使用的單元,這是因?yàn)槭沟么祟悊卧谟脩粽埱笾霸谟脩魴C(jī)器上可用避免了用戶必須等待下載這些單元,由此增強(qiáng)用戶體驗(yàn)。但是,在決定下載什么時還存在其他的評價考慮因素。一個這樣的考慮因素是與小單元相比,下載大單元的價值可能相對較高。由于與小單元相比,大單元耗費(fèi)更長的時間來“按需”下載,因此,與未使小單元可用的成本相比,在用戶請求之前未使大單元可用的成本更大(這是因?yàn)樾卧梢栽谡埱髸r以相當(dāng)快的速度下載)。另一個考慮因素是以深度優(yōu)先還是廣度優(yōu)先遍歷方式來下載單元。換句話說,如果系統(tǒng)已經(jīng)下載了最有可能遵循當(dāng)前歷史的單元(將這個單元稱為“單元A”),那么系統(tǒng)必須決定要被請求的下一個單元是第二最可能遵循當(dāng)前歷史(廣度優(yōu)先)的單元,還是最有可能跟隨在單元A之后(深度優(yōu)先)的單元。一般地,如果非常確信接下來最有可能發(fā)生的單元接下來將實(shí)際發(fā)生,那么深度優(yōu)先遍歷將會是有意義的。舉個例子,如果若干個單元接下來將被使用的可能性是大致相同的(假設(shè)概率是O. 35,0. 34以及O. 31),那么接下來將會發(fā)生的可能性最高的單元(即單元A)接下來實(shí)際發(fā)生的機(jī)會只有35%,因此,進(jìn)行廣度優(yōu)先遍歷可能是有意義的。另一方面,如果單元A不但接下來發(fā)生的可能性最高,而且還具有客觀來說很高的概率(例如90%),那么可能有意義的是假設(shè)該單元實(shí)際接下來將被請求,然后將資源專用于下載跟隨在單元A之后的可能性最高的單元,而不是嘗試下載在單元A實(shí)際并非下一個單元的稀有情況中被使用的具有第二和第三最高概率的單元??梢远x成本曲線,其指示針對任何給定判定點(diǎn),深度優(yōu)先還是廣度優(yōu)先遍歷將提供較高的值。現(xiàn)在轉(zhuǎn)到附圖,圖I顯示的是接收流傳輸軟件的示例過程。在轉(zhuǎn)到圖I的描述之前,應(yīng)該指出的是,這里包含的流程圖(在圖I和圖2中)顯示的是按照用連接方框的線指示的特定順序?qū)崿F(xiàn)的過程的階段的示例,但是在這些圖中顯示的各種不同階段可以按照任何順序或以任何組合或子組合方式執(zhí)行。在102處,軟件包的初始部分被加載。舉個例子,如果該程序是游戲,那么該程序的初始部分可以包括程序主循環(huán)(其提供游戲玩家的基本導(dǎo)航的機(jī)制)以及實(shí)現(xiàn)游戲中的初始場景的組件。如果程序是某種其他類型的程序(例如文字處理器,電子表格等等),那么程序的初始部分可以包括程序的主循環(huán),以及實(shí)現(xiàn)“歡迎屏幕”的組件或?qū)崿F(xiàn)“打開文件”功能的組件、允許編輯空白文檔的組件等等。什么構(gòu)成了程序“初始”部分可以由程序的性質(zhì)確定。加載程序的初始部分一乃至為初始部分的構(gòu)成做出任何類型的許可。由此,在102 處執(zhí)行的動作(與這里描述的其他操作相似)是可選的。從這一點(diǎn),所述流傳輸過程繼續(xù)確定接下來下載什么。在104處,確定是否正在請求但尚未下載程序的特定部分。例如在游戲中,用戶可能請求向左移動,而實(shí)現(xiàn)向左場景的組件可能尚未下載。在這種情況下,軟件流傳輸平臺實(shí)際正經(jīng)歷對所述程序的特定部分的直接請求。如果出現(xiàn)這種請求,則所述過程繼續(xù)進(jìn)行至 106,在106中可以中斷任何現(xiàn)有的下載過程。(可能的情況是在預(yù)測到未來將被請求的程序部分時,所述過程已經(jīng)開始下載程序的該部分。由于該過程現(xiàn)在具有用戶想要該程序的其他某個部分的信息,因此,為了使用戶不必等待過長時間,任何這種預(yù)測性下載都可以被中斷,使得該過程可以下載用戶實(shí)際想要的程序部分)。如上所述,“單元”實(shí)際可以包含若干個可以單獨(dú)下載的塊,由此,中斷當(dāng)前下載可以僅僅涉及等待當(dāng)前的塊完成下載,然后不下載單元中的附加塊,使得可以處理用戶請求(這些塊也可以是可中斷的,由此可以在不等待當(dāng)前的塊完成下載的情況下處理用戶請求)。在108處,所請求的程序部分被下載。這時, 該過程可以恢復(fù)下載被中斷以適應(yīng)用戶請求的任何單元。然而,由于對特定單元的用戶請求有效改變了當(dāng)前歷史,由此(有可能)使得某些其他單元更有可能跟隨在當(dāng)前單元之后, 因此,該過程還可以選擇不去恢復(fù)下載其工作于其上的單元。這時,該過程可以返回到104, 以確定程序的任何附加部分是否正被請求。如果在104處確定程序的特定部分沒有被請求,那么圖I所示的過程進(jìn)入預(yù)期或預(yù)測模式,由此下載那些將會降低未來下載的預(yù)期成本的程序部分。從可以將在請求了程序部分之后必須等待要下載的所述部分視為“成本”的意義上講,所要下載的內(nèi)容的選擇設(shè)法降低預(yù)期的未來等待。由此,該過程繼續(xù)至110,以便識別接下來下載什么。在確定接下來下載什么的過程中可以涉及各種不同的考慮因素。一個這樣的考慮因素是使用的可能性(方框112)— 即接下來有可能使用什么程序單元。另一個考慮因素是下載單元的大小(方框114)。如上所述,與小單元相比,大單元會耗費(fèi)更長的時間等待,由此不下載較大單元的成本(或者與此相反,下載較大單元的價值)要大于不下載較小單元的成本。因此,在所有其他條件全都相同的情況下,該過程可以選擇下載較大的單元,而不是較小的單元。另一個考慮因素是廣度優(yōu)先/深度優(yōu)先選擇(方框116),該選擇是在已經(jīng)下載了接下來最有可能發(fā)生的單元的時候出現(xiàn)的。如上所述,如果已經(jīng)下載了該單元,那么該過程必須選擇是下載接下來最有可能的單元(廣度優(yōu)先)還是下載最有可能跟隨在剛被下載單元之后的單元(深度優(yōu)先)。除了方框112-116之外,該過程可以在決定接下來下載什么的過程中使用其他成本/價值考慮因素(方框118)。在做出了關(guān)于下載什么的決定之后,該過程繼續(xù)至120,以便下載所選擇的單元。 然后,在122處可以保存所下載的軟件單元,其中保存軟件單元的動作可以在用戶實(shí)際請求使用該單元之前發(fā)生,由此使得所述軟件單元在用戶未來的確請求使用該單元的情況下易于得到。然后,該過程返回到104,以便主動選擇另一個單元(方框110以及下列等等)或在當(dāng)前提出了這種請求的情況下下載專門請求的程序部分(方框106以及下列等等)。圖I的過程假設(shè)的是已經(jīng)做出了關(guān)于特定單元將遵循給定歷史的可能性的某種評定。圖2顯示的是識別哪一個程序單元有可能遵循給定歷史的示例過程。圖2的過程結(jié)果是可被提供給程序在其上使用的客戶端的表格,使得這些客戶端可以確定接下來請求哪一個程序單元。在202處,生成塊的預(yù)測圖表。換言之,假設(shè)將被流傳輸?shù)某绦蛞逊殖闪藟K,這其中的每一個塊用圖表中的節(jié)點(diǎn)表示。然后,基于塊被請求的序列的歷史分析,第二個塊跟隨在第一個塊之后的任何情形對應(yīng)于從第一個塊到第二個塊的定向邊線(directed edge)。 這個定向邊線是用數(shù)字標(biāo)記的,該數(shù)字表示目標(biāo)(第二個)塊跟隨在特定序列之后的總的次數(shù)除以發(fā)生該序列的總的次數(shù)。這個數(shù)字表示特定塊將處于某個特定塊(更一般地,特定序列)之前的概率。這種圖表的一個示例是圖3顯示的圖表300??梢钥闯龅氖牵瑘D表300具有用A-H標(biāo)記的8個節(jié)點(diǎn),其中每一個節(jié)點(diǎn)表示將被流傳輸?shù)能浖膲K。當(dāng)觀察到在一個塊之后請求了另一個塊的歷史時,這種關(guān)系是用定向的帶標(biāo)記邊線表示的。例如,從A到B的定向邊線表示這樣一種思想在過去的某個點(diǎn),塊B 是在塊A之后直接被請求的,并且有60%的時間在請求了塊A之后接下來的塊是塊B。此外還存在從A到C的邊線,其指示塊C是在塊A之后也已直接被請求;但在塊A已被請求的所有的情形中,緊跟著的塊是塊C的情形只占到了 40%。圖表300中的其他邊線表示各種序列發(fā)生的概率。注意到圖表300表示大小為I的歷史一即,為了確定特定塊將跟隨在塊“序列”之后的概率的目的,圖表300假設(shè)該序列的相關(guān)長度是單個塊。然而應(yīng)該理解,可以具有不同的歷史大小。因此,如果歷史大小為2,那么舉例來說,取代圖表中的標(biāo)簽指示G跟隨在D之后的可能性有多大,它們將指示G跟隨在B-D之后的可能性有多大以及G跟隨在C-D 之后的可能性有多大。此外,雖然圖表300被顯示成是在節(jié)點(diǎn)F、G和H終止的定向非循環(huán)圖表,但是應(yīng)該理解,節(jié)點(diǎn)F、G和H可以具有圖中并未顯示的子節(jié)點(diǎn)(如橢圓所示),并且圖表實(shí)際可以具有循環(huán)(例如,如果存在序列A-B-D-A,那么該序列將會表示圖表中的循環(huán))。圖4顯不的是圖3的圖表的表格表不400。該表格中的每一個單兀格表不用邊線連接的一對節(jié)點(diǎn)。行標(biāo)簽402標(biāo)識邊線開始的節(jié)點(diǎn),而列標(biāo)簽404指示邊線結(jié)束的節(jié)點(diǎn)。每一個單元格中的值都是在給定(作為歷史)行標(biāo)簽中的節(jié)點(diǎn)已被到達(dá)的情況下到達(dá)列標(biāo)簽中的節(jié)點(diǎn)的概率——即,單元格中的值對應(yīng)于圖3中的帶標(biāo)簽邊線上的標(biāo)簽。(對于不存在的邊線來說,單元格的值是0,由此指示在沒有從第一節(jié)點(diǎn)到第二節(jié)點(diǎn)的邊線的情況下,從第一節(jié)點(diǎn)變換到第二節(jié)點(diǎn)的概率為零)。由此,如在圖3的圖表中看到的那樣,如果請求了塊 A,那么塊B將是下一個要被請求的塊的概率是60%。因此,在圖4中,行標(biāo)簽是A并且列標(biāo)簽是B的單元格具有值O. 6。(如上所述,在圖3中沒有顯示任何可以從節(jié)點(diǎn)F、G和H到達(dá)的節(jié)點(diǎn);因此,在表格表示400中,行F、G和H保持空白)。雖然可能很容易使用圖形或表格表示來顯示大小為I的歷史,但是應(yīng)該了解,在表格表示中更容易顯示大于I的歷史大小。 舉個例子,如果我們使用的歷史大小是3,那么表格的每一行可以是三個塊的序列,由此導(dǎo)致用A-B-D、A-C-D> B-D-H等等標(biāo)記的行。如果歷史大小是3,那么列標(biāo)簽仍舊可以是單個塊,使得每一個單元格都會指示在給定特定的三個塊的歷史的情況下到達(dá)給定塊的概率?,F(xiàn)在回到圖2,接下來的動作可以是使用塊的預(yù)測圖表來生成組塊的預(yù)測圖表(方框204)。如可以從早先的論述中回顧,組塊是被確定成有足夠概率在一起發(fā)生的塊的序列。 識別組塊基于對于圖表中表示的塊的分析以及圖表中的邊線(或是該圖表的表格表示中的單元格)所表示的概率。為了識別組塊,可以選擇閾值,然后,只要到達(dá)下一個塊的概率大于或等于該閾值,則可以將塊添加到組塊中。舉個例子,假設(shè)將閾值設(shè)定在O. 9。然后,參考圖3的圖表300 (或圖4的其表格表示400)可以看出,在B之后將直接請求D的概率是
      O.9,因此,從B到D的變換滿足該閾值。由此,B和D可以一起組合成單個組塊。然而,不存在從節(jié)點(diǎn)D到達(dá)的概率大于90%的特定節(jié)點(diǎn),因此不在組塊中添加附加節(jié)點(diǎn)。由此,最終得到的組塊是B-D。在實(shí)踐中,以這種方式識別組塊簡化了用以確定接下來將要下載什么的表格。理論上,這樣做導(dǎo)致一些精確性方面的損失;畢竟,參考圖3的圖表,在B之后下載C 是可能的,因此,如果將B和D視為一個組塊,那么只要下載B就會下載D(有可能是不必要地)。但是,由于序列B-D要比B-C更有可能發(fā)生,因此,在確定下載什么的過程中得到的簡化有可能會彌補(bǔ)可能因?yàn)榫_性損失而導(dǎo)致的任何損害。這種彌補(bǔ)歸因于立刻下載較大分段的價值一其減小了向服務(wù)器提出多個請求的網(wǎng)絡(luò)開銷,而不是一個更大的請求。在圖5中可以看到(以表格形式)所得到的將每一個組塊視為單個節(jié)點(diǎn)的圖表 500。在圖表500中,序列B-D (它是一個組塊)縮寫(collapse)成單個元素X。由此,在行標(biāo)簽和列標(biāo)簽中是沒有B和D的,這是因?yàn)橐辉趯和D —起組合成組塊的情況下一為了確定請求下載的元素序列,B和D不被視為單獨(dú)的單元。(如上所述,在如果必須中斷組塊的下載、可以通過僅僅請求那些處于組塊中、在中斷前未被下載的塊來恢復(fù)組塊下載的意義上講,構(gòu)成組塊的單獨(dú)的塊可能仍丨日是可單獨(dú)請求的)?;氐綀D2,在206處,可以基于預(yù)測圖表生成預(yù)測列表。(將塊一起組合成組塊可以被視為可選地操作,由此可以基于以組塊為基礎(chǔ)的圖表或以塊為基礎(chǔ)的圖表生成預(yù)測列表)。該預(yù)測列表指示了在給定特定歷史的情況下的下一個最有可能的單元(塊、組塊或其他)。圖6顯示的是示例預(yù)測列表600,該列表是基于圖5的以組塊為基礎(chǔ)的圖表500的。使用圖5的圖表500中的數(shù)據(jù),可以針對圖表中給定的節(jié)點(diǎn)確定哪一個節(jié)點(diǎn)最有可能(或者第二最可能、第三最可能等等)跟隨在該節(jié)點(diǎn)之后。應(yīng)該指出的是,在圖5的示例中,歷史的大小是1,由此歷史是由單個節(jié)點(diǎn)定義的,但是該歷史的大小也可以大于I。如果歷史大小大于1,那么圖表中的每一行都會用多節(jié)點(diǎn)歷史標(biāo)記,由此圖表中的每一個單元格將會指示哪一個節(jié)點(diǎn)最有可能跟隨在特定的多節(jié)點(diǎn)序列之后。(舉例來說,如果歷史大小是3,那么A-B-D將會是針對行的示例標(biāo)簽。A-B-D行中的每一個單元格將會指示跟隨在序列 A-B-D之后的第一[或第二或第三等等]最可能的節(jié)點(diǎn))。在圖6的示例中可以看出,X (包含B-D組合的組塊)是最有可能跟隨在A之后的節(jié)點(diǎn)。由此,預(yù)測列表600將X包含在針對行A的“第一最可能”列中。由于——如果X沒有跟隨在A之后一則C是下一個最有可能跟隨在A之后的節(jié)點(diǎn),因此,預(yù)測列表600還將 C包含在針對行B的“第二最可能”列中。關(guān)于哪一個節(jié)點(diǎn)是最有可能、第二最有可能等等跟隨在給定節(jié)點(diǎn)之后的確定可以通過從(圖5的)圖表500中的單元格中讀取數(shù)值來做出。 例如,在用X標(biāo)記的圖表500的行中,節(jié)點(diǎn)F的值是O. 5,節(jié)點(diǎn)G的值是O. 3,以及節(jié)點(diǎn)H的值是O. 2。由此,F(xiàn)是第一最有可能跟隨在X之后,G是第二最可能,并且H是第三最可能。 這些事實(shí)在圖6的預(yù)測列表600中得到了反映。如上所述,圖表中的“節(jié)點(diǎn)”表示特定組塊或塊(例如“單元”)。同樣如上所述,關(guān)于接下來下載哪一個單元的評定可以基于哪一個單元具有最高的下載值。如上所述,所述評定可以基于一些因素來做出,例如單元中的數(shù)據(jù)量、單元不久的將來將被使用的可能性、 廣度優(yōu)先/深度優(yōu)先考慮因素以及其他評估因素。由此,如果必須按需下載大單元,那么由于等待該單元所耗費(fèi)的時間很長,因此,下載大單元的值會很高。此外,下載被請求概率很高的單元具有很高的值,這是因?yàn)橛锌赡苓@樣做將通過避免未來的等待而得到報償。至于廣度優(yōu)先/深度優(yōu)先考慮因素,在下載了接下來最有可能被請求的單元之后,將會存在關(guān)于下載接下來最有可能被請求的單元(廣度優(yōu)先)還是假設(shè)最有可能的單元實(shí)際是正確的猜測并且隨后下載最可能跟隨在該單元之后的單元(深度優(yōu)先)的問題。該決定取決于實(shí)際將會下載接下來最有可能的單元的確定性。將深度優(yōu)先與廣度優(yōu)先相比較來進(jìn)行選擇的值可以用成本函數(shù)來表示。基于這些考慮因素,在下文中描述了用于選擇所要下載的下一個單元的示例過程。首先,系統(tǒng)可以以客戶機(jī)最后提取的組塊(或其他單元)為開始,出于討論的目的,所述組塊將被稱為C。假設(shè)函數(shù)P (C,N)是預(yù)測列表中跟隨在C之后第N個最可能的元素。舉個例子,參考圖6,由于X是第一最有可能跟隨在A之后的組塊,因此P (A, I) =X。假設(shè)BF (N)是廣度優(yōu)先遍歷的成本,所述成本是在包含C的預(yù)測列表的相同的行中選擇節(jié)點(diǎn)的成本。S卩,它是通過選擇P(C,N+1)、P(C,N+2)等等來選取下一個節(jié)點(diǎn)的成本。此外,假設(shè)DF(N)是深度優(yōu)先遍歷的成本,所述成本是在假設(shè)當(dāng)前P (C,I)(或更概括的說是P (C,N))的猜測正確的情況下選擇接下來“最有可能的”節(jié)點(diǎn)的成本——即,它是選取P (P (C,N),I),P (P (P (C,N), I), D 等等的成本。在所有其他條件相同的情況下,如果深度優(yōu)先選擇的成本大于廣度優(yōu)先選擇的成本,那么選擇廣度優(yōu)先策略;否則,選擇深度優(yōu)先策略。一種策略可以組合深度優(yōu)先和廣度優(yōu)先搜索。例如,可以基于廣度優(yōu)先策略來選擇所要下載的第一個單元,然后基于深度優(yōu)先策略來選擇接下來將要下載的單元,以此類推。一般地,特定選擇的成本等于策略成本(由BF或DF函數(shù)指示)乘以所要下載的組塊大小。圖7顯示的是可以部署這里描述的主題的方面的示例環(huán)境。計算機(jī)700包括一個或多個處理器702以及一個或多個數(shù)據(jù)記憶組件704。處理器702典型地是微處理器,例如在個人臺式計算機(jī)或膝上計算機(jī)、服務(wù)器、手持計算機(jī)、或別的類型的計算設(shè)備中找到的微處理器。數(shù)據(jù)記憶組件704是能夠短期或長期存儲數(shù)據(jù)的組件。數(shù)據(jù)記憶組件704的示例包括硬盤、可移除盤(包括光盤和磁盤)、易失和非易失隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、閃存、磁帶等等。數(shù)據(jù)記憶組件是計算機(jī)可讀存儲媒體的示例。計算機(jī)700可以包括或者關(guān)聯(lián)于顯示器712,該顯示器可以是陰極射線管(CRT) 監(jiān)視器、液晶顯示器(LCD )監(jiān)視器或是其他任何類型的監(jiān)視器。軟件可以保存在數(shù)據(jù)記憶組件704中,并且可以在一個或多個處理器702上執(zhí)行。 這些軟件的一個示例是流傳輸軟件706,該軟件可以實(shí)現(xiàn)在上文中結(jié)合圖1-6描述的某些或所有功能,但是任何類型的軟件都是可以使用的。舉例來說,軟件706可以通過一個或多個組件來實(shí)現(xiàn),其中所述組件可以是分布系統(tǒng)中的組件、單獨(dú)的文件、單獨(dú)的函數(shù)、單獨(dú)的對象、單獨(dú)的代碼行等等。將程序存儲在硬盤上、加載到RAM中以及在計算機(jī)處理器上執(zhí)行程序的計算機(jī)(例如個人計算機(jī)、服務(wù)器計算機(jī)、手持計算機(jī)等等)代表了圖7描述的場景, 但是這里描述的主題并不局限于這個示例。這里描述的主題可以作為在一個或多個數(shù)據(jù)記憶組件704中存儲并在一個或多個處理器702上執(zhí)行的軟件來實(shí)現(xiàn)。作為另一個示例,本主題可以實(shí)現(xiàn)為存儲在一個或多個計算機(jī)可讀存儲介質(zhì)中的指令。諸如光盤或磁盤之類的有形介質(zhì)是存儲介質(zhì)的示例。這些指令可以存在于非臨時介質(zhì)上。在由計算機(jī)或其他機(jī)器執(zhí)行時,這些指令可以使計算機(jī)或其他機(jī)器執(zhí)行方法的一個或多個動作。執(zhí)行這些動作的指令可以存儲在一個介質(zhì)上,或者可以分布在多個介質(zhì)上,使得這些指令可以集中出現(xiàn)在一個或多個計算機(jī)可讀存儲介質(zhì)上,而不用考慮所有這些指令是否正好是在相同的介質(zhì)上。應(yīng)該指出的是,在“存儲”信號的介質(zhì)(可被稱為“存儲介質(zhì)”)與——作為對比——包含或傳輸傳播信號的介質(zhì)之間是存在區(qū)別的。DVD、閃存、磁盤等等是存儲介質(zhì)的示例。另一方面,信號短時存在的導(dǎo)線或光纖是暫時信號介質(zhì)的示例。此外,這里描述的任何動作(無論是否在圖中顯示)都可以作為方法的一部分由處理器(例如一個或多個處理器702)執(zhí)行。由此,如果在這里描述了動作A、B和C,那么可以執(zhí)行一種包含了動作A、B和C的方法。此外,如果在這里描述的是動作A、B和C,那么可以執(zhí)行一種方法,該方法包括使用處理器來執(zhí)行動作A、B和C。在一個示例環(huán)境中,計算機(jī)700可以通過網(wǎng)絡(luò)708通信地連接到一個或多個其他設(shè)備。在結(jié)構(gòu)上與計算機(jī)700相似的計算機(jī)710是可以連接到計算機(jī)700的設(shè)備的示例, 但是其他類型的設(shè)備也可以如此連接。雖然以特定于結(jié)構(gòu)特征和/或方法動作的語言描述了本主題,但是應(yīng)該理解,所附權(quán)利要求中限定的主題不必局限于上述特定特征或動作。相反,以上描述的特定特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。
      權(quán)利要求
      1.一種使用流傳輸軟件的方法,該方法包括接收表格(600),該表格針對給定的使用歷史指示接下來有可能被請求的軟件單元(112);確定(104)用于將所述軟件從遠(yuǎn)程位置(710)傳送到所述計算機(jī)(700)的資源未被使用;使用所述表格(600)來選擇要被請求的軟件的第一單元,所述第一單元是基于下載所述第一單元的值(118)選擇的;從所述遠(yuǎn)程位置(710)請求(120)軟件的所述第一單元;接收(120)軟件的所述第一單元;以及在接收到使用軟件的所述第一單元的請求之前,存儲(122)軟件的所述第一單元。
      2.權(quán)利要求I的方法,其中所述軟件被分成塊,其中每一個單元都是一個所述塊,并且其中該方法還包括將所述塊組合成組塊,其中每一個組塊都是在序列中出現(xiàn)的可能性超出閾值的一個或多個塊的集合;其中每一個單元都是一個所述組塊。
      3.權(quán)利要求I的方法,還包括基于所述單元的大小來確定所述值,其中與較小的單元相比,較大的單元具有較高的值。
      4.權(quán)利要求I的方法,還包括基于所述單元的深度優(yōu)先遍歷還是廣度優(yōu)先遍歷具有更高的成本來確定所述值。
      5.權(quán)利要求I的方法,還包括在接收到軟件的所述第一單元時,接收對軟件的第二單元的請求;中斷軟件的所述第一單元的下載;以及使用所述資源來下載軟件的所述第二單元。
      6.一種計算機(jī)可讀介質(zhì),具有執(zhí)行權(quán)利要求1-5中任一權(quán)利要求的方法的計算機(jī)可執(zhí)行指令。
      7.一種使用流傳輸軟件的系統(tǒng),該系統(tǒng)包括存儲器(704);處理器(702);以及存儲在所述存儲器(705 )中并且在所述處理器(702 )上執(zhí)行的組件(706 ),其中所述組件(706)接收表格(600),該表格針對給定的使用歷史指示接下來軟件的哪些單元有可能被請求(112),其確定(104)用于將所述軟件從遠(yuǎn)離所述系統(tǒng)(700)的位置(710)傳送到所述計算機(jī)(700)的資源是否正被使用,使用所述表格(600)來選擇(110)要被請求的軟件的第一單元,所述第一單元是基于下載所述第一單元的值(118)來選擇(110 )的,從所述遠(yuǎn)程位置請求(120)軟件的所述第一單元,接收軟件的所述第一單元,以及在接收到使用軟件的所述第一單元的請求之前存儲(122)軟件的所述第一單元。
      8.權(quán)利要求7的系統(tǒng),其中所述軟件被分成塊,其中每一個單元都是一個所述塊,其中所述塊被組合成組塊,其中每一個組塊都是在序列中出現(xiàn)的可能性超出閾值的一個或多個塊的集合,以及其中每個單元都是一個所述組塊。
      9.權(quán)利要求7的系統(tǒng),其中所述組件基于所述單元的深度優(yōu)先遍歷還是廣度優(yōu)先遍歷具有更高的成本來確定所述值。
      10.權(quán)利要求7的系統(tǒng),其中當(dāng)軟件的所述第一單元被接收到時,所述組件接收對軟件的第二單元的請求,中斷軟件的所述第一單元的下載,以及使用所述資源來下載軟件的所述第二單元。
      全文摘要
      可以實(shí)現(xiàn)一種軟件流傳輸平臺,該平臺基于下載程序單元的值來預(yù)測地選擇所要下載的程序單元。在一個示例中,程序被分成塊。分析歷史上已被請求的程序塊的序列,以便針對給定的歷史確定接下來最有可能被請求的塊。然后,這些塊可以合并成組塊,其中每一個組塊表示在序列中出現(xiàn)的可能性很高的一連串的塊。然后,構(gòu)造一個表格,該表格針對給定的組塊指示最有可能跟隨在該給定的組塊之后的組塊?;谶@個可能性表格以及各種其他考慮因素,確定下載特定組塊的值,并且下載具有最高預(yù)期值的組塊。
      文檔編號G06F9/445GK102591682SQ20111044690
      公開日2012年7月18日 申請日期2011年12月28日 優(yōu)先權(quán)日2010年12月28日
      發(fā)明者D.特珀, E.霍爾維茨, T.布爾丁 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1