將后臺(tái)工作和前臺(tái)工作解耦合的制作方法
【專利說(shuō)明】
【背景技術(shù)】
[0001]傳統(tǒng)的操作系統(tǒng)實(shí)現(xiàn)少許不同的執(zhí)行模型來(lái)管理應(yīng)用的前臺(tái)工作和后臺(tái)工作??杀豢醋髑芭_(tái)工作的處理任務(wù)的示例包括但不限于呈現(xiàn)圖形用戶界面、響應(yīng)用戶輸入以及與用戶交互有關(guān)的任何其它類型的工作。可被看作后臺(tái)工作的處理任務(wù)的示例包括但不限于下載和安裝軟件更新、與服務(wù)器同步以及可以不牽涉用戶注意力的任何其它類型的工作。
[0002]在第一模型中,允許在前臺(tái)和后臺(tái)中并行執(zhí)行任意數(shù)目的應(yīng)用,并且競(jìng)爭(zhēng)諸如處理器周期和存儲(chǔ)器之類的資源。該模型在桌面型計(jì)算機(jī)和膝上型計(jì)算機(jī)上普遍實(shí)現(xiàn)。
[0003]在第二模型中,除了“激活的”應(yīng)用(S卩,用戶正在主動(dòng)與之交互的應(yīng)用)之外,阻止執(zhí)行所有應(yīng)用。該模型在移動(dòng)設(shè)備上普遍實(shí)現(xiàn),其中在任意給定時(shí)刻,用戶通常與滿屏顯示的單個(gè)應(yīng)用交互。
[0004]在第三模型中,將同一應(yīng)用的前臺(tái)工作和后臺(tái)工作處理為互相排斥的,使得在前臺(tái)中執(zhí)行的應(yīng)用不被調(diào)度來(lái)同時(shí)進(jìn)行任何后臺(tái)工作,反之亦然。
[0005]在第四模型中,可以針對(duì)前臺(tái)工作和后臺(tái)工作分開(kāi)地對(duì)應(yīng)用進(jìn)行實(shí)例化,其中兩個(gè)實(shí)例并行執(zhí)行并且競(jìng)爭(zhēng)資源。
【發(fā)明內(nèi)容】
[0006]前述內(nèi)容是本發(fā)明的非限制性概要,本發(fā)明由所附權(quán)利要求限定。
[0007]本發(fā)明人已經(jīng)認(rèn)識(shí)和理解到現(xiàn)有操作系統(tǒng)執(zhí)行模型所產(chǎn)生的若干缺點(diǎn),并且已經(jīng)開(kāi)發(fā)了新的執(zhí)行模型,該新的執(zhí)行模型提供諸如改善的電池壽命和用戶體驗(yàn)之類的優(yōu)點(diǎn)。
[0008]在一些實(shí)施例中,可以將針對(duì)前臺(tái)工作和后臺(tái)工作的應(yīng)用邏輯解耦合,使得允許操作系統(tǒng)分開(kāi)地加載前臺(tái)工作和后臺(tái)工作,并且使得當(dāng)作出調(diào)度決策時(shí)不同地處理前臺(tái)工作和后臺(tái)工作。例如,應(yīng)用可以包括分開(kāi)的組件,一些組件指定為前臺(tái)組件,其它組件指定為后臺(tái)組件。操作系統(tǒng)可以基于組件的指定來(lái)向它們應(yīng)用不同的策略,其中可以設(shè)計(jì)策略以促使資源的有效使用同時(shí)向用戶提供豐富的多任務(wù)處理體驗(yàn)。
[0009]在一些其它實(shí)施例中,可以在能夠獨(dú)立于彼此而執(zhí)行的分開(kāi)的可執(zhí)行代碼塊中提供前臺(tái)組件和后臺(tái)組件。操作系統(tǒng)也可以在分開(kāi)的進(jìn)程中例如通過(guò)在受特定資源限制的指定環(huán)境中(例如對(duì)主機(jī)后臺(tái)組件構(gòu)建的沙盒(sandbox))隔離后臺(tái)工作來(lái)加載前臺(tái)組件和后臺(tái)組件。備選地,操作系統(tǒng)可以在同一進(jìn)程中但在不同線程中加載前臺(tái)組件和后臺(tái)組件,并且仍能夠?qū)⑴c后臺(tái)工作相關(guān)聯(lián)的執(zhí)行線程和與前臺(tái)工作相關(guān)聯(lián)的執(zhí)行線程區(qū)分開(kāi)并且相應(yīng)地作出調(diào)度決策。
[0010]在一個(gè)實(shí)施例中,提供一種方法以供在至少一個(gè)計(jì)算機(jī)上執(zhí)行的操作系統(tǒng)使用。該方法包括以下的動(dòng)作:識(shí)別應(yīng)用的至少一個(gè)前臺(tái)組件;識(shí)別應(yīng)用(100)的至少一個(gè)后臺(tái)組件;以及與至少一個(gè)后臺(tái)組件分開(kāi)地加載至少一個(gè)前臺(tái)組件用于執(zhí)行。
[0011 ]在其它實(shí)施例中,提供至少一個(gè)計(jì)算機(jī)可讀介質(zhì),其上至少編碼有:至少一個(gè)第一計(jì)算機(jī)可執(zhí)行代碼塊,實(shí)現(xiàn)應(yīng)用的至少一個(gè)前臺(tái)組件;至少一個(gè)第二計(jì)算機(jī)可執(zhí)行代碼塊,實(shí)現(xiàn)應(yīng)用的至少一個(gè)后臺(tái)組件;以及規(guī)范(specificat1n),將至少一個(gè)第二代碼塊識(shí)別為與應(yīng)用的后臺(tái)工作相關(guān)聯(lián)。
[0012]在另一其它實(shí)施例中,提供一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括以下的動(dòng)作:響應(yīng)于用戶動(dòng)作,執(zhí)行實(shí)現(xiàn)應(yīng)用的至少一個(gè)前臺(tái)組件的至少一個(gè)第一計(jì)算機(jī)可執(zhí)行代碼塊;以及使用與應(yīng)用相關(guān)聯(lián)的規(guī)范來(lái)識(shí)別實(shí)現(xiàn)應(yīng)用的至少一個(gè)后臺(tái)組件的至少一個(gè)第二計(jì)算機(jī)可執(zhí)行代碼塊,其中執(zhí)行至少一個(gè)前臺(tái)組件而不執(zhí)行至少一個(gè)后臺(tái)組件。
[0013]應(yīng)理解到的是,前述概念和下面更詳細(xì)討論的附加概念(假設(shè)這樣的概念并不相互矛盾)的所有組合被考慮為這里公開(kāi)的本發(fā)明主題的一部分。特別是,出現(xiàn)在本公開(kāi)結(jié)尾處的請(qǐng)求保護(hù)的主題的所有組合被考慮為這里公開(kāi)的本發(fā)明主題的一部分。
【附圖說(shuō)明】
[0014]附圖并不一定按照比例繪制。
[0015]圖1示出根據(jù)一些實(shí)施例的具有針對(duì)前臺(tái)工作和后臺(tái)工作的解耦合邏輯的說(shuō)明性應(yīng)用100。
[0016]圖2示出根據(jù)一些實(shí)施例的針對(duì)應(yīng)用的說(shuō)明性狀態(tài)圖,該應(yīng)用具有可以并行執(zhí)行的前臺(tái)工作和后臺(tái)工作。
[0017]圖3A示出根據(jù)一些實(shí)施例的其中操作系統(tǒng)在分開(kāi)的進(jìn)程中加載前臺(tái)組件和后臺(tái)組件的示例。
[0018]圖3B示出根據(jù)一些實(shí)施例的其中操作系統(tǒng)在同一進(jìn)程中加載前臺(tái)組件和后臺(tái)組件的示例。
[0019]圖4示出根據(jù)一些實(shí)施例的適于分開(kāi)地管理后臺(tái)工作和前臺(tái)工作的操作系統(tǒng)的示例。
[0020]圖5是根據(jù)一些實(shí)施例的可以響應(yīng)于部署代理事件的請(qǐng)求而由代理(broker)組件執(zhí)行的說(shuō)明性進(jìn)程的流程圖。
[0021]圖6示出根據(jù)一些實(shí)施例的可以由代理組件用來(lái)存儲(chǔ)有關(guān)代理事件的信息的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)。
[0022]圖7是根據(jù)一些實(shí)施例的可以由代理組件執(zhí)行以確定何時(shí)通過(guò)信號(hào)發(fā)送代理事件的說(shuō)明性進(jìn)程的流程圖。
[0023]圖8A是根據(jù)一些實(shí)施例的可以由代理基礎(chǔ)架構(gòu)執(zhí)行以將后臺(tái)組件與代理事件相關(guān)聯(lián)的說(shuō)明性進(jìn)程的流程圖。
[0024]圖SB示出根據(jù)一些實(shí)施例的可以用來(lái)存儲(chǔ)與后臺(tái)組件相關(guān)聯(lián)的代理事件的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)。
[0025]圖9示出根據(jù)一些實(shí)施例的可以由代理基礎(chǔ)架構(gòu)執(zhí)行以確定何時(shí)執(zhí)行后臺(tái)組件和如何管理后臺(tái)組件的執(zhí)行的說(shuō)明性進(jìn)程900。
[0026]圖10示意性地示出其上可以實(shí)現(xiàn)本公開(kāi)內(nèi)容的各方面的說(shuō)明性計(jì)算機(jī)。
【具體實(shí)施方式】
[0027]本發(fā)明人已經(jīng)認(rèn)識(shí)和理解到現(xiàn)有操作系統(tǒng)執(zhí)行模型所產(chǎn)生的若干缺點(diǎn),并且已經(jīng)開(kāi)發(fā)了新的執(zhí)行模型,該新的執(zhí)行模型提供諸如改善的電池壽命和用戶體驗(yàn)之類的優(yōu)點(diǎn)。
[0028]例如,允許并行執(zhí)行任意數(shù)目的應(yīng)用的第一執(zhí)行模型可能導(dǎo)致太多進(jìn)程競(jìng)爭(zhēng)諸如處理器周期和存儲(chǔ)器之類的資源。這可能又導(dǎo)致資源約束環(huán)境中的遲緩性能,資源約束環(huán)境諸如在具有有限處理速度和存儲(chǔ)器的移動(dòng)設(shè)備上。如果該移動(dòng)設(shè)備依靠電池能量運(yùn)行,則無(wú)差別地執(zhí)行進(jìn)程可能也導(dǎo)致縮短的電池壽命。
[0029]另一方面,阻止除了一個(gè)激活的應(yīng)用外的所有應(yīng)用的第二執(zhí)行模型可能排除期望的多任務(wù)處理場(chǎng)景,諸如用戶在寫郵件,同時(shí)聽(tīng)音樂(lè)、接收全球定位系統(tǒng)(GPS)位置更新和/或接聽(tīng)進(jìn)來(lái)的因特網(wǎng)協(xié)議上語(yǔ)音(VoIP)呼叫。這些多任務(wù)處理場(chǎng)景需要即使當(dāng)用戶主動(dòng)與另一應(yīng)用交互時(shí)也能夠一定程度地執(zhí)行應(yīng)用。
[0030]第三執(zhí)行模型,S卩,按照相互排斥方式執(zhí)行同一應(yīng)用的前臺(tái)工作和后臺(tái)工作,可以類似地排除期望的多任務(wù)處理場(chǎng)景,諸如用戶經(jīng)由網(wǎng)頁(yè)瀏覽器閱讀一個(gè)網(wǎng)頁(yè)頁(yè)面,同時(shí)等待完成網(wǎng)頁(yè)下載。
[0031]盡管分開(kāi)實(shí)例化的第四執(zhí)行模型可以允許操作系統(tǒng)并行執(zhí)行同一應(yīng)用的后臺(tái)工作和前臺(tái)工作,但仍然存在很多潛在缺陷。例如,太過(guò)于依賴應(yīng)用開(kāi)發(fā)者編寫表現(xiàn)為與前臺(tái)-后臺(tái)區(qū)別一致的方式的代碼。即使應(yīng)用揭示呼叫參數(shù)以允許操作系統(tǒng)指示針對(duì)前臺(tái)工作對(duì)應(yīng)用進(jìn)行實(shí)例化還是針對(duì)后臺(tái)工作對(duì)應(yīng)用進(jìn)行實(shí)例化,開(kāi)發(fā)者也可能非故意地忽略在針對(duì)前臺(tái)工作對(duì)應(yīng)用進(jìn)行實(shí)例化時(shí)防止執(zhí)行后臺(tái)工作的程序邏輯,或者反之亦然。這破壞了操作系統(tǒng)有效控制后臺(tái)工作的資源消耗的能力,因?yàn)椴僮飨到y(tǒng)可能難以確定聲稱的前臺(tái)實(shí)例是否僅執(zhí)行前臺(tái)工作(例如,響應(yīng)經(jīng)由用戶接口接收到的輸入)并且不執(zhí)行任何不必要或者效率不高的后臺(tái)工作(例如,周期性地與服務(wù)器同步)。
[0032]分開(kāi)實(shí)例化方法也可能給用開(kāi)發(fā)者施加了負(fù)擔(dān)來(lái)操控有關(guān)并行執(zhí)行的復(fù)雜性。例如,當(dāng)同一應(yīng)用的前臺(tái)實(shí)例和后臺(tái)實(shí)例并行執(zhí)行時(shí),兩個(gè)實(shí)例可能在不同的上下文中執(zhí)行并且可能不共享狀態(tài)。作為結(jié)果,兩個(gè)實(shí)例可能能夠僅通過(guò)明確由操作系統(tǒng)提供的機(jī)制來(lái)通信,這可能使得計(jì)算機(jī)代碼復(fù)雜化。本發(fā)明人已經(jīng)認(rèn)識(shí)和理解到,盡管后臺(tái)工作和前臺(tái)工作之間的這種解耦合可能是期望的,但也會(huì)期望賦予開(kāi)發(fā)者選項(xiàng),以不支持在不同上下文中并行執(zhí)行多個(gè)實(shí)例。
[0033]因此,在一些實(shí)施例中,提供更靈活的執(zhí)行模型以允許操作系統(tǒng)與前臺(tái)工作不同地管理后臺(tái)工作。
[0034]在一個(gè)方面中,可以解耦合針對(duì)前臺(tái)工作和后臺(tái)工作的應(yīng)用邏輯,使得允許操作系統(tǒng)分開(kāi)地加載前臺(tái)工作和后臺(tái)工作,并且使得當(dāng)作出調(diào)度決策時(shí)不同地處理前臺(tái)工作和后臺(tái)工作。
[0035]例如,在一些實(shí)施例中,應(yīng)用可以包括分開(kāi)的組件,一些組件指定為前臺(tái)組件,其它組件指定為后臺(tái)組件。操作系統(tǒng)可以基于組件的指定向它們施加不同的策略,其中可以設(shè)計(jì)策略以促進(jìn)資源的有效使用,同時(shí)向用戶提供豐富的多任務(wù)處理體驗(yàn)。
[0036]例如,可以針對(duì)后臺(tái)組件實(shí)施一個(gè)或更多個(gè)資源管理策略。這些策略可以設(shè)計(jì)為基于將由后臺(tái)組件使用的資源限制何時(shí)執(zhí)行該后臺(tái)組件。實(shí)施這種策略可以有助于為激活的應(yīng)用(即,用戶主動(dòng)與之交互的應(yīng)用)保存能量和/或保留充足的資源。這種策略盡管不是必須但可以通過(guò)在諸如本領(lǐng)域已知的沙盒之類的受控執(zhí)行環(huán)境中執(zhí)行后臺(tái)組件來(lái)進(jìn)行實(shí)施,由此將后臺(tái)組件與前臺(tái)組件隔離開(kāi)。
[0037]在另一方面中,應(yīng)用開(kāi)發(fā)者可以具有選項(xiàng),以不支持在不同進(jìn)程中并行執(zhí)行同一應(yīng)用的前臺(tái)組件和后臺(tái)組件。選擇這樣的選項(xiàng)可以導(dǎo)致更簡(jiǎn)單且更有效的程序代碼。
[0038]在一些實(shí)施例中,可以在能夠獨(dú)立于彼此而執(zhí)行的分開(kāi)的可執(zhí)行代碼塊中提供前臺(tái)組件和后臺(tái)組件。在一些其它實(shí)施例中,前臺(tái)組件和后臺(tái)組件可以具有不同的進(jìn)入點(diǎn),使得操作系統(tǒng)可以在同一進(jìn)程中但在不同線程中加載前臺(tái)組件和后臺(tái)組件,由此使得前臺(tái)組件和后臺(tái)組件能夠在共享的狀態(tài)下一起執(zhí)行。以此方式,操作系統(tǒng)仍能夠?qū)⑴c后臺(tái)工作相關(guān)聯(lián)的執(zhí)行線程和與前臺(tái)工作相關(guān)聯(lián)的執(zhí)行線程區(qū)分開(kāi),而不需要應(yīng)用操控在不同進(jìn)程中并行執(zhí)行的各種復(fù)雜性。
[0039]如果應(yīng)用確實(shí)支持并行執(zhí)行,則操作系統(tǒng)可能能夠選擇在同一進(jìn)程或者在分開(kāi)的進(jìn)程中加載前臺(tái)組件和后臺(tái)組件。在這些選項(xiàng)之間進(jìn)行選擇可能考慮多種因素。例如,如上所討論的,將后臺(tái)工作與前臺(tái)工作分開(kāi)可以允許操作系統(tǒng)在受特定資源約束的指定環(huán)境(例如,為主控后臺(tái)組件而構(gòu)建的沙盒)中運(yùn)行后臺(tái)工作。此外,將后臺(tái)工作與前臺(tái)工作分開(kāi)可以減少存儲(chǔ)器占用面積(footprint),因?yàn)楫?dāng)應(yīng)用僅執(zhí)行后臺(tái)工作時(shí)不需要加載僅與用戶接口(UI)功能性有關(guān)的可執(zhí)行代碼(例如庫(kù))。另一方面,如果應(yīng)用頻繁地執(zhí)行后臺(tái)工作,或者如果一個(gè)或更多個(gè)用戶頻繁地與應(yīng)用交互,則將前臺(tái)工作和后臺(tái)工作共同定位在同一進(jìn)程中可以是有利的,使得在前臺(tái)組件和后臺(tái)組件之間分擔(dān)進(jìn)程啟動(dòng)成本。然而,操作系統(tǒng)也能夠通過(guò)在分開(kāi)的環(huán)境(例如,軟件容器)中執(zhí)行后臺(tái)工作并且對(duì)該環(huán)境進(jìn)行高速緩沖來(lái)減少進(jìn)程啟動(dòng)成本。
[0040]在又一方面中,操作系統(tǒng)基于應(yīng)用提供的指明后臺(tái)工作的執(zhí)行預(yù)定所處的特定情形的信息可以確定何時(shí)執(zhí)行后臺(tái)工作。例如,在一些實(shí)施例中,操作系統(tǒng)可以僅響應(yīng)于一個(gè)或更多個(gè)指明的事件(也稱為“觸發(fā)器(trigger)”)調(diào)度后臺(tái)工作用于執(zhí)行。觸發(fā)器的示例包括但不限于有關(guān)網(wǎng)絡(luò)活動(dòng)的事件(例如,來(lái)自網(wǎng)絡(luò)的分組)、有關(guān)用戶活動(dòng)的事件(例如,用戶登錄或注銷)、調(diào)度事件(例如,定時(shí)器到期)、有關(guān)外圍設(shè)備的事件(例如,打印機(jī)通知)等。
[0041]在一些其它實(shí)施例中,操作系統(tǒng)可以關(guān)于何時(shí)將執(zhí)行后臺(tái)工作而覆寫應(yīng)用的規(guī)范。例如,操作系統(tǒng)可以作為對(duì)旨在觸發(fā)后臺(tái)工作的事件進(jìn)行過(guò)濾的“代理”來(lái)起作用。在這種“代理執(zhí)行”模型中,應(yīng)用可以向操作系統(tǒng)注冊(cè)用于使得后臺(tái)組件執(zhí)行的一個(gè)或更多個(gè)觸發(fā)器,例如以執(zhí)行后臺(tái)工作的特定單元(也稱為“后臺(tái)任務(wù)”或者“工作項(xiàng)”)。并不是讓這種觸發(fā)器直接引起后臺(tái)組件的執(zhí)行,而是操作系統(tǒng)可以引入作決策的附加層。例如,當(dāng)應(yīng)用指明的觸發(fā)器起動(dòng)時(shí),操作系統(tǒng)可以決定是否通過(guò)信號(hào)發(fā)送所謂的“代理事件”,該“代理事件”又可以使后臺(tái)組件得以執(zhí)行。以此方式,操作系統(tǒng)可以最終決定何時(shí)執(zhí)行后臺(tái)組件。例如,電子郵件客戶端可以注冊(cè)后臺(tái)同步任務(wù)用于周期性執(zhí)行(例如,每15分鐘),并且操作系統(tǒng)可以設(shè)定適當(dāng)?shù)亩〞r(shí)器,并且當(dāng)定時(shí)器到期時(shí),基于那時(shí)存在的操作條件來(lái)決定是否執(zhí)行該任務(wù)。備選地或者附加地,操作系統(tǒng)可以實(shí)現(xiàn)如下策略,該策略限制應(yīng)用可以向操作系統(tǒng)注冊(cè)多少個(gè)特定類型的觸發(fā)器。在一個(gè)示例中,操作系統(tǒng)可以限制應(yīng)用可以將警報(bào)時(shí)間注冊(cè)為觸發(fā)器的次數(shù),其中該限制可以為任意適當(dāng)定義的值。這種策略可能是有利的,因?yàn)榫瘓?bào)事件可以將計(jì)算機(jī)從“睡眠”模式中“喚醒”,使得限制警報(bào)事件的發(fā)生可以提高電池壽命O
[0042]如上所述,操作系統(tǒng)可以實(shí)施一個(gè)或更多個(gè)資源管理策略,該一個(gè)或更多個(gè)資源管理策略被設(shè)計(jì)為控制后臺(tái)工作的資源消耗。在一些實(shí)施例