立即遠(yuǎn)程呈現(xiàn)相關(guān)申請的交叉引用本申請是非臨時的,并且要求2010年10月1日提交的標(biāo)題為“Multi-OperatingSystemPortableDockingDevice”、序列號為No.61/389,117的美國臨時申請,2011年7月13日提交的標(biāo)題為“DockableMobileSoftwareArchitecture”、序列號為No.61/507,199的美國臨時申請,2011年7月13日提交的標(biāo)題為“Cross-EnvironmentCommunicationFramework”、序列號為No.61/507,201的美國臨時申請,2011年7月13日提交的標(biāo)題為“Multi-OperatingSystem”、序列號為No.61/507,203的美國臨時申請,2011年7月13日提交的標(biāo)題為“Auto-ConfigurationofaDockedSysteminMulti-OSEnvironment”、序列號為No.61/507,206的美國臨時申請,以及2011年7月13日提交的標(biāo)題為“Auto-WakingofaSuspendedSecondaryOSinaDockableSystem”、序列號為No.61/507,209的美國臨時申請的申請日的權(quán)益,其中針對所有目的通過引用在此而并入前述優(yōu)先權(quán)申請的全部內(nèi)容。
技術(shù)領(lǐng)域:
本申請總地涉及移動計(jì)算環(huán)境領(lǐng)域,并且更具體地涉及通過在單個移動計(jì)算設(shè)備中使用多個操作系統(tǒng)來支持多個用戶環(huán)境。
背景技術(shù):
:移動計(jì)算設(shè)備在當(dāng)今社會變得無處不在。例如,在2008年年底,百分之九十的美國人擁有移動無線設(shè)備。同時,移動設(shè)備的能力正在快速進(jìn)步,包括將高級計(jì)算能力與移動電話能力進(jìn)行集成的智能電話。移動提供商已經(jīng)基于若干不同平臺在最近三年內(nèi)發(fā)布了數(shù)以百計(jì)的新的智能電話(例如,蘋果iPhone,Android,BlackBerry,Palm,以及WindowsMobile)。在美國,智能電話在2010年中期的占有率達(dá)到了大約23%,并且在一些年齡段超過了35%。在歐洲,智能電話市場從2009年到2010年增長了41%,僅僅在五個最大的歐洲國家,在2010年7月就有超過6000萬智能電話用戶。盡管智能電話在普及度和計(jì)算能力方面取得進(jìn)步,但它們提供了有限的用戶體驗(yàn)。具體地,它們典型地具有被修改用于移動設(shè)備硬件的操作系統(tǒng)和一組受限制的可用于修改后的操作系統(tǒng)的應(yīng)用程序。例如,許多智能電話運(yùn)行Google的Android(安卓)操作系統(tǒng)。Android僅僅運(yùn)行被專門開發(fā)用于在基于Java的虛擬機(jī)運(yùn)行時環(huán)境中運(yùn)行的應(yīng)用程序。另外,盡管Android是基于修改的Linux內(nèi)核,但它使用與Linux不同的標(biāo)準(zhǔn)C庫、系統(tǒng)管理器和服務(wù)。相應(yīng)地,為Linux編寫的應(yīng)用程序在不進(jìn)行修改或者移植的情況下不能在Android上運(yùn)行。類似地,蘋果的iPhone使用iOS移動操作系統(tǒng)。同樣,盡管iOS起源于MacOSX,但為OSX開發(fā)的應(yīng)用程序不能在iOS上運(yùn)行。因此,盡管許多應(yīng)用程序可用于諸如Android和iOA之類的移動操作系統(tǒng),但許多其它的用于諸如Linux和MacOSX之類的桌面操作系統(tǒng)的普通應(yīng)用程序不可用于移動平臺。相應(yīng)地,智能電話典型地適合于一組有限的用戶體驗(yàn)并且提供主要為移動環(huán)境設(shè)計(jì)的應(yīng)用程序。具體地,智能電話不提供適合的桌面用戶體驗(yàn),它們也不運(yùn)行多數(shù)普通的桌面應(yīng)用程序。結(jié)果,許多用戶攜帶并且使用多個計(jì)算設(shè)備,包括智能電話、膝上型計(jì)算機(jī),和/或平板計(jì)算機(jī)。在這種情況下,每個設(shè)備具有其自身的CPU、存儲器、文件存儲設(shè)備,和操作系統(tǒng)。智能電話與其它計(jì)算設(shè)備之間的連接和文件共享涉及通過無線或者有線連接將一個設(shè)備(例如,運(yùn)行移動OS的智能電話)鏈接到完全不同的第二個設(shè)備(例如,運(yùn)行桌面OS的筆記本、臺式機(jī)或者平板計(jì)算機(jī))。通過在每個設(shè)備上單獨(dú)運(yùn)行的應(yīng)用程序之間進(jìn)行數(shù)據(jù)同步而跨越各設(shè)備共享信息。被典型地稱為“同步”的該過程是麻煩的并且通常需要用戶的主動管理。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的實(shí)施例針對在單個移動計(jì)算設(shè)備中提供智能電話的移動計(jì)算體驗(yàn)和輔助終端環(huán)境的合適用戶體驗(yàn)。輔助終端環(huán)境可以是通過有線(例如USB、Firewire、Thunderbolt等等)或者無線(例如藍(lán)牙、WiFi等等)連接而連接到計(jì)算設(shè)備的視覺呈現(xiàn)設(shè)備(例如,監(jiān)視器或者顯示器)、輸入設(shè)備(例如,鼠標(biāo)、觸控板、觸摸屏、鍵盤等等),以及其它計(jì)算外設(shè)(例如,HDD、光盤驅(qū)動器、存儲棒、相機(jī)、打印機(jī)等等)的某些組合。在實(shí)施例中,與移動環(huán)境的用戶體驗(yàn)相關(guān)聯(lián)的移動操作系統(tǒng)和與輔助終端環(huán)境的用戶體驗(yàn)相關(guān)聯(lián)的桌面操作系統(tǒng)并發(fā)地(concurrently)并且獨(dú)立地在共享的內(nèi)核上運(yùn)行。根據(jù)與各個實(shí)施例一致的一個方面,通過迭代地執(zhí)行以下步驟來保持第一和第二應(yīng)用程序的應(yīng)用程序圖形,第一和第二應(yīng)用程序二者被編譯用于第一操作系統(tǒng)并且處于第一操作系統(tǒng)內(nèi)的活動的并發(fā)執(zhí)行中,所述步驟包括:使用第一操作系統(tǒng)計(jì)算對第一應(yīng)用程序的表面的更新,使用第一操作系統(tǒng)呈現(xiàn)更新的第一應(yīng)用程序的表面以在第一存儲位置生成第一圖形幀,使用第一操作系統(tǒng)計(jì)算對第二應(yīng)用程序的表面的更新,在第二存儲位置存儲更新的第二應(yīng)用程序的表面,該第二存儲位置是在共享的內(nèi)核上并發(fā)地運(yùn)行的第一操作系統(tǒng)和第二操作系統(tǒng)二者可訪問的共享的存儲位置,以及使用第二操作系統(tǒng)的控制臺應(yīng)用程序來呈現(xiàn)更新的第二應(yīng)用程序的表面以便在第三存儲位置生成第二圖形幀。根據(jù)與各個實(shí)施例一致的其它方面,可以向與第一操作系統(tǒng)相關(guān)聯(lián)的第一計(jì)算環(huán)境的顯示器顯示來自第一存儲位置的第一圖形幀;以及可以向與第二操作系統(tǒng)相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器顯示來自第三存儲位置的第二圖形幀??梢越?jīng)由控制臺程序向與第二操作系統(tǒng)相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器顯示來自第三存儲位置的第二圖形幀。控制臺應(yīng)用程序可以接收指示更新的表面在第二存儲位置可用的繪制通知。接收繪制通知可以包括接收第二存儲位置的文件描述符??梢酝ㄟ^進(jìn)程間通信信道接收繪制通知。該方法可以包括:通過將文件描述符映射到控制臺應(yīng)用程序的處理空間來接收對第二存儲位置的參考(reference)和/或通過所述參考來讀取第二存儲位置以呈現(xiàn)更新的第二應(yīng)用程序的表面。根據(jù)與各個實(shí)施例一致的其它方面,該方法可以包括:將控制臺應(yīng)用程序中的渲染器對象實(shí)例化,并且在第一操作系統(tǒng)的圖形服務(wù)器中注冊渲染器對象的遠(yuǎn)程接口以便接收第一應(yīng)用程序的表面的繪制通知。第一操作系統(tǒng)可以是移動操作系統(tǒng),第二操作系統(tǒng)可以是桌面操作系統(tǒng)。第二應(yīng)用程序可以與第二操作系統(tǒng)的圖形服務(wù)器不兼容。第二應(yīng)用程序可以是Andriod(安卓)應(yīng)用程序并且第二操作系統(tǒng)的圖形服務(wù)器可以是X-windows圖形服務(wù)器。呈現(xiàn)更新的第二應(yīng)用程序的表面可以包括通過層順序來合成更新的表面。根據(jù)與各個實(shí)施例一致的其它方面,一種移動計(jì)算設(shè)備包括在第一操作系統(tǒng)內(nèi)處于活動并發(fā)執(zhí)行中的第一應(yīng)用程序和第二應(yīng)用程序。第一圖形表面與第一應(yīng)用程序相關(guān)聯(lián),并且第一操作系統(tǒng)的圖形服務(wù)器可操作地呈現(xiàn)第一圖形表面以在第一存儲位置生成第一圖形幀。第二圖形表面與第二應(yīng)用程序相關(guān)聯(lián),第二圖形表面被存儲在第二存儲位置中,第二存儲位置是可由在共享的內(nèi)核上并發(fā)地運(yùn)行的第一操作系統(tǒng)和第二操作系統(tǒng)二者訪問的共享的存儲位置??刂婆_應(yīng)用程序在第二操作系統(tǒng)內(nèi)運(yùn)行,控制臺應(yīng)用程序可操作地呈現(xiàn)第二圖形表面以在第三存儲位置生成第二圖形幀。根據(jù)與各個實(shí)施例一致的其它方面,由控制臺應(yīng)用程序?qū)嵗秩酒鲗ο?,其包括用于呈現(xiàn)第二圖形表面以生成第二圖形幀的遠(yuǎn)程方法??刂婆_應(yīng)用程序可以從第一操作系統(tǒng)的圖形服務(wù)器接收指示第二圖形表面已經(jīng)被更新的繪制通知。第二操作系統(tǒng)的圖形服務(wù)器可以是X-windows類型的圖形服務(wù)器,第二應(yīng)用程序可以使用與第二操作系統(tǒng)的X-windows類型的圖形服務(wù)器不兼容的第一操作系統(tǒng)的圖形庫。附圖說明在參考附圖中圖示了本發(fā)明的實(shí)施例,其中類似的標(biāo)號在整個對圖的描述中指代類似的元素。圖1圖示了根據(jù)各個實(shí)施例的提供多個用戶計(jì)算體驗(yàn)的計(jì)算環(huán)境。圖2圖示了根據(jù)各個實(shí)施例的用于移動計(jì)算設(shè)備的示例性的系統(tǒng)架構(gòu)。圖3圖示了根據(jù)各個實(shí)施例的用于計(jì)算環(huán)境的操作系統(tǒng)架構(gòu)。圖4圖示了采用實(shí)施例的各個方面的示例性的計(jì)算環(huán)境。圖5圖示了根據(jù)各個實(shí)施例的用于計(jì)算環(huán)境的操作系統(tǒng)架構(gòu)的方面。圖6更詳細(xì)地圖示了根據(jù)各個實(shí)施例的、可以用于配置移動計(jì)算設(shè)備的操作系統(tǒng)架構(gòu)的示例性的引導(dǎo)例程。圖7圖示了根據(jù)各個實(shí)施例的、用于提供應(yīng)用程序和/或用戶交互空間的交叉環(huán)境呈現(xiàn)的操作系統(tǒng)架構(gòu)配置。圖8圖示了根據(jù)各個實(shí)施例的具有多個用戶環(huán)境的計(jì)算環(huán)境。圖9圖示了根據(jù)各個實(shí)施例的交叉環(huán)境遠(yuǎn)程呈現(xiàn)的方面。圖10示出了根據(jù)各個實(shí)施例的、一種用于在非擴(kuò)展的渲染上下文(renderingcontext)中進(jìn)行交叉環(huán)境遠(yuǎn)程呈現(xiàn)的例示性方法的流程圖。圖11圖示了根據(jù)各個實(shí)施例的、一種用于交叉環(huán)境遠(yuǎn)程呈現(xiàn)的注冊和繪制過程流程。圖12示出了根據(jù)各個實(shí)施例的、一種用于在非擴(kuò)展的渲染上下文中進(jìn)行交叉環(huán)境呈現(xiàn)的另一例示性方法的流程圖。圖13圖示了根據(jù)各個實(shí)施例的、用于對交叉環(huán)境應(yīng)用程序提供用戶交互支持的操作系統(tǒng)架構(gòu)配置300b。圖14圖示了根據(jù)各個實(shí)施例的、使用非擴(kuò)展的圖形上下文呈現(xiàn)的交叉環(huán)境應(yīng)用程序的用戶交互支持的方面。圖15圖示了根據(jù)各個實(shí)施例的、使用擴(kuò)展的渲染上下文跨越多個OS進(jìn)行并發(fā)的用戶界面支持的方面。圖16示出了根據(jù)各個實(shí)施例的、一種用于在擴(kuò)展的渲染上下文中進(jìn)行交叉環(huán)境遠(yuǎn)程呈現(xiàn)的例示性方法的流程圖。圖17示出了根據(jù)各個實(shí)施例的、另一種用于在擴(kuò)展的渲染上下文中進(jìn)行交叉環(huán)境呈現(xiàn)的例示性方法的流程圖。圖18a圖示了根據(jù)各個實(shí)施例的、在擴(kuò)展的渲染上下文中在交叉環(huán)境呈現(xiàn)時可以采用的用戶環(huán)境。圖18b圖示了根據(jù)各個實(shí)施例的、在擴(kuò)展的渲染上下文中在交叉環(huán)境呈現(xiàn)時可以采用的擴(kuò)展的輸入隊(duì)列。圖19圖示了根據(jù)各個實(shí)施例的、在擴(kuò)展的渲染上下文中在交叉環(huán)境呈現(xiàn)時可以采用的一種接收輸入事件的方法。圖20示出了根據(jù)各個實(shí)施例的、一種提供鏡像的上下文的交叉環(huán)境呈現(xiàn)的例示性方法的流程圖。圖21示出了根據(jù)各個實(shí)施例的、另一種提供鏡像的上下文的交叉環(huán)境呈現(xiàn)的例示性方法的流程圖2100。圖22圖示了根據(jù)各個實(shí)施例的、交叉環(huán)境重定向的方面。圖23圖示了根據(jù)各個實(shí)施例的、一種為執(zhí)行交叉環(huán)境重定向的方面可以采用的例示性方法的流程圖。圖24圖示了根據(jù)各個實(shí)施例的、另一種為執(zhí)行交叉環(huán)境重定向的方面可以采用的例示性方法的流程圖。具體實(shí)施方式包括計(jì)算能力的移動電話設(shè)備(即,智能電話、手機(jī)、移動站、便攜式通信設(shè)備等等)日益普及。這些智能電話中的許多包括在移動處理器上運(yùn)行的移動操作系統(tǒng)(“OS”)。盡管移動處理器和移動OS已經(jīng)增加了這些設(shè)備的能力,但智能電話還沒有取代諸如桌面或者筆記本計(jì)算機(jī)之類的個人計(jì)算機(jī)(“PC”)環(huán)境(即,Windows,MacOSX,Linux)的趨勢,這至少是因?yàn)槠涮峁┑挠脩趔w驗(yàn)有限。具體地,在智能電話上看到的(多個)用戶接口設(shè)備典型地被裁制為適應(yīng)移動環(huán)境。例如,智能電話典型地使用小的拇指風(fēng)格的QWERTY鍵盤、觸摸屏顯示器、棘輪,和/或滾輪作為用戶接口設(shè)備。移動OS、以及為移動OS開發(fā)的應(yīng)用程序(即,“Apps”)典型地被設(shè)計(jì)用于包括移動處理器和在移動設(shè)備上存在的(多個)用戶接口設(shè)備的移動環(huán)境的約束條件。因此,已經(jīng)為PC操作環(huán)境開發(fā)的許多應(yīng)用程序不可用于移動OS(即,不能被編譯并且不能在移動OS上運(yùn)行)。另外,對于諸如打字或者編輯文檔之類的某些任務(wù),全尺寸鍵盤和大顯示器比典型地在智能電話上看到的用戶接口組件更易使用。相應(yīng)地,用戶典型地使用單獨(dú)的計(jì)算設(shè)備用于每種計(jì)算體驗(yàn),包括智能電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī),和/或桌面計(jì)算機(jī)。在這種情況下,每個設(shè)備具有其自身的CPU、存儲器、文件存儲設(shè)備,和OS。智能電話與其它設(shè)備之間的連接和文件共享涉及通過無線或者有線連接將一個設(shè)備(例如,運(yùn)行移動OS的智能電話)鏈接到完全不同的第二設(shè)備(例如,運(yùn)行桌面OS的筆記本、臺式機(jī)或者平板計(jì)算機(jī))。通過在每個設(shè)備上單獨(dú)運(yùn)行的應(yīng)用程序之間進(jìn)行數(shù)據(jù)同步而跨越各設(shè)備共享信息。典型地被稱為“同步”的該過程是麻煩的并且通常需要用戶的主動管理。圖1圖示了根據(jù)各個實(shí)施例的計(jì)算環(huán)境100,其利用包括與單獨(dú)的用戶交互空間(即,用戶環(huán)境)相關(guān)聯(lián)的多個操作系統(tǒng)的移動設(shè)備提供了多種用戶計(jì)算體驗(yàn)。計(jì)算環(huán)境100的第一用戶交互空間115包括移動計(jì)算設(shè)備110的(多個)顯示器116和I/O設(shè)備118。當(dāng)移動計(jì)算設(shè)備110作為單機(jī)移動設(shè)備操作時,移動OS130通過用戶交互空間115呈現(xiàn)典型的移動計(jì)算用戶體驗(yàn)。由移動OS130提供的移動計(jì)算體驗(yàn)典型地包括移動電話能力以及適合于包括(多個)顯示器116和(多個)I/O設(shè)備118的用戶交互空間115的圖形用戶界面(“GUI”)。例如,(多個)顯示器116可以是(多個)觸摸屏顯示器,并且可以使用(多個)觸摸屏顯示器116主要通過移動OS130的基于手勢的GUI來控制在移動OS130上運(yùn)行的應(yīng)用程序(即,“Apps”)。在計(jì)算環(huán)境100中,移動計(jì)算設(shè)備110可以與包括I/O設(shè)備144、146和/或148的輔助終端環(huán)境140對接(dock)。在實(shí)施例中,通過將移動計(jì)算設(shè)備110的端口120連接到輔助終端環(huán)境140的端口142而將移動計(jì)算設(shè)備110與輔助終端環(huán)境140對接。在這種情況下,輔助終端環(huán)境140呈現(xiàn)計(jì)算環(huán)境100的第二用戶交互空間。在某些情況下,第二用戶交互空間可以更適合于桌面計(jì)算體驗(yàn)。在這些情況下,桌面OS160可以與輔助終端環(huán)境140相關(guān)聯(lián)以便通過第二用戶交互空間提供筆記本計(jì)算機(jī)、平板計(jì)算機(jī),或者桌面計(jì)算機(jī)環(huán)境的完整能力。在實(shí)施例中,移動OS130和桌面OS160在移動計(jì)算設(shè)備110的處理器上的共享內(nèi)核上并發(fā)地運(yùn)行。在2011年8月24日提交的題為“MULTI-OPERATINGSYSTEM”的美國專利申請NO.13/217,108中更詳細(xì)地描述了在共享的內(nèi)核上并發(fā)執(zhí)行移動OS和桌面OS,在此通過引用將其并入。以此方式,單個移動計(jì)算設(shè)備可以通過第一用戶交互空間提供移動計(jì)算體驗(yàn)并且通過第二用戶交互空間提供桌面計(jì)算體驗(yàn)。盡管攜帶一個可以通過單獨(dú)的用戶交互空間并發(fā)地執(zhí)行多個操作系統(tǒng)的移動設(shè)備的能力解決了用戶的多個問題,但每個用戶交互空間(通過并發(fā)地運(yùn)行移動OS和桌面OS)通常提供了單獨(dú)的一組可用的應(yīng)用程序和用戶功能。本發(fā)明的實(shí)施例針對便于在第二OS(例如,桌面OS160)內(nèi)以看得見的方式執(zhí)行第一OS(例如移動OS130)中運(yùn)行的應(yīng)用程序,其中第一和第二OS在共享的內(nèi)核上并發(fā)地運(yùn)行。值得注意的,對于被編譯用于第一(例如,非兼容的)OS并且在第一OS中運(yùn)行的應(yīng)用程序而言,在第二OS中向用戶提供輸入(例如,輸入設(shè)備)和輸出(例如,顯示器、音頻等)支持涉及要解決多個問題。當(dāng)處理并發(fā)運(yùn)行的多個應(yīng)用程序的顯示和交互性時,可能出現(xiàn)附加的問題。例如,考慮第一和第二應(yīng)用程序二者被編譯用于第一OS并且在第一OS上并發(fā)地運(yùn)行。然而,用戶期望通過與第一OS相關(guān)聯(lián)的輸入/輸出設(shè)備(例如使用移動計(jì)算環(huán)境的觸摸屏顯示器)觀看第一應(yīng)用程序的圖形輸出并且與第一應(yīng)用程序交互,以及通過與第二OS相關(guān)聯(lián)的輸入/輸出設(shè)備(例如使用桌面計(jì)算環(huán)境的顯示器、鍵盤,以及鼠標(biāo))觀看第二應(yīng)用程序的圖形輸出并且與第二應(yīng)用程序交互。處理這種情形涉及并發(fā)地處理多個顯示環(huán)境中的圖形并且并發(fā)地處理全部在單獨(dú)的(例如非兼容的)操作系統(tǒng)上的單獨(dú)的應(yīng)用程序的多個輸入/輸出流。相應(yīng)地,實(shí)施例提供了各種新穎的技術(shù)用于:在第二OS的用戶交互空間內(nèi)訪問第一OS的應(yīng)用程序,在第二OS的用戶交互空間內(nèi)顯示在第一OS中運(yùn)行的應(yīng)用程序,以及通過第二OS的用戶交互空間處理與那些應(yīng)用程序的用戶交互。實(shí)施例包括支持交叉環(huán)境應(yīng)用程序的各種顯示和用戶交互特征的第二OS的控制臺應(yīng)用程序(consoleapplication)。一組實(shí)施例使用所謂的“非擴(kuò)展的”渲染上下文提供對跨越多個OS計(jì)算環(huán)境的并發(fā)的用戶界面支持的技術(shù)。另一組實(shí)施例使用所謂的“擴(kuò)展的”渲染上下文提供對跨越多個OS計(jì)算環(huán)境的并發(fā)的用戶界面支持的技術(shù)。又一組實(shí)施例使用所謂的“鏡像的”上下文提供對跨越多個OS的并發(fā)的用戶界面支持的技術(shù)。再一組實(shí)施例提供從第二OS的用戶交互空間到第一OS上可用的應(yīng)用程序的訪問。以下將更充分地描述這些組的實(shí)施例中的每一個。如上所述,計(jì)算環(huán)境100通過與并發(fā)地運(yùn)行多個操作系統(tǒng)的移動設(shè)備相關(guān)聯(lián)的多個用戶交互空間來提供多種用戶計(jì)算體驗(yàn)。具體地,因?yàn)橐苿佑?jì)算設(shè)備110包括多個OS,其中每個OS適合于特定的計(jì)算環(huán)境,移動計(jì)算設(shè)備110可用適配于外部I/O設(shè)備以便利用單個移動計(jì)算設(shè)備提供寬范圍的用戶體驗(yàn)。例如,用戶可能具有移動計(jì)算設(shè)備110和在膝上型外殼內(nèi)包括鍵盤、顯示器、和/或(多個)定點(diǎn)設(shè)備的輔助終端環(huán)境140。當(dāng)移動計(jì)算設(shè)備110與膝上型類型的輔助終端環(huán)境對接時,通過輔助終端環(huán)境140可得到桌面OS160的完整能力。圖2圖示了根據(jù)各個實(shí)施例的移動計(jì)算環(huán)境110的示例性的硬件系統(tǒng)架構(gòu)。移動計(jì)算設(shè)備硬件112包括移動處理器114,移動處理器114包括一個或多個CPU核204以及外部顯示接口220。通常,移動計(jì)算設(shè)備硬件112還包括I/O設(shè)備118、存儲器206、存儲設(shè)備208、連接到觸摸屏顯示器116的觸摸屏顯示器控制器210、連接到電池216的電源管理IC214、蜂窩調(diào)制解調(diào)器218、通信設(shè)備222,和/或通過各種通信信號和接口連接到處理器114的其它設(shè)備224。I/O設(shè)備118通常包括按鈕以及在移動計(jì)算設(shè)備110中可以采用的其它用戶接口組件。例如,I/O設(shè)備118可以包括一組按鈕(例如,回退、菜單、主屏、搜索等等)、屏外(off-screen)手勢區(qū)、棘輪、滾輪、QWERTY鍵盤等等。其它設(shè)備224可以包括例如,GPS設(shè)備、LAN連接、麥克風(fēng)、揚(yáng)聲器、相機(jī)、加速計(jì),和/或MS/MMC/SD/SDIO卡接口。外部顯示接口220可以是任何適合的顯示接口(例如,VGA、DVI、HDMI等等)。處理器114可以是基于ARM的移動處理器。在實(shí)施例中,移動處理器114是基于ARM的移動處理器,諸如德州儀器OMAP3430、MarvellPXA320、FreescaleiMX51,或者QualcommQSD8650/8250。然而,移動處理器114可以是另一種基于ARM的適合的移動處理器或者基于其它處理器架構(gòu)(諸如例如基于x86處理器架構(gòu)或者基于其它RISC處理器架構(gòu))的處理器。盡管圖2圖示了用于移動計(jì)算設(shè)備110的一種示例性的硬件實(shí)現(xiàn)方式112,但是其它架構(gòu)也是在本發(fā)明的范圍之內(nèi)可以想到的。例如,圖2中圖示的移動處理器114外部的各種組件可以被集成到移動處理器114中??蛇x地,圖2中所示的被集成到移動處理器114內(nèi)部的外部顯示接口220可以位于移動處理器114的外部。另外,采用系統(tǒng)總線、離散的圖形處理器,和/或其它架構(gòu)性變型的其它計(jì)算機(jī)架構(gòu)也適合于采用本發(fā)明的方面。圖3圖示了根據(jù)各個實(shí)施例的可以采用來在移動計(jì)算設(shè)備110上并發(fā)地運(yùn)行移動OS130和桌面OS160的OS架構(gòu)300。如圖3圖示的,移動OS130和桌面OS160是獨(dú)立的操作系統(tǒng)。具體地,移動OS130和桌面OS160可以具有獨(dú)立并且不兼容的用戶庫、圖形系統(tǒng),和/或框架層??梢詫S架構(gòu)300的功能和指令作為計(jì)算機(jī)程序代碼存儲在移動計(jì)算設(shè)備110的有形的計(jì)算機(jī)可讀介質(zhì)上。例如,可以將OS架構(gòu)300的指令存儲在移動計(jì)算設(shè)備硬件112的(多個)存儲設(shè)備208中。在OS架構(gòu)300中,移動OS130和桌面OS160在共享的內(nèi)核320上并發(fā)地運(yùn)行。這意味著移動OS130和桌面OS160同時在共享的內(nèi)核320上運(yùn)行。具體地,移動OS130和桌面OS160二者例如通過對共享的內(nèi)核320進(jìn)行系統(tǒng)調(diào)用而通過同一內(nèi)核接口322連接到共享的內(nèi)核320。共享的內(nèi)核320管理用于移動OS130和桌面OS160二者的處理的任務(wù)調(diào)度。在這一點(diǎn)上,移動OS130和桌面OS160在共享的內(nèi)核320上獨(dú)立地并且并發(fā)地運(yùn)行。另外,如硬件接口312所圖示的,共享的內(nèi)核320直接在移動計(jì)算設(shè)備硬件112的移動處理器114上運(yùn)行。具體地,共享的內(nèi)核320直接管理移動計(jì)算設(shè)備硬件112的計(jì)算資源,諸如CPU調(diào)度、存儲器訪問,和I/O。在這一點(diǎn)上,硬件資源沒有被虛擬化,意味著移動OS130和桌面OS160通過內(nèi)核接口322而不是通過虛擬化的存儲器或I/O訪問來進(jìn)行系統(tǒng)調(diào)用。如圖3圖示,移動OS130具有庫層330、應(yīng)用框架層340,以及應(yīng)用層350。在移動OS130中,應(yīng)用352和354在移動OS130的應(yīng)用框架層340支持的應(yīng)用層350中運(yùn)行。應(yīng)用框架層340包括在移動OS130上運(yùn)行的應(yīng)用程序所使用的(多個)管理器342和(多個)服務(wù)344。例如,應(yīng)用框架層340可以包括窗口管理器、活動管理器、分組管理器、資源管理器、電話管理器、手勢控制器,和/或用于移動環(huán)境的其它管理器和服務(wù)。應(yīng)用框架層340可以包括執(zhí)行為移動OS130開發(fā)的應(yīng)用程序的移動應(yīng)用運(yùn)行時環(huán)境。可以針對移動計(jì)算資源,諸如低處理功率和/或有限的存儲空間,來優(yōu)化移動應(yīng)用運(yùn)行時環(huán)境。移動應(yīng)用運(yùn)行時環(huán)境可能依賴于用于進(jìn)程隔離、存儲器管理以及線程支持的內(nèi)核。庫層330包括實(shí)施諸如I/O和字符串操作、圖形功能、數(shù)據(jù)庫能力、通信能力,和/或其它功能和能力之類的普通功能的用戶庫332。如圖3圖示的,桌面OS160具有庫層360、框架層370,以及應(yīng)用層380。在桌面OS160中,應(yīng)用382和384在桌面OS160的應(yīng)用框架層370支持的應(yīng)用層380中運(yùn)行。應(yīng)用框架層370包括在桌面OS160上運(yùn)行的應(yīng)用程序所使用的(多個)管理器372和(多個)服務(wù)374。例如,應(yīng)用框架層370可以包括窗口管理器、活動管理器、分組管理器、資源管理器,和/或桌面環(huán)境所共有的其它管理器和服務(wù)。庫層360可以包括實(shí)施諸如I/O和字符串操作、圖形功能、數(shù)據(jù)庫能力、通信能力,和/或其它功能和能力之類的普通功能的用戶庫362。在本公開的各種實(shí)施例中,桌面OS160與移動OS130運(yùn)行在單獨(dú)的執(zhí)行環(huán)境中。例如,移動OS130可以運(yùn)行在根執(zhí)行環(huán)境中,桌面OS160可以運(yùn)行在根執(zhí)行環(huán)境下建立的次級執(zhí)行環(huán)境中。在移動OS130上運(yùn)行的處理和應(yīng)用程序訪問根執(zhí)行環(huán)境中的用戶庫332、(多個)管理器342和(多個)服務(wù)344。在桌面OS160上運(yùn)行的處理和應(yīng)用程序訪問次級執(zhí)行環(huán)境中的用戶庫362、(多個)管理器372和(多個)服務(wù)374。在實(shí)施例中,移動OS130和桌面160是具有不兼容的用戶庫、圖形系統(tǒng),和/或應(yīng)用框架的獨(dú)立的操作系統(tǒng)。因此,為移動OS130開發(fā)的應(yīng)用可能不能直接在桌面OS160上運(yùn)行,為桌面OS160開發(fā)的應(yīng)用可能不能直接在移動OS130上運(yùn)行。例如,在移動OS130的應(yīng)用層350中運(yùn)行的應(yīng)用程序352可能與桌面OS160不兼容,這意味著應(yīng)用程序352不能在桌面OS160上運(yùn)行。具體地,應(yīng)用352可能依賴對于桌面OS160的(多個)管理器372、(多個)服務(wù)374、和/或庫362不可用或者不兼容的移動OS130的(多個)管理器342、(多個)服務(wù)344、和/或庫332。結(jié)果,移動OS130和桌面OS160可能具有不同組的可用應(yīng)用程序。在這一點(diǎn)上,OS架構(gòu)300的移動OS130和桌面OS160通過經(jīng)由單獨(dú)的用戶交互空間可訪問的單獨(dú)的多組應(yīng)用程序提供了單獨(dú)的用戶體驗(yàn)。用戶可以通過與移動OS130相關(guān)聯(lián)的第一用戶交互空間訪問移動OS130上可用的(即,被編譯用于移動OS130并且被加載到移動OS130的執(zhí)行環(huán)境中的)應(yīng)用程序,并且通過與桌面OS160相關(guān)聯(lián)的第二用戶交互空間訪問在桌面OS160上可用的應(yīng)用程序。如上所述,移動操作系統(tǒng)典型地不使用與桌面操作系統(tǒng)相同的圖形環(huán)境。桌面OS的圖形環(huán)境被設(shè)計(jì)為針對靈活性和高性能。例如,由某些桌面OS使用的X-window系統(tǒng)以更高的處理和系統(tǒng)資源為代價提供了平臺和網(wǎng)絡(luò)的獨(dú)立性。相反,移動OS的圖形環(huán)境被設(shè)計(jì)為更多地針對效率和移動計(jì)算環(huán)境的特定用戶輸入設(shè)備而較少地針對靈活性。因?yàn)橐苿覱S和桌面OS的圖形環(huán)境經(jīng)常不同,所以不能通過將來自移動OS的圖形服務(wù)器的圖形信息重定向到桌面OS的圖形服務(wù)器而將在移動OS上運(yùn)行的應(yīng)用程序重定向?yàn)樵谧烂鍻S的用戶空間中進(jìn)行顯示。最廣泛采用的移動OS是Google(谷歌)的Android(安卓)。盡管Android是基于Linux,但它包括針對移動環(huán)境和移動處理器而對內(nèi)核和其它OS層進(jìn)行的修改。具體地,盡管Linux內(nèi)核是針對PC(即,x86)CPU架構(gòu)設(shè)計(jì)的,但Android內(nèi)核是針對基于ARM的移動處理器而修改的。針對在移動硬件架構(gòu)中典型存在的設(shè)備也特別調(diào)整了Android設(shè)備驅(qū)動器,所述移動硬件架構(gòu)包括觸摸屏、移動連接(GSM/EDGE,CDMA,Wi-Fi等等)、電池管理、GPS、加速計(jì),以及相機(jī)模塊,連同其它設(shè)備。另外,Android既不具有原生的XWindowSystem也不支持完整組的標(biāo)準(zhǔn)GNU庫,這使得難以將現(xiàn)有的GNU/Linux應(yīng)用程序或者庫移植到Android上。蘋果的(在iPhone上運(yùn)行的)iOS操作系統(tǒng)和微軟的WindowsPhone7是針對移動環(huán)境和移動硬件架構(gòu)被類似修改的。例如,盡管從MacOSX桌面OS中導(dǎo)出iOS,但普通的MacOSX應(yīng)用程序不能在iOS上原生地運(yùn)行。具體地,通過標(biāo)準(zhǔn)的開發(fā)者套件(“SDK”)開發(fā)iOS應(yīng)用程序以便在iOS的“CocoaTouch”運(yùn)行時環(huán)境內(nèi)運(yùn)行,其對于諸如基于觸摸的輸入、推送通知和系統(tǒng)服務(wù)之類的關(guān)鍵iOS特征提供了基本的應(yīng)用程序基礎(chǔ)結(jié)構(gòu)和支持。因此,為MacOSX編寫的應(yīng)用程序不能在沒有移植的情況下在iOS上運(yùn)行。另外,將MacOSX應(yīng)用程序移植到iOS上可能是困難的,這是因?yàn)閮蓚€OS的用戶庫和/或應(yīng)用框架層之間的差異、和/或移動硬件和桌面硬件的系統(tǒng)資源之間的差異。在與OS架構(gòu)300一致的一個實(shí)施例中,Android移動OS和全LinuxOS獨(dú)立地并且并發(fā)地在修改的Android內(nèi)核上運(yùn)行。在該實(shí)施例中,AndroidOS可以是修改的Android分布,而LinuxOS(“Hydroid”)可以是修改的DebianLinux桌面OS。圖4-6更詳細(xì)地圖示了根據(jù)各個實(shí)施例的可以在OS架構(gòu)300中采用的Android移動OS430、Android內(nèi)核520,以及HydroidOS660。如圖4圖示的,AndroidOS430包括通過應(yīng)用框架層440訪問的庫層432中的一組C/C++庫。庫層432包括特別針對Android開發(fā)的、要比“glibc”LinuxC庫更小并更快的“bionic”系統(tǒng)C庫439。庫層432還包括進(jìn)程間通信(“IPC”)庫436,其包括AndroidOS的“Binder”IPC機(jī)制的基本類。Binder是特別針對Android開發(fā)的以便允許進(jìn)程和服務(wù)之間進(jìn)行通信。圖4中的庫層432中示出的其它庫包括:支持媒體格式的記錄和回放的媒體庫435、管理對顯示子系統(tǒng)的訪問以及合成來自多個應(yīng)用程序的圖形層的表面(surface)管理器434、2D和3D圖形引擎438,以及輕量關(guān)系數(shù)據(jù)庫引擎437??梢员话ㄔ趲鞂?32中但是未在圖4中畫出的其它庫包括位圖和矢量字體呈現(xiàn)庫、公用庫、瀏覽器工具(即,WebKit等等),和/或安全通信庫(即,SSL等等)。AndroidOS430的應(yīng)用框架層440提供了開發(fā)平臺,該開發(fā)平臺允許開發(fā)者使用設(shè)備硬件的組件、訪問位置信息、運(yùn)行后臺服務(wù)、設(shè)置警報(bào),向狀態(tài)欄添加通知,等等??蚣軐?40還允許應(yīng)用程序公開它們的能力并且使用其它應(yīng)用程序的所公開的能力。Android移動OS430的應(yīng)用框架層440的組件包括活動管理器441、資源管理器442、窗口管理器443、對接管理器444、硬件和系統(tǒng)服務(wù)445、桌面監(jiān)視器服務(wù)446、多顯示器管理器447,以及遠(yuǎn)程通信服務(wù)448。Android移動OS430的框架層440中可以包括的其它組件包括:視圖系統(tǒng)、電話管理器、分組管理器、位置管理器,和/或通知管理器,連同其它管理器和服務(wù)。在AndroidOS430上運(yùn)行的應(yīng)用程序在Android面向?qū)ο髴?yīng)用框架之上的Android運(yùn)行時環(huán)境433中的Dalvik虛擬機(jī)431內(nèi)運(yùn)行。Dalvik虛擬機(jī)431是基于注冊的虛擬機(jī),并且運(yùn)行被設(shè)計(jì)用于減少存儲器使用和處理需求的緊湊的可執(zhí)行的格式。在AndroidOS430上運(yùn)行的應(yīng)用程序包括主屏幕451、電子郵件應(yīng)用程序452、電話應(yīng)用程序453、瀏覽器應(yīng)用程序454,和/或(多個)其它應(yīng)用程序(“APP(s)”)455。AndroidOS圖形系統(tǒng)使用客戶機(jī)/服務(wù)器模型。表面管理器(“SurfaceFlinger”)是圖形服務(wù)器,應(yīng)用程序是客戶機(jī)。SurfaceFlinger保持顯示器ID的列表并且跟蹤向顯示器ID分配應(yīng)用程序。在一個實(shí)施例中,移動計(jì)算設(shè)備110具有多個觸摸屏顯示器116。在該實(shí)施例中,顯示器ID0與一個觸摸屏顯示器116相關(guān)聯(lián),顯示器ID1與另一個觸摸屏顯示器116相關(guān)聯(lián)。顯示器ID2與這兩個觸摸屏顯示器116相關(guān)聯(lián)(即,同時在這兩個顯示器上顯示應(yīng)用程序)。ID大于2的顯示器是虛擬顯示器,意味著它們不與在移動計(jì)算設(shè)備硬件112上物理存在的顯示器相關(guān)聯(lián)。Android應(yīng)用程序的圖形信息包括窗口、視圖和畫布(canvas)。利用底層表面對象來實(shí)現(xiàn)每個窗口、視圖,和/或畫布。表面對象是雙緩沖的(前和后緩沖)并且在繪制的過程中被同步。SurfaceFlinger在共享的存儲器池中保持所有的表面,共享的存儲器池允許Android內(nèi)的所有處理訪問并且繪制到它們中而不用花費(fèi)高的拷貝操作并且也不用使用服務(wù)器側(cè)的繪制協(xié)議,諸如X-Windows。應(yīng)用程序總是繪制到后緩沖區(qū)中,而SurfaceFlinger從前緩沖區(qū)進(jìn)行讀取。SurfaceFlinger創(chuàng)建每個表面對象、保持所有的表面對象,并且還為每個應(yīng)用程序保持表面對象的列表。當(dāng)應(yīng)用程序完成在后緩沖區(qū)中的繪制時,其向SurfaceFlinger通知事件,這使得后緩沖區(qū)互換到前緩沖區(qū),并且將呈現(xiàn)表面信息的任務(wù)排隊(duì)給幀緩沖區(qū)。SurfaceFlinger監(jiān)視所有的窗口改變事件。當(dāng)一個或多個窗口改變事件出現(xiàn)時,SurfaceFlinger將表面信息呈現(xiàn)給幀緩沖區(qū)用于一個或多個顯示。呈現(xiàn)包括合成表面,即,基于表面的維度、透明度、z順序以及可見性合成最終的圖像幀。呈現(xiàn)還可以包括硬件加速(例如,用于圖形處理硬件的OpenGL2D和/或3D接口)。SurfaceFlinger在所有的表面對象上循環(huán)并且將它們的前緩沖區(qū)以其Z順序呈現(xiàn)給幀緩沖區(qū)。圖5更詳細(xì)地圖示了根據(jù)各個實(shí)施例的修改后的Android內(nèi)核520。修改后的Android內(nèi)核520包括觸摸屏顯示器驅(qū)動器521、(多個)相機(jī)驅(qū)動器522、(多個)藍(lán)牙驅(qū)動器523、共享的存儲分配器524、(多個)IPC驅(qū)動器525、(多個)USB驅(qū)動器526、(多個)WiFi驅(qū)動器527、(多個)I/O設(shè)備驅(qū)動器528,和/或功率管理模塊530。(多個)I/O驅(qū)動器528包括用于外部I/O設(shè)備的設(shè)備驅(qū)動器,所述外部I/O設(shè)備包括可以通過端口120連接到移動計(jì)算設(shè)備110的設(shè)備。修改后的Android內(nèi)核520可以包括其它驅(qū)動器和功能塊(包括低存儲器抑制器(lowmemorykiller)、內(nèi)核調(diào)試器、日志記錄能力,和/或其它硬件設(shè)備驅(qū)動器)。圖6更詳細(xì)地圖示了根據(jù)各個實(shí)施例的HydroidOS660。Hydroid是能夠運(yùn)行為標(biāo)準(zhǔn)Linux分布開發(fā)的幾乎任何應(yīng)用程序的全LinuxOS。具體地,HydroidOS660的庫層662包括支持聯(lián)網(wǎng)、圖形處理、數(shù)據(jù)庫管理、和其它普通程序功能的Linux庫。例如,任何庫662可以包括“glibc”LinuxC庫664、Linux圖形庫662(例如,GTK、OpenGL等等)、Linux公用庫661、Linux數(shù)據(jù)庫、和/或其它Linux用戶庫。應(yīng)用程序運(yùn)行在使用X-Server674、窗口管理器673、和/或桌面環(huán)境672的X-WindowsLinux圖形環(huán)境內(nèi)的Hydroid上。圖示的應(yīng)用程序包括字處理器681、電子郵件應(yīng)用程序682、電子數(shù)據(jù)表應(yīng)用程序683、瀏覽器684和其它(多個)應(yīng)用程序685。LinuxOS圖形系統(tǒng)基于X-windows(或者“X11”)圖形系統(tǒng)。X-windows是獨(dú)立于平臺、聯(lián)網(wǎng)的圖形框架。X-windows使用客戶機(jī)/服務(wù)器模型,其中X-server是圖形服務(wù)器而應(yīng)用程序是客戶機(jī)。X-服務(wù)器控制與LinuxOS相關(guān)聯(lián)的輸入/輸出硬件,諸如顯示器、觸摸屏顯示器、鍵盤、(多個)定點(diǎn)設(shè)備等等。在這一點(diǎn)上,X-windows提供服務(wù)器側(cè)繪制圖形架構(gòu),即,X-server保持包括窗口和像素映射的可繪制的內(nèi)容。X-client通過交換用于描述通信信道上的繪制操作的數(shù)據(jù)分組而與X-server通信。X-client通過標(biāo)準(zhǔn)例程庫(“Xlib”)訪問X通信協(xié)議。例如,X-client可以向X-server發(fā)送在客戶機(jī)窗口上繪制矩形的請求。X-server向X-client發(fā)送輸入事件,例如鍵盤或者定點(diǎn)設(shè)備輸入,和/或窗口移動或者調(diào)整大小。輸入事件與客戶機(jī)窗口有關(guān)。例如,如果指針在窗口內(nèi)時用戶進(jìn)行點(diǎn)擊,則X-server向與該窗口相關(guān)聯(lián)的X-client發(fā)送包括輸入事件的分組,所述輸入事件包括該動作和與該窗口有關(guān)的事件的定位。因?yàn)椴僮飨到y(tǒng)框架、圖形系統(tǒng)、和/或庫中的差異,為Android編寫的應(yīng)用程序通常不能在HydroidOS660上運(yùn)行,為標(biāo)準(zhǔn)Linux分布編寫的應(yīng)用程序通常不能在AndroidOS430上運(yùn)行。在這一點(diǎn)上,AndroidOS430和HydroidOS660不是字節(jié)碼兼容的,這意味著被編譯用于其中一個并且對于所述其中一個可執(zhí)行的程序在另一個上不能運(yùn)行。在一個實(shí)施例中,HydroidOS660包括通過共享的內(nèi)核520便于與AndroidOS430通信的交叉環(huán)境通信框架的組件。這些組件包括IPC庫663,其包括AndroidOS的BinderIPC機(jī)制的基礎(chǔ)類和遠(yuǎn)程通信服務(wù)671。在一個實(shí)施例中,HydroidOS660在Android根環(huán)境內(nèi)創(chuàng)建的改變根目錄的(chrooted)(利用“chroot”命令創(chuàng)建的)輔助執(zhí)行環(huán)境中運(yùn)行。在輔助執(zhí)行環(huán)境內(nèi)運(yùn)行HydroidOS660內(nèi)的處理和應(yīng)用程序,使得通過這些處理和應(yīng)用程序看見的外觀根目錄是輔助執(zhí)行環(huán)境的根目錄。以此方式,HydroidOS660可以在不進(jìn)行修改的情況下運(yùn)行為標(biāo)準(zhǔn)Linux發(fā)布編寫的程序,這是因?yàn)長inux用戶庫662對于在改變根目錄的(chrooted)輔助執(zhí)行環(huán)境中的HydroidOS660上運(yùn)行的處理是可用的。參照回到圖3,移動OS130和桌面160是在移動設(shè)備上共享的內(nèi)核320上活動并發(fā)執(zhí)行的。移動OS130和桌面OS160可能關(guān)于用戶庫、圖形系統(tǒng),和/或應(yīng)用框架是不兼容的。因此,移動OS130和桌面OS160具有不同組的可用的應(yīng)用程序,這意味著至少一些在移動OS130上可用的應(yīng)用程序在桌面OS160上不可用,反之亦然。相應(yīng)地,OS架構(gòu)300的移動OS130和桌面OS160通過經(jīng)由單獨(dú)的用戶交互空間可訪問的不同組的應(yīng)用程序來提供單獨(dú)的用戶體驗(yàn)。用戶可以通過與移動OS130相關(guān)聯(lián)的用戶交互空間來訪問移動OS130上可用的(即,被編譯用于移動OS130并被加載到其執(zhí)行環(huán)境中的)應(yīng)用程序,并且通過與桌面OS160相關(guān)聯(lián)的用戶交互空間訪問在桌面OS160上可用的應(yīng)用程序。本發(fā)明的實(shí)施例擴(kuò)展了OS架構(gòu)300的功能以便在多OS計(jì)算環(huán)境中提供更多無縫的計(jì)算體驗(yàn)。實(shí)施例包括第一操作系統(tǒng)的應(yīng)用程序和/或用戶空間在第二操作系統(tǒng)的用戶交互空間中的交叉環(huán)境呈現(xiàn),即便第一操作系統(tǒng)和第二操作系統(tǒng)的圖形環(huán)境不兼容。實(shí)施例還包括交叉環(huán)境應(yīng)用程序的用戶交互支持,以及從第二操作系統(tǒng)的用戶交互空間訪問第一操作系統(tǒng)的應(yīng)用程序。該功能使得例如在移動OS130上運(yùn)行的移動OS應(yīng)用程序能夠被與桌面OS160相關(guān)聯(lián)的用戶交互空間顯示并且與之交互。例如,盡管用戶正在通過與桌面OS160相關(guān)聯(lián)的用戶交互空間與桌面OS160交互,但用戶可能希望訪問不可用于桌面OS160(即,不兼容并且不能在其上運(yùn)行)的移動OS130的特定應(yīng)用程序。使用以下公開的各個實(shí)施例,用戶可以通過與桌面OS160相關(guān)聯(lián)的用戶交互空間對為移動OS130編譯并在其上運(yùn)行的應(yīng)用程序進(jìn)行訪問、顯示并且與之交互。特別地,實(shí)施例向交叉環(huán)境交互支持提供了移動OS的任何應(yīng)用程序,意味著為使用以下的實(shí)施例不需要修改移動OS應(yīng)用程序來包括特定的交換環(huán)境支持。為提供從第二OS(例如,桌面OS160)的用戶交互空間對第一OS(例如,移動OS130)的應(yīng)用程序和/或用戶交互空間的無縫交叉環(huán)境用戶交互支持,可能期望實(shí)時地呈現(xiàn)應(yīng)用程序和/或用戶交互空間的圖形數(shù)據(jù)(即,圖形上下文或者活動的顯示)以供在第二OS的用戶交互空間中顯示。在該上下文中,實(shí)時(或者立即)呈現(xiàn)意味著將應(yīng)用程序的圖形數(shù)據(jù)足夠快地呈現(xiàn)給第二OS的用戶交互空間,使得用戶可以與應(yīng)用程序進(jìn)行交互而不存在由于與圖形信息的傳遞相關(guān)聯(lián)的延遲引起的應(yīng)用程序性能的明顯的或者實(shí)質(zhì)性的降低。在這一點(diǎn)上,如在此所描述的,用于實(shí)時(或者立即)交叉環(huán)境呈現(xiàn)的技術(shù)提供了圖形信息的快速傳遞,例如具有有限的幀數(shù)延遲或者與從第一OS到第二OS拷貝或者傳遞圖形信息相關(guān)聯(lián)的其它延遲。然而,這不意味著圖形傳遞不花費(fèi)任何時間,并且在此公開的交叉環(huán)境呈現(xiàn)技術(shù)可以被視為是立即的或者實(shí)時的,即便在圖形信息被顯示在第二OS的用戶交互空間上之前經(jīng)過了有限的時間段。為了實(shí)現(xiàn)應(yīng)用程序的交叉環(huán)境呈現(xiàn),可以從在第一操作系統(tǒng)中運(yùn)行的應(yīng)用程序向第二操作系統(tǒng)的圖形系統(tǒng)傳遞潛在的大量圖形數(shù)據(jù)?,F(xiàn)有的機(jī)制不能夠在沒有潛在影響顯示更新或者幀率的情況下傳遞所需的圖形數(shù)據(jù)。例如,在移動計(jì)算環(huán)境的約束條件下直接傳遞圖形數(shù)據(jù)可能不現(xiàn)實(shí)。可以使用壓縮技術(shù)來減少要傳遞的總的數(shù)據(jù)量,但是以增加的壓縮和解壓縮信息的處理需求為代價??梢允褂妙愃七h(yuǎn)程桌面的系統(tǒng)來傳送矢量圖形或者圖形更新信息,然而,當(dāng)傳遞大量的圖形數(shù)據(jù)或者用于快速改變圖形內(nèi)容時,這些典型地也是緩慢的。圖7圖示了根據(jù)各個實(shí)施例的OS架構(gòu)配置300a,可以采用該OS架構(gòu)配置300a來在第二OS的用戶交互空間內(nèi)提供第一OS的應(yīng)用程序和/或用戶交互空間的交叉環(huán)境呈現(xiàn),其中第一OS和第二OS并發(fā)地在共享的內(nèi)核上運(yùn)行并且與包括單獨(dú)的顯示設(shè)備的單獨(dú)的用戶交互空間相關(guān)聯(lián)。OS架構(gòu)配置300a的組件使得在桌面OS160的用戶交互空間內(nèi)呈現(xiàn)在移動OS130上運(yùn)行的應(yīng)用程序和/或移動OS130的圖形上下文,其中OS130和桌面OS160在共享的內(nèi)核320上并發(fā)地運(yùn)行。在各個實(shí)施例中,通過桌面OS160的控制臺應(yīng)用程序782在桌面OS160的用戶交互空間中的控制臺窗口中顯示應(yīng)用程序。在一種實(shí)現(xiàn)方式中,控制臺應(yīng)用程序782是通過桌面OS160的X-windows類型圖形系統(tǒng)在桌面OS160的用戶交互空間內(nèi)顯示的X-windows類型的應(yīng)用程序。在OS架構(gòu)配置300a中,移動OS130包括為移動OS130的應(yīng)用程序(例如,應(yīng)用程序752和754)分配和管理表面信息(例如,表面726、727和728)的圖形服務(wù)器734。在一個實(shí)施例中,圖形服務(wù)器734使用匿名的共享存儲器為圖形表面分配存儲器(即,在進(jìn)程之間共享被命名的存儲器塊,這允許內(nèi)核空閑)。圖形服務(wù)器734還分配和跟蹤移動OS130的顯示器,包括移動計(jì)算設(shè)備硬件112內(nèi)集成的顯示器(即本地顯示器)和通過其可以遠(yuǎn)程顯示(即,在另一OS的用戶交互空間內(nèi)的)移動OS130的應(yīng)用程序的所謂的虛擬顯示器。移動OS130還可以包括在與移動OS130相關(guān)聯(lián)的顯示屏幕上同時顯示多個應(yīng)用程序的窗口系統(tǒng)。在一個實(shí)施例中,移動OS130包括提供用于從桌面OS160訪問移動OS130的組件的遠(yuǎn)程通信信道的服務(wù)。OS架構(gòu)配置300a包括在移動OS130上運(yùn)行并且在與移動OS130相關(guān)聯(lián)的第一用戶交互空間內(nèi)顯示的第一應(yīng)用程序752。根據(jù)以下描述的實(shí)施例,OS架構(gòu)配置300a包括也在移動OS130上運(yùn)行但是通過交叉環(huán)境呈現(xiàn)而在與桌面OS160相關(guān)聯(lián)的第二用戶交互空間內(nèi)顯示的第二應(yīng)用程序754。在一個實(shí)施例中,通過在桌面OS160上運(yùn)行的控制臺應(yīng)用程序782在第二用戶交互空間的控制臺窗口內(nèi)顯示應(yīng)用程序754。通常,移動OS130的應(yīng)用程序?qū)⒂脩敉ㄟ^其與應(yīng)用程序交互的視圖實(shí)例化(instantiate)。例如,應(yīng)用程序可以具有組成應(yīng)用程序窗口的單個視圖。在各視圖內(nèi),應(yīng)用程序?qū)?yīng)用程序界面的特定區(qū)域的繪制對象實(shí)例化。繪制對象可以被稱為畫布或者繪制層,并且是應(yīng)用程序通過其繪制圖形信息的對象。當(dāng)應(yīng)用程序?qū)嫴蓟蛘邔訉?shí)例化時,圖形服務(wù)器734為與畫布或者層相關(guān)聯(lián)的表面信息分配存儲器并且將繪制對象返回給應(yīng)用程序,應(yīng)用程序然后使用其來繪制畫布或者層的表面的圖形信息。圖形服務(wù)器734然后監(jiān)視表面信息并且當(dāng)表面信息被更新時將表面信息呈現(xiàn)給幀緩沖區(qū)(例如,幀緩沖區(qū)716)。典型地,用戶還通過視圖對象與應(yīng)用程序進(jìn)行交互。視圖對象包括用戶在視圖對象上執(zhí)行動作時由移動OS輸入隊(duì)列736調(diào)用的事件監(jiān)聽程序(listener)。如在OS架構(gòu)300a中圖示的,通過圖形服務(wù)器734在共享的存儲器724中分配表面726、727和/或728。共享的存儲器724由共享的內(nèi)核320管理并且通過在移動OS130和桌面OS160上運(yùn)行的所有進(jìn)程可訪問。如上所述,共享的存儲器724可以是被命名的共享存儲器。盡管被命名的共享存儲器可由在共享的內(nèi)核320上運(yùn)行的所有進(jìn)程訪問,但是其它進(jìn)程不能通過名稱來訪問被命名的共享存儲器的區(qū)域。相應(yīng)地,必須通過進(jìn)程間通信機(jī)制向被命名的共享存儲器的區(qū)域傳送文件描述符以便跨越進(jìn)程邊界向被命名的共享存儲器傳送參考。共享的內(nèi)核320還包括IPC驅(qū)動器725,其允許移動OS130和桌面OS160中的進(jìn)程跨越進(jìn)程邊界與另一個進(jìn)行通信。IPC驅(qū)動器725可以是例如Unix域套接字驅(qū)動器、AndroidBinder驅(qū)動器,和/或網(wǎng)絡(luò)套接字驅(qū)動器。OS架構(gòu)配置300a的桌面OS160包括控制臺應(yīng)用程序782和窗口系統(tǒng)774。編譯控制臺應(yīng)用程序782并且在桌面OS160上運(yùn)行,以及在與桌面OS160相關(guān)聯(lián)的用戶交互空間中的控制臺窗口內(nèi)顯示。窗口系統(tǒng)774可以包括窗口管理器、圖形服務(wù)器、和/或圖形設(shè)備接口,所述圖形設(shè)備接口提供用于表示圖形對象并且通過桌面OS幀緩沖區(qū)718將圖形對象傳送給顯示設(shè)備的基礎(chǔ)。例如,窗口系統(tǒng)774可以通過桌面OS幀緩沖區(qū)718在桌面OS160的用戶交互空間內(nèi)顯示控制臺應(yīng)用程序782。窗口系統(tǒng)774還向控制臺應(yīng)用程序782提供來自與控制臺應(yīng)用程序782相關(guān)聯(lián)的桌面OS160的用戶環(huán)境的輸入事件。例如,窗口系統(tǒng)774可以將來自與桌面OS160相關(guān)聯(lián)的用戶交互空間的定點(diǎn)設(shè)備位置或者手勢信息提供給控制臺應(yīng)用程序782。在圖7中,出于易于圖示的原因,將包括共享的存儲器724、移動OS幀緩沖區(qū)716和桌面OS幀緩沖區(qū)718的存儲塊示為位于共享的內(nèi)核320內(nèi)。然而,這些存儲塊在物理上位于移動計(jì)算設(shè)備110的有形的存儲器存儲設(shè)備元素內(nèi)并且由共享的內(nèi)核320管理。例如,這些存儲塊可以位于圖2中圖示的移動計(jì)算設(shè)備硬件112的處理器114上的RAM中、和/或存儲設(shè)備206的RAM中。OS架構(gòu)配置300a為在與第二操作系統(tǒng)相關(guān)聯(lián)的用戶交互空間中交叉環(huán)境呈現(xiàn)在共享的內(nèi)核上運(yùn)行的第一操作系統(tǒng)的應(yīng)用程序提供了支持,其中第一和第二操作系統(tǒng)在共享的內(nèi)核上并發(fā)地運(yùn)行??梢圆捎肙S架構(gòu)配置300a來提供計(jì)算環(huán)境中的交叉環(huán)境呈現(xiàn)支持,所述計(jì)算環(huán)境通過多個用戶交互空間提供了多種用戶計(jì)算體驗(yàn)。例如,可以在如圖1所圖示的計(jì)算環(huán)境100中使用OS架構(gòu)配置300a。圖8圖示了根據(jù)各個實(shí)施例的計(jì)算環(huán)境800。計(jì)算環(huán)境800具有第一用戶環(huán)境,該第一用戶環(huán)境包括移動計(jì)算設(shè)備硬件112的(多個)觸摸屏顯示器116和其它I/O設(shè)備118。該用戶環(huán)境表示用戶通過其與移動OS130進(jìn)行交互的第一用戶交互空間。計(jì)算環(huán)境800的第二用戶環(huán)境包括顯示監(jiān)視器844、鍵盤846,和/或定點(diǎn)設(shè)備848。用戶環(huán)境840可以通過對接連接器841和對接電纜843連接到移動計(jì)算設(shè)備110。對接連接器841和對接電纜843可以包括通過對接接口122與移動計(jì)算設(shè)備110的端口120連接的端口,如圖1圖示的。在這一點(diǎn)上,用戶環(huán)境840向移動計(jì)算設(shè)備110提供了對接的輔助終端環(huán)境。在計(jì)算環(huán)境800中,桌面OS160可以與對接的輔助終端環(huán)境840相關(guān)聯(lián),使得用戶可以通過由輔助終端環(huán)境840提供的用戶交互空間與桌面OS160進(jìn)行交互。盡管輔助終端環(huán)境840被圖示為典型的桌面類型的計(jì)算環(huán)境,但桌面OS160可以通過其它類型的計(jì)算環(huán)境(包括膝上型、平板,和/或其它類型的計(jì)算環(huán)境)呈現(xiàn)第二用戶交互空間??梢栽谟?jì)算環(huán)境800內(nèi)使用OS架構(gòu)配置300a來提供在第一OS(即,移動OS)上運(yùn)行并在第二OS的用戶環(huán)境(即,與桌面OS160相關(guān)聯(lián)的用戶環(huán)境840)中顯示的應(yīng)用程序的交叉環(huán)境呈現(xiàn)。例如,可以在桌面OS160的用戶交互空間880上的控制臺窗口882內(nèi)顯示在移動OS130上運(yùn)行的應(yīng)用程序754。用戶交互空間880內(nèi)的其它窗口(包括窗口884和886)可以是在桌面OS160上運(yùn)行的其它應(yīng)用程序的窗口。對于用戶,計(jì)算環(huán)境800提供了對應(yīng)用程序754的無縫的計(jì)算體驗(yàn),這是因?yàn)榭梢栽谧烂鍻S160的用戶交互空間內(nèi)使用應(yīng)用程序754,仿佛它正在桌面OS160上運(yùn)行,盡管事實(shí)上應(yīng)用程序754正在移動OS130上運(yùn)行。圖8圖示了類似于桌面的輔助終端環(huán)境840。在這種情況下,用戶可以使用輔助終端環(huán)境840的鍵盤846和鼠標(biāo)848(即,主要的基于定點(diǎn)設(shè)備的GUI)通過控制臺窗口882與移動OS的應(yīng)用程序和/或用戶交互空間進(jìn)行交互。然而,移動OS用戶交互空間的應(yīng)用程序和/或鏡像的交叉環(huán)境呈現(xiàn)可以用于其它輔助終端環(huán)境。例如,桌面OS160可以與包括觸摸屏顯示器的類似于平板計(jì)算機(jī)的輔助終端環(huán)境相關(guān)聯(lián)。在這種情況下,用戶可以以用戶典型地與移動OS130的用戶交互空間進(jìn)行交互的非常相同的方式(即,主要基于手勢的GUI)與移動OS130的交叉環(huán)境應(yīng)用程序或者鏡像的用戶交互空間進(jìn)行交互。如上所討論的,本發(fā)明的實(shí)施例針對在多個OS計(jì)算環(huán)境中提供對跨越交叉環(huán)境應(yīng)用程序和/或鏡像的用戶交互空間的并發(fā)的用戶界面支持。在一個示例中,為交叉環(huán)境應(yīng)用程序提供用戶界面支持以便使得通過第二OS的用戶交互空間對在第一OS上運(yùn)行的應(yīng)用程序進(jìn)行顯示并進(jìn)行交互,其仿佛實(shí)質(zhì)上原生地在第二操作系統(tǒng)上運(yùn)行。非擴(kuò)展的渲染上下文實(shí)施例一些實(shí)施例處理跨越多個OS的并發(fā)的用戶界面支持,而不擴(kuò)展第一操作系統(tǒng)的圖形渲染上下文。典型地將第一OS(例如,移動OS,Android)配置為定義單個的、活動的用戶交互空間。用戶交互空間包括活動的顯示器(例如,具有相關(guān)聯(lián)的特征,諸如分辨率)以及允許用戶與在活動的顯示器上顯示的元素進(jìn)行交互的一個或多個活動的輸入設(shè)備。相應(yīng)地,第一OS建立渲染上下文,通過該渲染上下文可以呈現(xiàn)正在運(yùn)行的應(yīng)用程序的表面信息以供活動顯示器進(jìn)行顯示。然而,如上所描述的,在此描述了用于有效地欺騙第一OS來并發(fā)地處理多個用戶交互空間的新穎技術(shù)。此外,這些技術(shù)使得多個用戶交互空間與多個計(jì)算環(huán)境上的不同的(例如不兼容的)操作系統(tǒng)相關(guān)聯(lián)。一些實(shí)施例涉及通過交叉環(huán)境遠(yuǎn)程呈現(xiàn)來處理顯示器輸出的技術(shù)。其它實(shí)施例涉及用于處理那些上下文中的用戶交互的技術(shù)。在交叉環(huán)境遠(yuǎn)程呈現(xiàn)時,在第二OS內(nèi)呈現(xiàn)在第一OS上運(yùn)行的并且在與第二OS相關(guān)聯(lián)的計(jì)算環(huán)境內(nèi)顯示的應(yīng)用程序的應(yīng)用程序圖形。在一個實(shí)施例中,在第二OS上運(yùn)行的控制臺應(yīng)用程序從共享的存儲器中訪問應(yīng)用程序的表面信息并且在與第二OS相關(guān)聯(lián)的計(jì)算環(huán)境的控制臺窗口內(nèi)呈現(xiàn)該應(yīng)用程序。假設(shè)日歷應(yīng)用程序和字處理應(yīng)用程序二者被編譯用于移動設(shè)備上的第一OS(例如,移動OS130)并且并發(fā)地運(yùn)行在移動設(shè)備上的第一OS上。第二OS(例如非移動OS,如桌面OS160)使用共享的內(nèi)核正在移動設(shè)備上并發(fā)地運(yùn)行。用戶已經(jīng)將移動設(shè)備與第二計(jì)算環(huán)境(桌面計(jì)算環(huán)境)進(jìn)行對接,并且想要通過桌面計(jì)算環(huán)境與字處理應(yīng)用程序進(jìn)行交互。期望以對于用戶而言透明的方式使用移動計(jì)算環(huán)境(例如,移動設(shè)備)的第二OS來處理桌面計(jì)算環(huán)境的用戶交互空間。圖9圖示了根據(jù)各個實(shí)施例的交叉環(huán)境遠(yuǎn)程呈現(xiàn)的方面。在圖9圖示了應(yīng)用程序呈現(xiàn)圖示900中,第一應(yīng)用程序910(例如,日歷應(yīng)用程序)計(jì)算第一OS內(nèi)的第一表面912的更新。第一操作系統(tǒng)將第一表面912存儲在共享的存儲空間中的第一存儲位置。例如,第一存儲位置可以是被命名的共享存儲器的一區(qū)域。第一應(yīng)用程序910更新第一表面912的后緩沖區(qū)914。類似地,第二應(yīng)用程序930(例如,字處理應(yīng)用程序)使用第一OS計(jì)算第二表面932的更新。通過第一OS將第二表面932存儲在共享存儲空間的第二存儲位置中(例如,被命名的共享存儲器的第二區(qū)域)。第一OS確定何時要發(fā)起呈現(xiàn)序列。例如,第一OS可以在表面912和/或932的表面信息已經(jīng)改變時發(fā)起呈現(xiàn)序列。第一OS可以對包括第一表面912和第二表面932的所有表面執(zhí)行單循環(huán),確定與特定應(yīng)用程序相關(guān)聯(lián)的表面信息是否已經(jīng)改變。在呈現(xiàn)序列中,如果表面912的表面信息已改變,第一OS互換前緩沖區(qū)916和后緩沖區(qū)914,使得在后緩沖區(qū)914中的表面信息現(xiàn)在在前緩沖區(qū)916中。第一操作系統(tǒng)將第一表面912呈現(xiàn)到第三存儲位置920,以便創(chuàng)建要在與第一OS相關(guān)聯(lián)的第一用戶交互空間內(nèi)顯示的最終圖像918。如果第二表面932的表面信息已經(jīng)改變,則第一OS向第二OS通知第二表面932的表面信息已經(jīng)改變。具體地,第一OS通過進(jìn)程間通信信道向第二OS的控制臺應(yīng)用程序發(fā)送繪制通知以指示表面932已經(jīng)被更新。該繪制通知可以包括前圖像936的文件描述符,和/或前圖像936的共享的存儲器空間的其它特征(包括緩沖區(qū)大小、層順序等等)??刂婆_應(yīng)用程序?qū)⑽募枋龇成涞狡涮幚砜臻g以獲得對第二存儲位置的參考。通過對第二存儲位置的參考,第二OS的控制臺應(yīng)用程序從前圖像緩沖區(qū)936中直接讀取表面信息并且在與第二OS相關(guān)聯(lián)的第二用戶交互空間內(nèi)的控制臺窗口940中呈現(xiàn)第二表面932的前圖像936的表面信息。以此方式,控制臺應(yīng)用程序可以實(shí)時地在控制臺窗口940中呈現(xiàn)第二應(yīng)用程序930而無須跨越進(jìn)程拷貝圖形幀或者表面信息。取而代之,使用通過進(jìn)程間通信傳送的文件描述符,控制臺應(yīng)用程序通過將第二表面932的共享存儲器映射到其自身的處理空間而直接讀取表面信息。圖10示出了根據(jù)各個實(shí)施例的、在非擴(kuò)展渲染上下文中進(jìn)行交叉環(huán)境遠(yuǎn)程呈現(xiàn)的例示性方法的流程圖1000。實(shí)施例保持第一應(yīng)用程序(例如,日歷應(yīng)用程序)和第二應(yīng)用程序(例如,字處理應(yīng)用程序)的應(yīng)用程序圖形的顯示,二者被編譯用于第一操作系統(tǒng)并處于第一操作系統(tǒng)的活動的并發(fā)執(zhí)行中。方法1000在塊1004開始,使用第一操作系統(tǒng)計(jì)算對第一應(yīng)用程序的表面的更新。計(jì)算對表面的更新可能涉及使用應(yīng)用程序數(shù)據(jù)來確定哪些表面已經(jīng)改變并且以何種方式改變。例如,用戶交互可能已經(jīng)使得一些表面改變位置、順序(例如,一個層可能部分地在另一個層的前面,被另一個層完全隱藏,等等)、大小、顏色、紋理,等等。在塊1008,使用第一操作系統(tǒng)呈現(xiàn)第一應(yīng)用程序的這些更新的表面以在第一存儲位置生成第一圖形幀。例如,第一OS的呈現(xiàn)引擎預(yù)先建立與顯示器相關(guān)聯(lián)的渲染上下文。然后可以通過更新的表面信息進(jìn)行迭代來呈現(xiàn)圖形幀以便根據(jù)與渲染上下文相關(guān)聯(lián)的顯示器的特征(例如,分辨率)來有效地繪制來自第一應(yīng)用程序的表面的可見部分的全部或者部分圖像。將該圖形幀呈現(xiàn)給第一存儲位置。存儲位置可以是幀緩沖存儲器、共享存儲器,或者任何其它有用的存儲器位置。在一些實(shí)施例中,在塊1012,向與第一操作系統(tǒng)相關(guān)聯(lián)的第一計(jì)算環(huán)境的顯示器顯示來自第一存儲位置的呈現(xiàn)的第一圖形幀。例如,將第一圖形幀呈現(xiàn)給移動設(shè)備的幀緩沖區(qū)的后緩沖區(qū)部分。結(jié)果,幀緩沖區(qū)翻轉(zhuǎn)(即,后緩沖區(qū)部分變成前緩沖區(qū)部分)并且將幀緩沖區(qū)的現(xiàn)在的前緩沖區(qū)部分顯示給移動設(shè)備的顯示器。在塊1016,使用第一操作系統(tǒng)計(jì)算對第二應(yīng)用程序的表面的更新。這可能與用于第一應(yīng)用程序的表面的塊1004的計(jì)算基本上相同地進(jìn)行。然而,與第一應(yīng)用程序的更新的表面數(shù)據(jù)不同,不通過第一OS來呈現(xiàn)第二應(yīng)用程序的更新的表面信息。相反,在塊1020,在第二存儲位置存儲第二應(yīng)用程序的更新的表面。該第二存儲位置是可由在移動設(shè)備的共享內(nèi)核上并發(fā)地運(yùn)行的第一和第二OS二者訪問的共享的存儲位置。在塊1024,使用第二操作系統(tǒng)的控制臺應(yīng)用程序來呈現(xiàn)第二應(yīng)用程序的更新的表面以便在第三存儲位置生成第二圖形幀。例如,圖7的控制臺應(yīng)用程序782可以將應(yīng)用程序754的更新的表面呈現(xiàn)到(例如與第二計(jì)算環(huán)境的顯示器相關(guān)聯(lián)的)第二OS的幀緩沖存儲器中。在一些實(shí)施例中,在塊1028,向與第二操作系統(tǒng)相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器顯示來自第三存儲位置的第二圖形幀。例如,桌面計(jì)算環(huán)境顯示器的顯示驅(qū)動器訪問幀緩沖存儲器以便訪問和顯示第二圖形幀。在某些實(shí)現(xiàn)方式中,控制臺應(yīng)用程序還保持控制臺交互空間,并且將第二圖形幀呈現(xiàn)到控制臺交互空間。例如,控制臺應(yīng)用程序在桌面顯示器上呈現(xiàn)一個或多個窗口,并且在這些窗口之一上顯示第二應(yīng)用程序的圖形。在一些實(shí)施例中,方法1000在各塊上迭代以便為兩個應(yīng)用程序并發(fā)地保持圖形環(huán)境。例如,移動OS計(jì)算對第一應(yīng)用程序的圖形的更新并且向移動幀緩沖存儲器呈現(xiàn)這些更新;然后移動OS計(jì)算對第二應(yīng)用程序的圖形的更新并且將這些更新存儲到共享的存儲器中,桌面OS的控制臺應(yīng)用程序從共享的存儲器中將這些更新呈現(xiàn)到桌面幀緩沖存儲器;然后方法1000對于下一組更新進(jìn)行重復(fù)。特別地,一些實(shí)現(xiàn)方式不按順序和/或并行地執(zhí)行某些步驟。例如,可能基本上同時計(jì)算對第一和第二應(yīng)用程序的表面的更新(即,基本上并行地執(zhí)行塊1004和1016),盡管僅僅將本地呈現(xiàn)這些更新的表面的一部分(例如在塊1008)并且將為遠(yuǎn)程呈現(xiàn)存儲這些更新的表面的其它部分(例如在塊1020和1024)。在一個實(shí)施例中,Android移動OS和全LinuxOS(例如,Hydroid)正在移動設(shè)備的共享內(nèi)核上并發(fā)地運(yùn)行。當(dāng)從HydroidOS660啟動Android應(yīng)用程序時,在HydroidOS660上啟動控制臺應(yīng)用程序并且請求AndroidOS430啟動Android應(yīng)用程序并向控制臺應(yīng)用程序發(fā)送Android應(yīng)用程序的繪制通知。AndroidOS430啟動Android應(yīng)用程序,將應(yīng)用程序與虛擬顯示器ID相關(guān)聯(lián)并且注冊控制臺應(yīng)用程序以便接收對該應(yīng)用程序的繪制通知。例如,Android圖形服務(wù)器(即,SurfaceFlinger)可以分配未使用的虛擬顯示器ID并且通過應(yīng)用程序?qū)ο罅斜韺?yīng)用程序與虛擬顯示器ID相關(guān)聯(lián)。SurfaceFlinger在共享存儲器中分配用于Android應(yīng)用程序的表面信息的存儲器,并且注冊控制臺應(yīng)用程序以便接收對該Android應(yīng)用程序的繪制通知。當(dāng)SurfaceFlinger確定表面信息被更新時,SurfaceFlinger通過進(jìn)程間通信信道向控制臺應(yīng)用程序發(fā)送繪制通知。例如,SurfaceFlinger可以通過unix域套接字、Binder接口、和/或網(wǎng)絡(luò)套接字向控制臺應(yīng)用程序發(fā)送繪制通知。繪制通知包括表面信息的文件描述符。該文件描述符可以通過SurfaceFlinger基于表面的被命名的共享存儲器區(qū)域的名稱空間(namespace)生成。繪制通知還可以包括數(shù)據(jù)格式、緩沖區(qū)大小、和表面位置信息??刂婆_應(yīng)用程序?qū)⑽募枋龇成涞狡涮幚砜臻g并且通過被映射的文件描述符從共享的存儲位置進(jìn)行讀取??刂婆_應(yīng)用程序然后直接根據(jù)表面信息呈現(xiàn)應(yīng)用程序的圖形幀。然后通過桌面OS圖形系統(tǒng)(即,通過HydroidOS600的X-windows圖形系統(tǒng))顯示所呈現(xiàn)的圖形幀。圖11更詳細(xì)地圖示了根據(jù)各個實(shí)施例的交叉環(huán)境遠(yuǎn)程呈現(xiàn)的注冊和繪制處理流程1100。初始地,在HydroidOS600上運(yùn)行的控制臺應(yīng)用程序1102在步驟1106通過共享內(nèi)核520的IPC信道525請求在HydroidOS600的用戶環(huán)境中開始并且顯示Android應(yīng)用程序,或者從AndroidOS430的用戶環(huán)境轉(zhuǎn)移到HydroidOS600的用戶環(huán)境。Android在步驟1108、1110和1112從SurfaceFlinger434請求應(yīng)用程序的虛擬顯示器ID,開始應(yīng)用程序,并且為虛擬顯示器設(shè)置參數(shù)。在步驟1114,Android通過IPC信道525向控制臺應(yīng)用程序返回顯示器ID。在步驟1116,應(yīng)用程序請求新表面,SurfaceFlinger在步驟1118通過創(chuàng)建表面類1104的實(shí)例而創(chuàng)建該新表面??刂婆_應(yīng)用程序1102在步驟1120對渲染器(renderer)對象進(jìn)行實(shí)例化,這通過HydroidOS600的X-window系統(tǒng)呈現(xiàn)Android表面信息。在步驟1122,控制臺應(yīng)用程序1102向SurfaceFlinger434注冊渲染器對象1124的可遠(yuǎn)程訪問的(remotable)接口以便接收Android應(yīng)用程序的表面信息的繪制通知。在一個實(shí)施例中,渲染器對象的可遠(yuǎn)程訪問的接口包括可以通過IPC信道525調(diào)用的draw()和clear()方法。在步驟1126和1128,SurfaceFlinger將IPC對象附接到表面,使得在表面信息已經(jīng)被更新時將通過可遠(yuǎn)程訪問的接口向控制臺應(yīng)用程序1102進(jìn)行通知。步驟1130和1132是處理流程1100的呈現(xiàn)循環(huán)的一部分。在呈現(xiàn)循環(huán)中,SurfaceFlinger向控制臺應(yīng)用程序1102通知表面信息被更新并且通過IPC信道525將文件描述符傳送給表面信息。例如,可以調(diào)用控制臺應(yīng)用程序渲染器的繪制方法并且將文件描述符傳送給表面??刂婆_應(yīng)用程序1102將文件描述符映射到其處理空間,并且訪問所參考的共享存儲位置以便讀取表面信息并呈現(xiàn)要在與HydroidOS600相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器上顯示的圖形幀。圖12示出了根據(jù)各個實(shí)施例的、在非擴(kuò)展渲染上下文中進(jìn)行交叉環(huán)境呈現(xiàn)的另一例示性方法的流程圖1200。如同圖10的方法1000,實(shí)施例保持第一應(yīng)用程序和第二應(yīng)用程序的應(yīng)用程序圖形的顯示,第一應(yīng)用程序和第二應(yīng)用程序二者被編譯用于第一操作系統(tǒng)并處于第一操作系統(tǒng)的活動的并發(fā)執(zhí)行中。方法1200在塊1204開始,建立第一操作系統(tǒng)的第一渲染上下文。渲染上下文可以對于與之相關(guān)聯(lián)的顯示器是唯一的。例如,移動OS的實(shí)現(xiàn)方式可以與具有某個分辨率的移動設(shè)備顯示器相關(guān)聯(lián)??梢越秩旧舷挛膩砼c相關(guān)聯(lián)的顯示器的分辨率匹配,使得將針對該分辨率而合適地呈現(xiàn)圖形。在塊1208,方法1200使用第一操作系統(tǒng)計(jì)算對第一應(yīng)用程序的表面的更新。如上討論的,計(jì)算對表面的更新可能涉及使用應(yīng)用程序數(shù)據(jù)來確定哪些表面已經(jīng)改變并且以何種方式改變。然后,在塊1212使用第一操作系統(tǒng)呈現(xiàn)第一應(yīng)用程序的更新后的表面,以在第一存儲位置生成第一圖形幀。呈現(xiàn)典型地涉及將圖形原語(primitive)轉(zhuǎn)換為形成用于顯示的圖形幀的比特(例如,位圖)。例如,表面信息在數(shù)學(xué)上定義每個表面的屬性,包括形狀、大小、顏色、分層順序(其在哪些其它表面的前面或后面)、透明度等等。OS的呈現(xiàn)引擎可以解釋表面數(shù)據(jù)以便按照呈現(xiàn)所有表面信息的函數(shù)而確定在渲染上下文中的每個位置(例如“X,Y”位置)處顯示什么比特(例如使用迭代合成、射線追蹤,和/或其它技術(shù))。使用第一渲染上下文可以將第一應(yīng)用程序的更新的表面呈現(xiàn)為位圖以存儲到第一存儲器位置(例如,幀緩沖存儲器、共享存儲器,或者其它任何有用的存儲位置)中。在一些實(shí)施例中,在塊1216,向與第一操作系統(tǒng)相關(guān)聯(lián)的第一計(jì)算環(huán)境的顯示器顯示來自第一存儲位置的第一圖形幀。例如,移動設(shè)備顯示器的顯示驅(qū)動器訪問相關(guān)聯(lián)的幀緩沖存儲器以便顯示在第一渲染上下文中生成的位圖。在塊1220,拆解(disestablish)(例如,“拆卸”)第一渲染上下文。在塊1224,建立第一操作系統(tǒng)的第二渲染上下文。在一些實(shí)現(xiàn)方式中,第二渲染上下文與第一渲染上下文相同。然而,還可以根據(jù)第二計(jì)算環(huán)境的顯示器(例如桌面顯示器)的特征建立第二渲染上下文。在塊1228使用第一操作系統(tǒng)計(jì)算對第二應(yīng)用程序的表面的更新。然后,在塊1232,在第一操作系統(tǒng)的第二渲染上下文中呈現(xiàn)這些更新以便在第二存儲器位置生成第二圖形幀。特別地,該第二存儲位置是可由正在移動設(shè)備的共享內(nèi)核上并發(fā)地運(yùn)行的第一和第二操作系統(tǒng)二者訪問的共享的存儲位置。在一些實(shí)施例中,在塊1236,向與第二操作系統(tǒng)相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器顯示來自第二存儲位置的第二圖形幀。值得注意的,與圖10中不同,使用第一OS的呈現(xiàn)引擎來呈現(xiàn)兩個應(yīng)用程序的更新后的圖形幀。例如,第二OS的控制臺應(yīng)用程序可以訪問第二共享存儲位置以便直接取得所呈現(xiàn)的位圖以供第二計(jì)算環(huán)境的顯示器顯示。在塊1240,拆解第二渲染上下文。在一些實(shí)施例中,方法1200在塊上迭代以并發(fā)地保持兩個應(yīng)用程序的圖形環(huán)境。例如,移動OS迭代性地建立、使用并且拆卸第一應(yīng)用程序的渲染上下文;然后,建立、使用并且拆卸第二應(yīng)用程序的渲染上下文。使用這種技術(shù),可以由一個OS(即,通過第一OS的呈現(xiàn)引擎)執(zhí)行所有呈現(xiàn),并且不需要提供或者使用另一OS的呈現(xiàn)功能。然而,該技術(shù)涉及與重復(fù)地建立并且拆卸渲染上下文相關(guān)聯(lián)的附加開銷。交叉環(huán)境呈現(xiàn)的以上實(shí)施例描述了使用非擴(kuò)展的渲染上下文可以在多OS計(jì)算環(huán)境中的第二OS的用戶交互空間的控制臺窗口內(nèi)怎樣顯示在第一OS上運(yùn)行的應(yīng)用程序的圖形幀。為了支持與這種交叉環(huán)境應(yīng)用程序的用戶交互,實(shí)施例以交叉環(huán)境應(yīng)用程序接收輸入事件的方式將來自第二OS的用戶交互空間的輸入事件重定向到第一OS,使得仿佛其來自第一OS的用戶交互空間(即,應(yīng)用程序通過相同的事件句柄(handler)和/或視圖接收輸入事件,通過事件句柄(handler)和/或視圖其將接收如被顯示在第一OS的用戶交互空間內(nèi)的用戶輸入)。參照返回圖7和圖8,配置桌面OS160以便通過適合于桌面計(jì)算體驗(yàn)的輔助終端環(huán)境840來提供第二用戶交互空間。如上所述,使用上述的交叉環(huán)境呈現(xiàn)的實(shí)施例,可以在移動OS130的用戶交互空間內(nèi)顯示應(yīng)用程序752,同時通過在桌面OS160上運(yùn)行的控制臺應(yīng)用程序782在第二用戶交互空間的控制臺窗口882中顯示在移動OS130上運(yùn)行的應(yīng)用程序754。特別地,應(yīng)用程序752和754可以是為移動OS130編譯的、在移動OS運(yùn)行時環(huán)境內(nèi)運(yùn)行并通過移動OS框架接收輸入事件的任何應(yīng)用程序,而沒有針對顯示或者遠(yuǎn)程交互(不在移動OS130的用戶交互空間上)的修改。圖13圖示了根據(jù)各個實(shí)施例的向交叉環(huán)境應(yīng)用程序提供用戶交互支持的OS架構(gòu)配置300b。在OS架構(gòu)配置300b中,共享內(nèi)核320中的設(shè)備驅(qū)動器實(shí)現(xiàn)組成輔助終端環(huán)境840的I/O設(shè)備844、846和/或848的硬件接口。通過設(shè)備驅(qū)動器,這些設(shè)備的輸入事件出現(xiàn)在共享內(nèi)核320的I/O設(shè)備1360的設(shè)備1364、1366、和/或1368中。因?yàn)楣蚕韮?nèi)核320的系統(tǒng)資源對移動OS130和桌面OS160二者可用,移動OS確定輸入設(shè)備1364、1366、和/或1368上的輸入事件是否旨在用于移動OS130。當(dāng)桌面OS160被配置為提供第二用戶交互空間(即,移動計(jì)算設(shè)備110被對接到輔助終端環(huán)境840)時,移動OS130忽略來自與第二用戶交互空間相關(guān)聯(lián)的輸入設(shè)備的輸入事件。在OS架構(gòu)配置300b中,移動OS130忽略來自設(shè)備1364、1366、和/或1368的輸入事件。在這種情況下,桌面OS160接受來自設(shè)備1364、1366、和/或1368的輸入事件。桌面OS160處理來自設(shè)備1364、1366、和/或1368的輸入事件并且確定在桌面OS160內(nèi)怎樣將事件分發(fā)到各種窗口或者GUI元素。例如,桌面OS160的窗口系統(tǒng)774可以接受來自設(shè)備1364、1366、和/或1368的輸入事件。在一個實(shí)施例中,桌面OS160的圖形系統(tǒng)是X-windows圖形系統(tǒng)。在一個實(shí)例中,用戶在控制臺應(yīng)用程序782的控制臺窗口882內(nèi)的屏幕位置處點(diǎn)擊定點(diǎn)設(shè)備的按鈕。對應(yīng)的輸入事件出現(xiàn)在設(shè)備1368中并且桌面OS160接收并且處理輸入事件。窗口系統(tǒng)774將輸入事件指向到控制臺應(yīng)用程序782,通過控制臺應(yīng)用程序782,使用交叉環(huán)境呈現(xiàn)的實(shí)施例來顯示在移動OS130上運(yùn)行的應(yīng)用程序754。如上所述,應(yīng)用程序754是移動應(yīng)用程序并且使用移動OS130的庫來將視圖和其它事件句柄實(shí)例化,所述移動OS130的庫接收來自移動OS130的輸入隊(duì)列736的輸入以便接受用戶輸入。為了以應(yīng)用程序754將合適地解釋輸入事件的方式而將輸入事件呈現(xiàn)給應(yīng)用程序754,控制臺應(yīng)用程序782將輸入事件映射到移動OS130的圖形上下文并且通過虛擬輸入設(shè)備1370將事件傳送給移動OS130的輸入隊(duì)列736。虛擬輸入設(shè)備1370對于移動OS130表現(xiàn)為具有用于移動OS130的合適的輸入事件協(xié)議的輸入設(shè)備。另外,控制臺應(yīng)用程序782將輸入事件相對于移動OS130的圖形上下文進(jìn)行格式化。移動OS130將虛擬輸入設(shè)備1370與應(yīng)用程序754相關(guān)聯(lián)使得應(yīng)用程序754從移動OS事件隊(duì)列中接收輸入事件。例如,移動OS130可以將虛擬輸入設(shè)備1370與應(yīng)用程序754的虛擬顯示器ID相關(guān)聯(lián)。以此方式,應(yīng)用程序754接收并且處理輸入事件,就仿佛通過移動OS130的用戶交互空間來顯示應(yīng)用程序754并且與之交互。圖14圖示了根據(jù)各個實(shí)施例的、使用非擴(kuò)展的圖形上下文呈現(xiàn)的交叉環(huán)境應(yīng)用程序的用戶交互支持的方面。當(dāng)從連接到移動計(jì)算設(shè)備110的輸入設(shè)備(例如,鍵盤846、定點(diǎn)設(shè)備848)接收輸入事件時,方法1400在塊1402開始。如上所述,輸入事件可以出現(xiàn)在共享內(nèi)核的輸入設(shè)備中。在塊1404,移動OS確定移動計(jì)算設(shè)備110是否對接并且桌面OS是否與輸入設(shè)備相關(guān)聯(lián)。例如,如果移動計(jì)算設(shè)備110沒有與輔助終端環(huán)境對接并且桌面OS被掛起(suspend),則移動OS可以確定桌面OS沒有與輸入設(shè)備相關(guān)聯(lián)。如果桌面OS被掛起或者輸入設(shè)備不是與桌面OS相關(guān)聯(lián)的輔助終端環(huán)境的一部分,則在塊1406移動OS接受來自輸入設(shè)備的輸入命令。如果桌面OS沒有被掛起并且輸入設(shè)備是與桌面OS相關(guān)聯(lián)的輔助終端環(huán)境的一部分,則移動OS忽略輸入設(shè)備上的輸入事件并且桌面OS在塊1408接受輸入事件。在塊1410,桌面OS將輸入事件分發(fā)到桌面OS內(nèi)的合適的窗口或者GUI元素。如果輸入事件沒有被指向到控制臺窗口,則在塊1412該輸入事件被指向到另一窗口或者GUI元素。如果輸入事件被指向到控制臺窗口(例如,用戶點(diǎn)擊控制臺窗口區(qū)域內(nèi)的定點(diǎn)設(shè)備),則在塊1414該輸入事件被傳送給控制臺應(yīng)用程序作為一輸入事件。在塊1416,為來自控制臺應(yīng)用程序的輸入事件生成虛擬的輸入設(shè)備??梢栽诠蚕韮?nèi)核中生成虛擬的輸入設(shè)備或者可以將輸入事件直接寫入到移動OS輸入設(shè)備。在塊1418,控制臺應(yīng)用程序?qū)⑤斎胧录成涞揭苿覱S的圖形上下文。例如,控制臺應(yīng)用程序可以將輸入事件在控制臺應(yīng)用程序的控制臺窗口中的位置映射到移動OS的圖形上下文內(nèi)的位置??刂婆_應(yīng)用程序可以針對移動OS的輸入格式或者輸入模式狀態(tài)對輸入事件進(jìn)行轉(zhuǎn)譯。例如,輸入格式可以在桌面OS和移動OS之間不同。即使具有公共的輸入格式,桌面OS和移動OS可以具有不同的輸入模式狀態(tài)。例如,桌面OS可以使用非觸摸模式輸入狀態(tài)處理輸入事件,而移動OS是觸摸模式輸入狀態(tài)。在這種情況下,可以對桌面OS用戶交互空間中由定點(diǎn)設(shè)備生成的輸入事件進(jìn)行轉(zhuǎn)譯以便表現(xiàn)為虛擬輸入設(shè)備中的基于手勢的事件。在塊1420,在移動OS中將虛擬輸入設(shè)備與用于在控制臺窗口內(nèi)顯示的應(yīng)用程序的虛擬顯示設(shè)備相關(guān)聯(lián)。例如,多個應(yīng)用程序可能正在移動OS上運(yùn)行并且在桌面OS的用戶交互空間上的不同控制臺窗口內(nèi)顯示。在桌面OS的用戶交互空間中的單獨(dú)的控制臺窗口內(nèi)顯示的每個應(yīng)用程序在移動OS內(nèi)被分配了虛擬顯示器ID。因此,當(dāng)移動OS通過虛擬設(shè)備接收到來自桌面OS的控制臺應(yīng)用程序的輸入事件時,移動OS可以通過虛擬顯示器ID將虛擬設(shè)備映射到正確的應(yīng)用程序。在塊1422,輸入事件被傳送給與虛擬顯示器相關(guān)聯(lián)的應(yīng)用程序并且應(yīng)用程序可以處理輸入事件,仿佛其通過移動OS的用戶交互空間出現(xiàn)。特別地,上述方法對移動OS130的任何應(yīng)用程序起作用,應(yīng)用程序不需要被具體指定為通過桌面OS的控制臺應(yīng)用程序接受輸入事件。擴(kuò)展的渲染上下文實(shí)施例一些實(shí)施例通過在第一操作系統(tǒng)內(nèi)建立擴(kuò)展的渲染上下文來處理跨越多個OS的并發(fā)的用戶界面支持。如上所討論的,第一OS(例如,移動OS,Android)典型地被配置為利用單個活動的渲染上下文來定義單個的、活動的用戶交互空間。在此描述了新穎的技術(shù),用于通過將多個所謂的“上下文空間”平鋪(tile)到單個的、擴(kuò)展的呈現(xiàn)空間并且將每個上下文空間與不同的顯示器相關(guān)聯(lián)來有效地欺騙第一OS并發(fā)地處理多個用戶交互空間。實(shí)施例包括用于處理對多個用戶交互空間的顯示輸出的技術(shù)和用于處理這些上下文中的用戶交互的技術(shù)。返回到以上參照非擴(kuò)展的渲染上下文實(shí)施例討論的示例,再次假設(shè)日歷應(yīng)用程序和字處理應(yīng)用程序二者被編譯用于第一OS(例如,移動OS,AndroidOS)并且二者并發(fā)地在移動設(shè)備上的第一OS內(nèi)運(yùn)行。第二OS(例如,非移動OS,如Hydroid)使用共享內(nèi)核正在移動設(shè)備上并發(fā)地運(yùn)行。用戶已經(jīng)將移動設(shè)備與第二計(jì)算環(huán)境(桌面計(jì)算環(huán)境)對接,并且桌面計(jì)算環(huán)境與第二OS的用戶交互空間相關(guān)聯(lián)并且正在顯示第二OS的用戶交互空間。用戶期望通過第二OS的桌面計(jì)算環(huán)境與在第一OS上運(yùn)行的字處理應(yīng)用程序進(jìn)行交互。期望以對用戶透明的方式使用移動計(jì)算環(huán)境(即,移動設(shè)備)的第二OS來處理桌面計(jì)算環(huán)境的用戶交互空間。圖15圖示了根據(jù)各個實(shí)施例的、使用擴(kuò)展的渲染上下文跨越多個OS的并發(fā)用戶界面支持的方面。在圖15圖示的應(yīng)用程序呈現(xiàn)圖示1500中,第一應(yīng)用程序1510(例如,日歷應(yīng)用程序)計(jì)算對第一OS內(nèi)第一表面1512的更新。通過第一OS將第一表面1512存儲在共享的存儲空間中的第一存儲位置。具體地,第一應(yīng)用程序1510更新第一表面1512的后緩沖區(qū)1514。類似地,第二應(yīng)用程序1530(例如,字處理應(yīng)用程序)使用第一操作系統(tǒng)計(jì)算對第二表面1532的更新。再次,使得第二應(yīng)用程序1530對第二表面1532的更新到后緩沖區(qū)1534。通過第一OS將第二表面1532存儲在共享的存儲空間中的第二存儲位置。第一OS確定表面信息何時被改變并且發(fā)起呈現(xiàn)序列。第一OS可以在包括第一表面1512和第二表面1532的所有表面上執(zhí)行單循環(huán),確定與特定應(yīng)用程序相關(guān)聯(lián)的表面信息何時已經(jīng)改變。在呈現(xiàn)序列中,第一OS確定表面信息何時被改變并且互換第一表面1512的前緩沖區(qū)1516和后緩沖區(qū)1514,以及第二表面1532的前緩沖區(qū)1536和后緩沖區(qū)1534。第一OS在共享的存儲空間中的第三存儲位置建立擴(kuò)展的渲染上下文1520并且將第一表面1512呈現(xiàn)到擴(kuò)展的渲染上下文1520的第一上下文空間1522。第一OS將第二表面1532呈現(xiàn)到擴(kuò)展的渲染上下文1520的第二上下文空間1524。在實(shí)施例中,擴(kuò)展的渲染上下文1520可以在存儲空間中與第一OS的幀緩沖區(qū)重疊。例如,擴(kuò)展的渲染上下文1520的第一上下文空間1522的存儲位置可以與第一OS的幀緩沖區(qū)共同擴(kuò)張(coextensive)。第一OS向第二OS傳送通知在第三存儲位置呈現(xiàn)最終圖像。例如,第一OS可以通過進(jìn)程間通信信道向第二OS的控制臺應(yīng)用程序傳送對擴(kuò)展的上下文1520的第二上下文空間1524的共享存儲位置的文件描述符。第二OS訪問第三存儲位置處的擴(kuò)展的圖形上下文的第二部分以便取得呈現(xiàn)的圖形幀1538以供在第二OS的控制臺窗口1540中顯示。例如,第二OS的控制臺應(yīng)用程序可以將文件描述符映射到其處理空間并且從第三存儲位置讀取呈現(xiàn)的圖形幀以供在第二OS的用戶交互空間內(nèi)顯示。以此方式,第二OS實(shí)時地在其用戶交互空間內(nèi)顯示第二應(yīng)用程序的呈現(xiàn)的圖形幀。圖16示出了根據(jù)各個實(shí)施例的使用擴(kuò)展的渲染上下文進(jìn)行交叉環(huán)境呈現(xiàn)的例示性的方法的流程圖1600。實(shí)施例保持了第一應(yīng)用程序(例如,日歷應(yīng)用程序)和第二應(yīng)用程序(例如,字處理應(yīng)用程序)的應(yīng)用程序圖形的顯示。假定這兩個應(yīng)用程序被編譯用于第一操作系統(tǒng)(例如,AndroidOS)并且處于第一操作系統(tǒng)內(nèi)的活動的并發(fā)執(zhí)行中,但是用戶期望通過與第二OS相關(guān)聯(lián)的第二計(jì)算環(huán)境與第二應(yīng)用程序進(jìn)行交互。特別地,這些技術(shù)可以應(yīng)用于其中兩個OS不兼容(例如,為第一OS編譯的應(yīng)用程序可能不能直接在第二OS上執(zhí)行)的環(huán)境。在一些實(shí)現(xiàn)方式中,如上所述,兩個OS在移動設(shè)備的共享內(nèi)核上獨(dú)立地并且并發(fā)地運(yùn)行。方法1600在塊1604開始,建立第一OS的擴(kuò)展的渲染上下文。如上討論的,根據(jù)單個的活動顯示器的特征典型地建立渲染上下文。然而,建立擴(kuò)展的渲染上下文以便使得第一上下文空間與第一應(yīng)用程序相關(guān)聯(lián)并且第二上下文空間與第二應(yīng)用程序相關(guān)聯(lián)。第一和第二上下文空間是非重疊的。在一些實(shí)施例中,通過平鋪本地設(shè)備的活動顯示器(例如,具有共享內(nèi)核的移動設(shè)備的顯示器)和任何虛擬顯示器(即,與在第二OS的用戶交互空間內(nèi)顯示的控制臺窗口相關(guān)聯(lián)的第一OS的顯示器)來生成擴(kuò)展的渲染上下文,以形成對于第一OS看上去為一個大的顯示器。擴(kuò)展的渲染上下文的區(qū)域被指定為非重疊的上下文空間以便保持它們與其各自的物理或者虛擬顯示器的關(guān)聯(lián)性。特別地,在一些實(shí)現(xiàn)方式中,不同的上下文空間可能具有不同的分辨率或者其它特征。此外,在某些實(shí)施例中,上下文空間不是連續(xù)的。例如,以如下方式來建立擴(kuò)展的上下文,即:在每個未被指定給任何上下文空間的上下文空間之間留出空間。在塊1608,使用第一操作系統(tǒng)來計(jì)算對第一應(yīng)用程序和第二應(yīng)用程序的表面的更新。然后在塊1612使用第一操作系統(tǒng)來呈現(xiàn)更新的表面以在可由(例如可以在共享的內(nèi)核上并發(fā)地運(yùn)行的)第一操作系統(tǒng)和第二操作系統(tǒng)訪問的共享存儲位置中生成擴(kuò)展的圖形幀。擴(kuò)展的圖形幀的第一部分與(與第一應(yīng)用程序相關(guān)聯(lián)的)第一上下文空間相關(guān)聯(lián)以及擴(kuò)展的圖形幀的第二部分與(與第二應(yīng)用程序相關(guān)聯(lián)的)第二上下文空間相關(guān)聯(lián)。當(dāng)在塊1608進(jìn)行呈現(xiàn)時,將第一應(yīng)用程序的更新的表面呈現(xiàn)給擴(kuò)展的圖形幀的第一部分,并且將第二應(yīng)用程序的更新的表面呈現(xiàn)給擴(kuò)展的圖形幀的第二部分。值得注意的,以此方式,擴(kuò)展的圖形幀有效地包括被平鋪到其合適的上下文空間中的兩個應(yīng)用程序的呈現(xiàn)的表面。在一些實(shí)施例中,在塊1616,向與第一OS相關(guān)聯(lián)的第一計(jì)算環(huán)境的(多個)顯示器顯示來自共享存儲位置的與第一上下文空間相關(guān)聯(lián)的擴(kuò)展的圖形幀的第一部分。例如,如上討論的,共享的存儲位置是移動設(shè)備的幀緩沖存儲器(或者被拷貝到幀緩沖存儲器),移動設(shè)備的顯示設(shè)備驅(qū)動器訪問幀緩沖存儲器以便向其(多個)顯示器顯示擴(kuò)展的圖形幀的第一部分。此外,在一些實(shí)施例中,在塊1620,向與第二操作系統(tǒng)相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器顯示來自共享存儲位置的與第二運(yùn)動空間相關(guān)聯(lián)的擴(kuò)展的圖形幀的第二部分。例如,如上討論的,將共享存儲位置拷貝到與第二(例如桌面)計(jì)算環(huán)境相關(guān)聯(lián)的第二OS的幀緩沖存儲器,并且顯示設(shè)備驅(qū)動器將擴(kuò)展的圖形幀的第二部分顯示給第二計(jì)算環(huán)境的顯示器。在參照圖12討論的實(shí)施例中,通過第二OS遠(yuǎn)程地執(zhí)行對第二應(yīng)用程序的更新的圖形的呈現(xiàn)。在參照圖15討論的實(shí)施例中,通過移動設(shè)備的呈現(xiàn)引擎本地地執(zhí)行對兩個應(yīng)用程序的呈現(xiàn),但是連續(xù)地建立并且拆解渲染上下文。關(guān)于圖16討論的實(shí)施例允許通過移動設(shè)備的呈現(xiàn)引擎本地地執(zhí)行兩個應(yīng)用程序的呈現(xiàn),同時保留單個的、盡管被擴(kuò)展的、呈現(xiàn)上下文(即,沒有拆解渲染上下文)。圖17示出了根據(jù)各個實(shí)施例的、使用擴(kuò)展的渲染上下文進(jìn)行交叉環(huán)境呈現(xiàn)的另一例示性方法的流程圖1700。如在圖16的方法1600中,實(shí)施例保持第一應(yīng)用程序和第二應(yīng)用程序的應(yīng)用程序圖形的顯示,第一應(yīng)用程序和第二應(yīng)用程序二者被編譯用于第一操作系統(tǒng)并處于第一操作系統(tǒng)的活動的并發(fā)執(zhí)行中。方法1700通過在塊1704建立第一操作系統(tǒng)的擴(kuò)展的渲染上下文并且在塊1708使用第一操作系統(tǒng)計(jì)算對第一應(yīng)用程序和第二應(yīng)用程序的表面的更新而開始。如上討論的,建立擴(kuò)展的渲染上下文以使得第一上下文空間與第一應(yīng)用程序相關(guān)聯(lián)并且第二上下文空間與第二應(yīng)用程序相關(guān)聯(lián)。第一和第二上下文空間是非重疊的。在一些實(shí)現(xiàn)方式中,以分別與塊1604和1608基本上相同的方式來執(zhí)行塊1704和1708。在塊1712,使用第一操作系統(tǒng)根據(jù)第一上下文空間呈現(xiàn)第一應(yīng)用程序的更新的表面,以便在第一操作系統(tǒng)的幀緩沖區(qū)中生成第一圖形幀。例如,第一上下文空間可以與特定的分辨率、特定的平鋪偏移(例如,開始“X”位置)等等相關(guān)聯(lián)。在一些實(shí)現(xiàn)方式中,以與圖16的方法1600中擴(kuò)展的圖形幀的各個部分的生成基本上相同的方式來生成第一圖形幀。在一些實(shí)施例中,在塊1716,從幀緩沖區(qū)向與第一操作系統(tǒng)相關(guān)聯(lián)的第一計(jì)算環(huán)境的顯示器顯示與第一上下文空間相關(guān)聯(lián)的第一圖形幀。在塊1720,使用第一操作系統(tǒng)呈現(xiàn)第二應(yīng)用程序的更新的表面,以便在共享的存儲位置生成第二圖形幀。如上討論的,共享的存儲位置可由(例如,可以在共享的內(nèi)核上并發(fā)地運(yùn)行的)第一操作系統(tǒng)和第二操作系統(tǒng)訪問。在一些實(shí)施例中,在塊1724,從共享的存儲位置向與第二操作系統(tǒng)相關(guān)聯(lián)的第二計(jì)算環(huán)境的顯示器顯示與第二運(yùn)動空間相關(guān)聯(lián)的第二圖形幀。特別地,圖16和圖17二者的實(shí)施例為每個應(yīng)用程序建立具有上下文空間的擴(kuò)展的渲染上下文。然而,圖16的方法1600將所有的圖形更新呈現(xiàn)到單個的擴(kuò)展位圖中,圖17的方法1700將圖形更新呈現(xiàn)到單獨(dú)的若干位圖中。例如,依賴于如何管理和/或訪問存儲器,可能期望一種或者其它技術(shù)。如同圖12的實(shí)施例,在圖16和17的實(shí)施例中,使用第一OS的呈現(xiàn)引擎呈現(xiàn)兩個應(yīng)用程序的更新的圖形幀。使用第一OS的呈現(xiàn)引擎允許兩個應(yīng)用程序使用在第一OS中可用的移動設(shè)備的硬件加速能力。例如,在圖12、16和/或17的實(shí)施例中,可以通過使用2D或者3D硬件輔助呈現(xiàn)來呈現(xiàn)第一和第二應(yīng)用程序中任一個或者二者。使用擴(kuò)展的渲染上下文對第一OS(即,移動OS,Android)上運(yùn)行的應(yīng)用程序的圖形幀進(jìn)行遠(yuǎn)程顯示對于第一OS提供了一種用于對使用單個渲染上下文對在多個用戶交互空間內(nèi)顯示的多個應(yīng)用程序提供呈現(xiàn)的方式。然而,擴(kuò)展的渲染上下文產(chǎn)生了要處理通過擴(kuò)展的渲染上下文顯示的應(yīng)用程序的輸入事件的問題。具體地,必須配置第一OS的輸入隊(duì)列來處理來自通過擴(kuò)展的渲染上下文的單獨(dú)的虛擬顯示器顯示的多個應(yīng)用程序的多個輸入事件。交叉環(huán)境用戶交互支持的實(shí)施例針對處理在第一OS上運(yùn)行的并且通過第一OS的擴(kuò)展的渲染上下文而在多個單獨(dú)的用戶交互空間(即,移動設(shè)備用戶交互空間和桌面OS用戶交互空間)上顯示的多個應(yīng)用程序的用戶輸入事件。實(shí)施例包括擴(kuò)展的輸入隊(duì)列,其中將來自用于遠(yuǎn)程顯示的應(yīng)用程序的虛擬輸入設(shè)備的輸入事件映射到輸入隊(duì)列內(nèi)的單獨(dú)的運(yùn)動空間。例如,第一應(yīng)用程序(例如,日歷應(yīng)用程序)正在第一OS上運(yùn)行并且正在被顯示給與第一設(shè)備相關(guān)聯(lián)的第一顯示器(例如,第一OS正在其上運(yùn)行的移動設(shè)備的顯示器)。第二應(yīng)用程序(例如,字處理應(yīng)用程序)也正在與第一應(yīng)用程序并發(fā)地運(yùn)行,但是被呈現(xiàn)在擴(kuò)展的渲染上下文的上下文空間(即,虛擬顯示器)中并且被顯示在第二OS的第二用戶交互空間上,第二OS與第一OS在移動設(shè)備的共享內(nèi)核上并發(fā)地運(yùn)行。第一OS通過包括第一上下文空間(即,移動設(shè)備顯示器)中的第一應(yīng)用程序和第二上下文空間中的第二應(yīng)用程序二者的應(yīng)用程序圖形的擴(kuò)展的渲染上下文來呈現(xiàn)圖形幀。通過在第二OS上運(yùn)行的控制臺應(yīng)用程序在第二OS的用戶交互空間上顯示第二上下文空間。通過第二OS(即,桌面OS,Hydroid)接收通過擴(kuò)展的渲染上下文遠(yuǎn)程顯示的應(yīng)用程序的輸入事件,并且以與以上關(guān)于非擴(kuò)展圖形上下文描述的相同的方式通過第二OS的控制臺應(yīng)用程序?qū)⑵鋫魉徒o虛擬輸入設(shè)備。然而,如上所述,在移動OS中從虛擬輸入設(shè)備接收的輸入事件與在第二OS的用戶交互空間內(nèi)顯示的控制臺窗口有關(guān)。虛擬輸入設(shè)備被映射到與對應(yīng)于遠(yuǎn)程顯示的應(yīng)用程序的虛擬顯示器相關(guān)聯(lián)的擴(kuò)展的輸入隊(duì)列內(nèi)的運(yùn)動空間。擴(kuò)展的輸入隊(duì)列允許第一OS使用單個輸入隊(duì)列正確地處理來自旨在用于多個并發(fā)執(zhí)行的應(yīng)用程序的多個本地和虛擬輸入設(shè)備的輸入。圖18a和圖18b圖示了根據(jù)各個實(shí)施例的使用擴(kuò)展的渲染上下文的交叉環(huán)境應(yīng)用程序的用戶交互支持的方面。圖18a圖示了正在遠(yuǎn)程地顯示在第一OS上運(yùn)行的應(yīng)用程序的用戶交互空間1810(例如,顯示在第一OS上運(yùn)行的應(yīng)用程序的第二OS的GUI)。例如,第一、第二和第三應(yīng)用程序可以正在第一OS上運(yùn)行(即,在第一OS的活動的并發(fā)執(zhí)行中)。根據(jù)上述的實(shí)施例,第一OS可以在第一OS的擴(kuò)展的渲染上下文的第一、第二和第三上下文空間中顯示第一、第二和第三應(yīng)用程序。用戶交互空間1810中的控制臺窗口1812和1814可以分別顯示在第一OS上運(yùn)行的第二應(yīng)用程序和第三應(yīng)用程序。圖18b圖示了用于提供對在第一OS上運(yùn)行的每個應(yīng)用程序的用戶交互支持的第一OS的擴(kuò)展的輸入隊(duì)列1840。擴(kuò)展的輸入隊(duì)列1840包括第一運(yùn)動空間1842、第二運(yùn)動空間1844,和第三運(yùn)動空間1846。第一運(yùn)動空間與第一OS的擴(kuò)展的渲染上下文的第一上下文空間相關(guān)聯(lián),其典型地用于呈現(xiàn)第一OS的非虛擬顯示器1852(即與移動計(jì)算設(shè)備110的(多個)顯示器116相關(guān)聯(lián)的上下文空間)。第二和第三運(yùn)動空間分別與虛擬顯示器1854和1856相關(guān)聯(lián),虛擬顯示器1854和1856通過第二和第三上下文空間呈現(xiàn)。當(dāng)出現(xiàn)要被指向到遠(yuǎn)程顯示的應(yīng)用程序的控制臺窗口的輸入事件時,該輸入事件被指向到與虛擬顯示器相關(guān)聯(lián)的運(yùn)動空間,通過所述虛擬顯示器顯示應(yīng)用程序。例如,如果用戶在用戶交互空間1810的控制臺窗口1812內(nèi)利用定點(diǎn)設(shè)備點(diǎn)擊,如輸入事件1820所指示的,第二OS的窗口系統(tǒng)將輸入事件指向到與控制臺窗口1812相關(guān)聯(lián)的控制臺應(yīng)用程序。如上所述,控制臺應(yīng)用程序?qū)⑤斎胧录成涞教摂M輸入設(shè)備。然而,該輸入事件與控制臺窗口1812有關(guān)。如果將輸入事件直接饋入到第一OS的輸入隊(duì)列,則該輸入事件將不被指向到正確的應(yīng)用程序事件句柄。因此,來自虛擬輸入設(shè)備的輸入事件1820被重新映射到第二運(yùn)動空間1844。以此方式,擴(kuò)展的輸入隊(duì)列將輸入事件指向到接收并處理輸入事件1820的第二應(yīng)用程序的事件句柄。在實(shí)施例中,虛擬顯示器在移動OS輸入隊(duì)列中被偏移。例如,在圖18b中,虛擬顯示器1854和1856在移動OS輸入隊(duì)列1840中被偏移了虛擬顯示器偏移1858。虛擬顯示器偏移1858防止虛擬顯示器在輸入隊(duì)列中相鄰地出現(xiàn),虛擬顯示器在輸入隊(duì)列中相鄰地出現(xiàn)可能導(dǎo)致旨在用于一個虛擬顯示器的輸入事件被在與不同應(yīng)用程序相關(guān)聯(lián)的運(yùn)動空間內(nèi)解釋。虛擬顯示器偏移應(yīng)該足以大到根本不能用作實(shí)際的虛擬顯示器分辨率參數(shù)。在一個實(shí)施例中,虛擬顯示器偏移1858被選擇為10000個像素。圖19圖示了根據(jù)各個實(shí)施例的用于接收通過擴(kuò)展的渲染上下文顯示的交叉環(huán)境應(yīng)用程序的輸入事件的方法1900。例如,方法1900可以用于處理在第一OS內(nèi)運(yùn)行的第一應(yīng)用程序和第二應(yīng)用程序的輸入事件,第一應(yīng)用程序被本地顯示在第一OS的用戶交互空間上,第二應(yīng)用程序通過第一OS的擴(kuò)展的渲染上下文被遠(yuǎn)程顯示在第二OS的用戶交互空間中。方法1900開始于塊1902,當(dāng)在第一OS中接收到第一用戶輸入時,第一應(yīng)用程序和第二應(yīng)用程序處于第一OS內(nèi)的活動的并發(fā)執(zhí)行中,在與第一OS相關(guān)聯(lián)的第一用戶環(huán)境內(nèi)顯示第一應(yīng)用程序,在與第二OS相關(guān)聯(lián)的第二用戶環(huán)境內(nèi)顯示第二應(yīng)用程序,第一和第二操作系統(tǒng)在共享的內(nèi)核上并發(fā)地運(yùn)行,第一OS通過擴(kuò)展的渲染上下文的第一虛擬顯示器呈現(xiàn)第二應(yīng)用程序的圖形幀來保持第二應(yīng)用程序的應(yīng)用程序圖形。在塊1904,第一OS建立包括第一運(yùn)動空間和第二運(yùn)動空間的擴(kuò)展的輸入隊(duì)列,第二運(yùn)動空間對應(yīng)于第一虛擬顯示器。例如,第一操作系統(tǒng)為第二應(yīng)用程序分配第一虛擬顯示器,建立具有第一上下文空間和第二上下文空間的擴(kuò)展的渲染上下文,將第一虛擬顯示器與第二上下文空間相關(guān)聯(lián),并且使用上述技術(shù)通過擴(kuò)展的渲染上下文的第二上下文空間來呈現(xiàn)第二應(yīng)用程序的圖形幀。在塊1906,第一OS在第一虛擬輸入設(shè)備處接收來自第二OS上運(yùn)行的第一控制臺應(yīng)用程序的第一用戶輸入事件,通過第二OS正在顯示第二應(yīng)用程序的呈現(xiàn)的圖形幀。在塊1908,將第一虛擬輸入設(shè)備映射到第一操作系統(tǒng)的擴(kuò)展的輸入隊(duì)列的第二運(yùn)動空間。將第一虛擬輸入設(shè)備映射到第二運(yùn)動空間使得第一OS的擴(kuò)展的輸入隊(duì)列正確地將來自第一虛擬輸入設(shè)備的輸入事件關(guān)聯(lián)到第二應(yīng)用程序的視圖內(nèi)的事件句柄上。具體地,當(dāng)輸入事件被映射到第二運(yùn)動空間時,第一OS將輸入事件視為出現(xiàn)在擴(kuò)展的輸入隊(duì)列中與第二應(yīng)用程序相關(guān)聯(lián)的位置。在塊1910,第一OS將第一用戶輸入事件傳送給來自被映射的第一虛擬輸入設(shè)備的第二應(yīng)用程序。擴(kuò)展的輸入隊(duì)列使用被擴(kuò)展的渲染上下文的平鋪的屬性以使得輸入隊(duì)列處理來自多個用戶交互空間的多個輸入事件并且將輸入事件指向到想要的應(yīng)用程序的合適的事件句柄。鏡像的上下文實(shí)施例以上在保持對跨越多個操作系統(tǒng)上的多個應(yīng)用程序的并發(fā)用戶交互空間支持的背景下描述了擴(kuò)展的和非擴(kuò)展的渲染上下文的實(shí)施例。在許多情況下,期望鏡像單個用戶交互空間的上下文。期望在與第二OS相關(guān)聯(lián)的第二計(jì)算環(huán)境(例如,與HydroidOS相關(guān)聯(lián)的桌面環(huán)境)中對第一OS進(jìn)行并發(fā)地觀看和交互(即,“鏡像”交互空間)。通過鏡像的用戶交互空間,用戶可以與第一OS交互,仿佛通過本地設(shè)備進(jìn)行交互(即,用戶可以瀏覽第一OS可用的應(yīng)用程序、開始和停止應(yīng)用程序,使用搜索能力,等等)。第一OS(例如,移動OS,Android)典型地被配置為定義單個的、活動的用戶交互空間。用戶交互空間包括一活動的顯示器(例如,具有相關(guān)聯(lián)的特征,如分辨率)以及一個或多個允許與在活動顯示器上顯示的元素進(jìn)行用戶交互的活動的輸入設(shè)備。提出了新穎的技術(shù)來使用交叉環(huán)境呈現(xiàn)以提供跨越多個OS的一個或多個鏡像的用戶交互空間。如上討論的,即使在多個OS不兼容和/或在共享的內(nèi)核上獨(dú)立并且并發(fā)地運(yùn)行的情況下,實(shí)施例也可操作。可以使用以上關(guān)于保持對交叉環(huán)境應(yīng)用程序的并發(fā)用戶交互支持所參照的許多相同的系統(tǒng)元素來完成保持具有鏡像上下文的并發(fā)用戶交互支持。例如,參照圖7,移動OS130的圖形上下文可以是主動地顯示應(yīng)用程序(例如,應(yīng)用程序752和/或754)和/或移動OS130的主屏幕(例如,AndroidOS130的主屏幕應(yīng)用程序451)。用于主動顯示的應(yīng)用程序和/或移動OS的主屏幕的表面信息可以被存儲在共享的存儲器724內(nèi)??梢酝ㄟ^控制臺應(yīng)用程序782在桌面OS160的用戶交互空間內(nèi)顯示移動OS130的鏡像的上下文。圖20示出了根據(jù)各個實(shí)施例的、用于提供鏡像的用戶交互空間的圖形上下文的交叉環(huán)境呈現(xiàn)的例示性方法的流程圖2000。方法2000開始于塊2004,使用第一操作系統(tǒng)計(jì)算對被編譯用于第一操作系統(tǒng)并且處于第一操作系統(tǒng)內(nèi)的活動的執(zhí)行中的第一應(yīng)用程序的一組表面的更新。例如,進(jìn)行計(jì)算以確定表面形狀、大小、紋理、分層等等的改變。然后使用第一操作系統(tǒng)在塊2008呈現(xiàn)表面更新,以便生成圖形幀。圖形幀可以是反映應(yīng)用的更新的圖形信息的位圖。在塊2012,將圖形幀存儲在第一操作系統(tǒng)和第二操作系統(tǒng)二者可訪問的共享的存儲位置。在一些實(shí)施例中,第一和第二OS正在共享的內(nèi)核上并發(fā)地運(yùn)行。在塊2016,可以使用第一操作系統(tǒng)將圖形幀顯示給第一計(jì)算環(huán)境的第一顯示器上的第一應(yīng)用程序的第一應(yīng)用程序顯示。例如,共享的存儲位置可以是幀緩沖存儲器,或者可以被拷貝到第一操作系統(tǒng)的幀緩沖區(qū)。本地設(shè)備(例如,正在運(yùn)行共享內(nèi)核)的顯示設(shè)備驅(qū)動器訪問幀緩沖存儲器以便顯示位圖。在塊2012在共享的存儲位置中存儲圖形幀之后,期望向第二OS通知更新的圖形信息可用。在塊2020,傳送文件描述符,向被編譯用于第二OS并且處于第二OS內(nèi)的活動執(zhí)行中的控制臺應(yīng)用程序指示共享的存儲位置。在一些實(shí)現(xiàn)方式中,文件描述符包括共享的存儲位置的指示。在其它實(shí)現(xiàn)方式中,文件描述符包括附加信息,如指示更新的圖形信息對于正被鏡像的應(yīng)用程序的可用性的標(biāo)志。如上所述,控制臺應(yīng)用程序可以是X-Windows或者是在第二計(jì)算環(huán)境中的顯示器的窗口內(nèi)顯示的類似類型的應(yīng)用程序。在塊2024,控制臺應(yīng)用程序根據(jù)文件描述符訪問共享的存儲位置處的更新的圖形信息(例如,位圖),并且將來自共享的存儲位置的圖形幀顯示給第二計(jì)算環(huán)境的第二顯示器上的第一應(yīng)用程序的第二應(yīng)用程序顯示。在一些實(shí)施例中,在第一和第二計(jì)算環(huán)境二者的顯示器上基本上并發(fā)地顯示應(yīng)用程序的更新的圖形信息。圖21示出了根據(jù)各個實(shí)施例的、提供鏡像的用戶交互空間的圖形上下文的交叉環(huán)境呈現(xiàn)的另一例示性方法的流程圖2100。如在圖20中,方法2100開始于塊2104,使用第一操作系統(tǒng)計(jì)算對被編譯用于第一操作系統(tǒng)并且處于第一操作系統(tǒng)內(nèi)的活動的執(zhí)行中的第一應(yīng)用程序的一組表面的更新。在塊2108,將更新的該組表面存儲在(例如,在共享的內(nèi)核上并發(fā)地運(yùn)行的)第一操作系統(tǒng)和第二操作系統(tǒng)二者可訪問的共享的存儲位置。在塊2112,利用第一操作系統(tǒng)呈現(xiàn)更新的該組表面以生成第一圖形幀。然后,在塊2116,可以使用第一操作系統(tǒng)將第一圖形幀顯示給第一計(jì)算環(huán)境的第一顯示器上的第一應(yīng)用程序的第一應(yīng)用程序顯示。例如,移動OS130呈現(xiàn)更新的應(yīng)用程序圖形并且將更新的圖形顯示給移動設(shè)備110的(多個)顯示器116。在塊2108在共享的存儲器中存儲更新的該組表面之后的任何時間,期望向第二OS通知更新的圖形信息可用。在塊2120,傳送文件描述符,向被編譯用于第二操作系統(tǒng)并且處于第二操作系統(tǒng)內(nèi)的活動執(zhí)行中的控制臺應(yīng)用程序指示共享的存儲位置。特別地,如在圖20的方法2000中在共享的存儲器中存儲的信息是未被呈現(xiàn)的表面信息(例如,幾何原語)而不是呈現(xiàn)后的比特。相應(yīng)地,在塊2124,通過第二操作系統(tǒng)(例如,根據(jù)文件描述符經(jīng)由控制臺應(yīng)用程序)呈現(xiàn)來自共享的存儲位置的更新的該組表面以生成基本上與第一圖形幀相同的第二圖形幀。在塊2128,經(jīng)由第二操作系統(tǒng)的控制臺應(yīng)用程序?qū)⒌诙D形幀顯示給第二計(jì)算環(huán)境的第二顯示器上第一應(yīng)用程序的第二應(yīng)用程序顯示,使得第二應(yīng)用程序顯示基本上與第一應(yīng)用程序顯示相同。值得注意的,在第一和第二操作系統(tǒng)二者上復(fù)制呈現(xiàn)時,可能涉及附加開銷。然而,在許多情況下,這種附加開銷是值得的。例如,當(dāng)不同計(jì)算環(huán)境的顯示器具有略微不同的特征時,可能期望在適合于各個顯示器的各個單獨(dú)的渲染上下文中呈現(xiàn)更新的圖形信息。圖20和圖21的方法描述了在鏡像的圖形上下文中利用在第一OS中運(yùn)行的應(yīng)用程序的活動顯示進(jìn)行圖形上下文的交叉環(huán)境鏡像。然而,這些方法可以用于其中在圖形上下文中沒有主動地顯示應(yīng)用程序的情況下。例如,圖形上下文可以是顯示第一OS的主屏幕或者其它特征(例如,搜索屏幕等等)。在這些情況下,通過第一OS的組件更新圖形上下文的表面信息,并且可以執(zhí)行圖20和圖21的方法的其它步驟以便在第二應(yīng)用程序顯示中提供鏡像的圖形上下文。特別地,可以與應(yīng)用程序的交叉環(huán)境呈現(xiàn)并發(fā)地采用圖形上下文的交叉環(huán)境鏡像。例如,可以使用根據(jù)圖20或圖21的方法,使用上述的應(yīng)用程序的交叉環(huán)境呈現(xiàn)的技術(shù),在第二用戶環(huán)境中顯示在第一OS上運(yùn)行的應(yīng)用程序的同時,將移動設(shè)備的用戶交互空間的活動的圖形上下文鏡像到第二用戶環(huán)境。為了進(jìn)行例示,參照圖8,可以在第一控制臺窗口882內(nèi)顯示移動OS的用戶交互空間,而在顯示器844上在桌面OS的用戶交互空間內(nèi)的第二控制臺窗口884內(nèi)顯示移動OS應(yīng)用程序??梢砸耘c在圖13、14、18和/或19中圖示的對交叉環(huán)境應(yīng)用程序提供用戶界面支持基本上相同的方式執(zhí)行對鏡像的圖形上下文提供用戶交互支持。具體地,可以從第二OS的控制臺應(yīng)用程序向虛擬輸入設(shè)備提供輸入事件。第一OS可以通過擴(kuò)展的或者非擴(kuò)展的輸入隊(duì)列接收來自虛擬輸入設(shè)備的輸入事件。交叉環(huán)境重定向?qū)嵤├鲜黾夹g(shù)提供了通過第二操作系統(tǒng)的用戶交互空間對第一操作系統(tǒng)的應(yīng)用程序和圖形上下文的交叉環(huán)境用戶交互支持。為了便于透明交叉環(huán)境使用模型,實(shí)施例針對從第二操作系統(tǒng)的用戶交互空間對第一操作系統(tǒng)的應(yīng)用程序和/或鏡像的上下文提供訪問。參照回到圖8,用戶可以通過包括移動設(shè)備上的交互組件(即,(多個)觸摸屏顯示器116,(多個)其它I/O設(shè)備118)的第一用戶交互空間與第一OS(即,移動OS,Android)進(jìn)行交互。用戶還可以通過包括輔助終端環(huán)境840的顯示器844的第二用戶交互空間與第二OS(即,桌面OS,Hydroid)進(jìn)行交互。如上所述,可用于桌面OS160(即,被編譯用于桌面OS160并且加載到桌面OS160的執(zhí)行環(huán)境中)的一組應(yīng)用程序可以與可用于移動OS130的一組應(yīng)用程序不同。實(shí)施例針對于通過在桌面OS160的用戶交互空間的菜單內(nèi)提供用于移動OS130上可用的應(yīng)用程序的菜單圖標(biāo)或者菜單列表?xiàng)l目而使得在桌面OS160的用戶交互空間內(nèi)可訪問移動OS130的應(yīng)用程序。圖22圖示了根據(jù)各個實(shí)施例的交叉環(huán)境重定向的方面。在圖22圖示的計(jì)算環(huán)境2200中,用戶通過桌面OS用戶交互空間2202與桌面OS160進(jìn)行交互。在桌面OS用戶交互空間2202內(nèi),菜單欄2220包括可用的應(yīng)用程序的圖標(biāo)或者列表。為了啟動應(yīng)用程序,用戶從菜單欄、或者菜單欄2220的下拉或彈出列表中選擇應(yīng)用程序名稱或者圖標(biāo)。傳統(tǒng)地,菜單欄2220僅僅包括在桌面OS160上可用的應(yīng)用程序的菜單條目或者圖標(biāo)。例如,菜單條目2222、2224、2226,和/或2228可以是桌面OS160上可用的應(yīng)用程序(例如,被編譯用于桌面OS160并且被加載到桌面OS160的執(zhí)行環(huán)境中)。本發(fā)明的實(shí)施例針對提供從桌面OS用戶交互空間2202對移動OS130的應(yīng)用程序和/或圖形上下文的交叉環(huán)境訪問。例如,菜單條目2232、2234、2236、22367和/或2238可以指示在移動OS130上可用的應(yīng)用程序和/或移動OS130的圖形上下文。將桌面OS用戶交互空間2202顯示在與桌面OS160相關(guān)聯(lián)的用戶交互空間(例如,輔助終端環(huán)境840)內(nèi)的顯示器上。桌面OS160的菜單欄2220包括與被編譯用于桌面OS160并且在桌面OS160上加載(例如被編譯用于Hydroid/Linux并且被加載到HydroidOS的執(zhí)行環(huán)境內(nèi))的應(yīng)用程序相關(guān)聯(lián)的菜單條目2222、2224,2226,和/或2228。菜單欄2220還包括與被編譯用于移動OS130并且在移動OS130上加載(例如被編譯用于Android并且在Android執(zhí)行環(huán)境內(nèi)加載)的應(yīng)用程序相關(guān)聯(lián)的菜單條目2234、2236,2237,和/或2238。當(dāng)用戶選擇菜單條目2234、2236,和/或2238之一時,在移動OS130上啟動相關(guān)聯(lián)的應(yīng)用程序并且在桌面OS160的控制臺窗口內(nèi)進(jìn)行顯示,例如,在桌面OS用戶交互空間2202的窗口2216內(nèi)顯示。菜單條目2232可以與移動OS圖形上下文相關(guān)聯(lián),使得如果選擇了菜單條目2232,則在桌面OS160的控制臺窗口內(nèi)顯示移動OS的圖形上下文。圖23圖示了為構(gòu)建桌面OS160的菜單欄2220可以采用的處理流程2300。在處理流程2300的步驟2302,桌面OS160在移動OS130中查詢可用應(yīng)用程序的列表。在一個實(shí)施例中,桌面OS160的系統(tǒng)服務(wù)或者啟動器(launcher)應(yīng)用程序在移動OS130的服務(wù)中查詢所有可啟動的移動OS應(yīng)用程序快捷方式。移動OS130利用可用的應(yīng)用程序的列表(即,用于可用的移動OS應(yīng)用程序的可啟動的快捷方式)進(jìn)行響應(yīng)??捎脩?yīng)用程序的列表可以包括在移動OS130上所有可用的應(yīng)用程序(所有在移動OS130上加載的并且可執(zhí)行的應(yīng)用程序)或者可用的移動OS應(yīng)用程序的子集。例如,列表可以包括在移動OSGUI的(多個)應(yīng)用程序菜單屏幕上出現(xiàn)的所有應(yīng)用程序。在步驟2304,桌面OS160接收來自移動OS130的應(yīng)用程序的列表。由移動OS130返回的應(yīng)用程序的列表包括列出的每個應(yīng)用程序的應(yīng)用程序分組名稱,并且還可以包括列出的每個應(yīng)用程序的應(yīng)用程序名稱和圖標(biāo)。桌面OS160通過在塊2306、2308和2310上進(jìn)行迭代對應(yīng)用程序列表的每個應(yīng)用程序在菜單欄2220中創(chuàng)建菜單條目。對于每個應(yīng)用程序,桌面OS160在塊2306對菜單欄2220中的應(yīng)用程序的圖標(biāo)進(jìn)行實(shí)例化,在塊2308將圖標(biāo)與桌面OS160的控制臺應(yīng)用程序相關(guān)聯(lián),并且在塊2310將指示應(yīng)用程序的分組名稱的參數(shù)與圖標(biāo)相關(guān)聯(lián)。使用上述的交叉環(huán)境呈現(xiàn)的實(shí)施例,控制臺應(yīng)用程序在桌面OS160上運(yùn)行并且在桌面OS160內(nèi)顯示應(yīng)用程序的圖形信息。以此方式,當(dāng)用戶選擇菜單條目時,在桌面OS160上啟動控制臺應(yīng)用程序,并且將應(yīng)用程序的分組名稱傳送給控制臺應(yīng)用程序。桌面OS160可以以各種方式顯示與移動OS130的應(yīng)用程序相關(guān)聯(lián)的菜單條目。菜單條目可以被顯示在菜單欄2220中,或者被顯示在當(dāng)選擇指示移動OS應(yīng)用程序是可用的菜單條目時出現(xiàn)的下拉菜單中。在菜單欄2220或者下拉菜單中,可以使用圖標(biāo)或者僅僅應(yīng)用程序名稱來顯示菜單條目。在一個實(shí)施例中,桌面OS160為移動OS應(yīng)用程序顯示單獨(dú)的菜單欄。在另一個實(shí)施例中,與移動OS應(yīng)用程序相關(guān)聯(lián)的菜單條目與桌面OS應(yīng)用程序的菜單條目并排或者混合出現(xiàn)在桌面OS菜單欄2220內(nèi)??蛇x地,移動OS菜單條目可以處于定界符2240隔開的菜單欄2220的區(qū)域2230中或者以其它方式可被識別為包括移動OS菜單條目。菜單欄2220可以包括移動設(shè)備自身的活動顯示的菜單條目,即,根據(jù)圖20和/或圖21的方法用戶可以在桌面OS的用戶環(huán)境內(nèi)選擇顯示移動OS的用戶交互空間的菜單條目。在一個實(shí)施例中,在可用應(yīng)用程序的列表中返回移動OS的主屏幕應(yīng)用程序并且向其提供相關(guān)聯(lián)的菜單條目。當(dāng)用戶選擇與移動OS應(yīng)用程序相關(guān)聯(lián)的菜單條目時,桌面OS160啟動與菜單條目相關(guān)聯(lián)的控制臺應(yīng)用程序并且將應(yīng)用程序的分組名稱傳送給控制臺應(yīng)用程序??刂婆_應(yīng)用程序在桌面OS用戶交互空間2202內(nèi)顯示窗口(即,控制臺應(yīng)用程序在桌面OS的圖形系統(tǒng)內(nèi)進(jìn)行顯示)。控制臺應(yīng)用程序向移動OS130發(fā)送請求以啟動應(yīng)用程序(即,請求移動OS130啟動其分組名稱作為執(zhí)行參數(shù)被提供給控制臺應(yīng)用程序的應(yīng)用程序)并且通過控制臺應(yīng)用程序顯示應(yīng)用程序的圖形幀。應(yīng)用程序可以是或者可以不是當(dāng)前正在移動OS130上運(yùn)行的。如果應(yīng)用程序當(dāng)前正在移動OS130上運(yùn)行,則可以將應(yīng)用程序的顯示從移動OS130移動到桌面OS用戶交互空間2202,或者同時將其顯示在移動設(shè)備的顯示器和用戶交互空間2202二者上。使用上述的交叉環(huán)境呈現(xiàn)和交叉環(huán)境用戶界面支持技術(shù)的任一種可以為應(yīng)用程序完成應(yīng)用程序圖形的顯示和用戶交互支持。圖24圖示了響應(yīng)于用戶在桌面OSGUI880的菜單欄2220上選擇與移動OS相關(guān)聯(lián)的菜單條目,移動OS130啟動應(yīng)用程序所遵循的處理流程2400。處理流程2400開始于塊2402,移動OS130從桌面OS160接收請求以啟動被編譯用于移動OS并且在移動OS的執(zhí)行環(huán)境內(nèi)加載的應(yīng)用程序,以供在桌面OS上進(jìn)行顯示。在塊2404,移動OS分配未使用的虛擬顯示器ID。例如,移動OS的圖形系統(tǒng)可以保存虛擬顯示器ID的列表并且將未使用的虛擬顯示器ID分配給第一應(yīng)用程序的處理。在塊2406,移動OS在移動OS內(nèi)啟動第一應(yīng)用程序(即,在移動OS上運(yùn)行)。在塊2408,移動OS130將第一應(yīng)用程序的刷新通知與虛擬顯示器相關(guān)聯(lián)。例如,移動OS的圖形服務(wù)器可以保存應(yīng)用程序的列表和它們相關(guān)聯(lián)的虛擬顯示器。在塊2410和2412,移動OS通過監(jiān)視第一應(yīng)用程序的應(yīng)用程序圖形并且在第一應(yīng)用程序的應(yīng)用程序圖形信息被更新時向桌面OS的控制臺應(yīng)用程序進(jìn)行通知,來保持第一應(yīng)用程序的圖形信息。塊2410和2412可以對應(yīng)于根據(jù)圖10、12、16和/或17的方法的保持交叉環(huán)境應(yīng)用程序的應(yīng)用程序圖形。出于例示和描述的目的,已經(jīng)提出了前面的描述。此外,該描述不是旨在將本發(fā)明的實(shí)施例限制為在此公開的形式。盡管以上已經(jīng)討論了多個示例性方面和實(shí)施例,但本領(lǐng)域技術(shù)人員將認(rèn)識到其某些變型、修改、置換、增加、和子組合??梢酝ㄟ^能夠執(zhí)行對應(yīng)功能的任何合適的手段來執(zhí)行上述的方法的各個操作。這些手段可以包括(多個)各種硬件和/或軟件組件和/或(多個)模塊,包括但不限于電路、專用集成電路(ASIC),或者處理器??梢杂杀辉O(shè)計(jì)用于執(zhí)行在此描述的功能的通用處理器、數(shù)字信號處理器(DSP)、ASIC、現(xiàn)場可編程門陣列信號(FPGA),或者其它可編程邏輯器件(PLD)、離散的門電路,或者晶體管邏輯電路、離散的硬件組件,或者其任何組合來實(shí)現(xiàn)或者執(zhí)行所述的各種例示性的邏輯塊、模塊,以及電路。通用的處理器可以是微處理器,但是作為替換,該處理器可以是任何市場上可得到的處理器、控制器、微控制器,或者狀態(tài)機(jī)。處理器還可以被實(shí)現(xiàn)為計(jì)算器件的組合,例如,DSP和處理器的組合,多個微處理器,一個或多個連同DSP核的處理器,或者任何其它這樣的配置。可以在硬件、由處理器執(zhí)行的軟件模塊,或者二者的組合中直接體現(xiàn)連同本公開描述的方法或者算法的步驟。軟件模塊可以駐留在任何形式的有形的存儲介質(zhì)中??梢允褂玫囊恍┐鎯橘|(zhì)的示例包括隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、閃存存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可移除盤、CD-ROM等等。存儲介質(zhì)可以耦接到處理器使得處理器可以從存儲介質(zhì)中讀取信息并且將信息寫入到存儲介質(zhì)。作為替換,存儲介質(zhì)可以被集成到處理器中。軟件模塊可以是單指令,或者許多指令,并且可以分布到若干不同的代碼段上、不同的程序中,以及多個存儲介質(zhì)上。在此公開的方法包括用于實(shí)現(xiàn)所描述的方法的一個或多個動作。方法和/或動作可以與另一互換,而不脫離權(quán)利要求的范圍。換言之,除非指定了動作的特定順序,可以修改特定動作的順序和/或用途,而不脫離權(quán)利要求的范圍??梢砸杂布④浖?、固件或者其任何組合來實(shí)現(xiàn)所描述的功能。如以軟件實(shí)現(xiàn),所述功能可以被存儲為在有形的計(jì)算機(jī)可讀介質(zhì)上的一個或多個指令。存儲介質(zhì)可以是能夠由計(jì)算機(jī)訪問的任何可用的有形介質(zhì)。通過示例而不是限制,這種計(jì)算機(jī)可讀的介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM、或者其它光盤存儲裝置、磁盤存儲裝置,或者其它磁盤存儲設(shè)備,或者任何其它的可以用于以指令或者數(shù)據(jù)結(jié)構(gòu)的形式承載或存儲期望的程序代碼并且可以通過計(jì)算機(jī)訪問的有形介質(zhì)。如在此使用的,磁盤和光盤包括致密盤(CD)、激光盤、光盤、數(shù)字多用途盤(DVD)、軟盤,和藍(lán)光○R盤,其中磁盤(disk)通常以磁方式重現(xiàn)數(shù)據(jù),而光盤(disc)以激光光學(xué)地重現(xiàn)數(shù)據(jù)。由此,計(jì)算機(jī)程序產(chǎn)品可以執(zhí)行在此提出的操作。例如,這種計(jì)算機(jī)程序產(chǎn)品可以是其上有形存儲(和/或編碼)了指令的計(jì)算機(jī)可讀的有形介質(zhì),指令可通過一個或多個處理器執(zhí)行以執(zhí)行在此描述的操作。計(jì)算機(jī)程序產(chǎn)品可以包括包裝材料。軟件或者指令還可以通過傳輸介質(zhì)進(jìn)行傳輸。例如,可以使用傳輸介質(zhì),諸如同軸電纜、光纜、雙絞線、數(shù)字用戶(DSL),或者諸如紅外、無線電或者微波之類的無線技術(shù),從網(wǎng)站、服務(wù)器,或者其它遠(yuǎn)程源傳輸軟件。此外,可以下載和/或以其它方式由用戶終端和/或基站(在可應(yīng)用時)獲得用于執(zhí)行在此描述的方法和技術(shù)的模塊和/或其它合適的部件。例如,這種設(shè)備可以耦接到服務(wù)器以便于傳遞用于執(zhí)行在此描述的方法的部件??商鎿Q地,可以經(jīng)由存儲部件(例如,RAM、ROM、物理存儲介質(zhì),諸如CD或者軟盤等等)來提供在此描述的各種方法,使得在將存儲部件耦接到或者提供給設(shè)備時,用戶終端和/或基站可以獲得各種方法。此外,可以利用向設(shè)備提供在此描述的方法和技術(shù)的任何其它合適的技術(shù)。其它示例和實(shí)現(xiàn)方式在本公開和所附的權(quán)利要求的范圍和精神內(nèi)。例如,由于軟件的特性,可以使用處理器、硬件、固件、硬連線,或者這些中任何組合執(zhí)行的軟件來實(shí)現(xiàn)上述的功能。實(shí)現(xiàn)功能的特征還可以位于各種位置,包括被分布使得在不同的物理位置處實(shí)現(xiàn)一部分功能。此外,如在此使用的,包括在權(quán)利要求中,如在以“至少一個”開始的一列條目中使用的“或”指示分離性的列表使得例如“A,B或者C中的至少一個”的列表意味著A或B或C或AB或AC或BC或ABC(即,A和B和C)。此外,用語“示例性”不是意味著所描述的示例是優(yōu)選的或者比其它示例更好??梢宰龀鰧υ诖嗣枋龅募夹g(shù)的各種改變、替換和更改,而不脫離由所附權(quán)利要求定義的教導(dǎo)的技術(shù)。此外,本公開和權(quán)利要求的范圍不限于上述的處理、機(jī)器、制造、物質(zhì)的合成、手段、方法,和動作的特定方面??梢岳门c在此描述的對應(yīng)方面執(zhí)行基本相同功能或者實(shí)現(xiàn)基本相同結(jié)果的目前存在的或者隨后開發(fā)的處理、機(jī)器、制造、物質(zhì)的合成、手段、方法或者動作。相應(yīng)地,所附的權(quán)利要求在它們的范圍內(nèi)包括這種處理、機(jī)器、制造、物質(zhì)的合成、手段、方法或者動作。當(dāng)前第1頁1 2 3