分案說明
本申請屬于申請日為2012年10月16日的中國發(fā)明專利申請201280061783.3的分案申請。
背景技術(shù):
本說明書涉及計算機(jī)安全。
計算機(jī)系統(tǒng)可能受到敵對軟件應(yīng)用或進(jìn)程(例如惡意軟件、病毒等)的危害。敵對軟件應(yīng)用可能促使操作系統(tǒng)內(nèi)核向由敵對軟件應(yīng)用指定的存儲器位置寫入數(shù)據(jù)。例如,敵對軟件應(yīng)用能夠利用與操作系統(tǒng)相關(guān)聯(lián)的缺陷和/或弱點(diǎn)并促使操作系統(tǒng)內(nèi)核修改與內(nèi)核相關(guān)聯(lián)的指令(例如,插入允許用戶或其他軟件避開安全措施或準(zhǔn)許用戶或軟件的不適當(dāng)訪問的后門)。作為另一示例,敵對軟件應(yīng)用能夠促使操作系統(tǒng)內(nèi)核修改存儲于中央處理單元(cpu)或操作系統(tǒng)所使用的各種數(shù)據(jù)結(jié)構(gòu)或表(例如,中斷描述符表、全局描述符表等)中的數(shù)據(jù)。另外,敵對軟件應(yīng)用能夠利用與操作系統(tǒng)相關(guān)聯(lián)的缺陷和/或弱點(diǎn)使用與cpu相關(guān)聯(lián)的命令來確定與cpu或操作系統(tǒng)相關(guān)聯(lián)的資源(例如中斷描述符表或全局描述符表)的位置。例如,敵對軟件應(yīng)用能夠使用sidt指令來促使cpu提供中斷描述符表的地址。
技術(shù)實(shí)現(xiàn)要素:
本說明書描述了涉及用于改善計算機(jī)安全的防御技術(shù)的技術(shù)。該系統(tǒng)能夠?qū)⒚枋龇?例如中斷描述符表或全局描述符表)初始化并將描述符表映射到不同的存儲器位置。能夠使描述符表的一個映射與讀寫許可相關(guān)聯(lián),并且能夠使描述符表的第二映射與只讀許可相關(guān)聯(lián)。系統(tǒng)能夠?qū)⒅蛔x描述符表(例如第二映射)的地址提供給cpu。當(dāng)cpu接收到用以返回描述符表的值的命令時,cpu能夠提供只讀描述符表的地址。當(dāng)操作系統(tǒng)內(nèi)核接收有效指令以更新描述符表(例如,來自可信進(jìn)程或來自操作系統(tǒng)的指令,與來自敵對軟件應(yīng)用的指令相反)時,操作系統(tǒng)內(nèi)核能夠訪問描述符表并更新描述符表的值。
一般地,能夠在包括以下動作的方法中體現(xiàn)在本說明書中描述的本主題的一個創(chuàng)新方面:將第一描述符表和描述符表的第二映射初始化,其中,描述符表的第一映射與第一許可水平相關(guān)聯(lián),并且其中描述符表的第二映射與不同于第一許可水平的第二許可水平相關(guān)聯(lián),并且其中,第一描述符表和第二描述符表與硬件處理器相關(guān)聯(lián)并被操作系統(tǒng)內(nèi)核初始化;響應(yīng)于描述符表地址請求,提供與第一描述符表相關(guān)聯(lián)的存儲器地址,其中,描述符表地址請求由軟件進(jìn)程提供;以及響應(yīng)于更新請求,更新第二描述符表。
能夠在包括以下動作的方法中體現(xiàn)包括在本說明書中描述的本主題的另一創(chuàng)新方面:將描述符表初始化,其中,該描述符表被操作系統(tǒng)內(nèi)核初始化并與硬件處理器相關(guān)聯(lián);將與描述符表相關(guān)聯(lián)的許可水平變成第一許可水平;以及響應(yīng)于更新請求,將與描述符表相關(guān)聯(lián)的許可水平變成第二許可水平,其中,第二許可水平大于第一許可水平;在描述符表與第二許可水平相關(guān)聯(lián)時更新描述符表,其中,該更新基于更新請求;以及在更新描述符表之后,將與描述符表相關(guān)聯(lián)的許可水平變成第一許可水平,其中,操作系統(tǒng)內(nèi)核改變與描述符表相關(guān)聯(lián)的許可水平。
能夠?qū)⒃诒菊f明書中描述的主題的特定實(shí)施例實(shí)現(xiàn)為實(shí)現(xiàn)以下優(yōu)點(diǎn)中的一個或多個。例如,能夠通過防止敵對軟件應(yīng)用或惡意軟件訪問或修改cpu和/或os內(nèi)核所使用的數(shù)據(jù)結(jié)構(gòu)(例如,中斷描述符表和全局描述符表)來增加網(wǎng)絡(luò)和計算機(jī)安全。另外,能夠更容易地調(diào)試操作系統(tǒng),因為能夠減少或防止描述符表的非有意的覆寫。
在下面的附圖和描述中闡述了在本說明書中描述的主題的一個或多個實(shí)施例的細(xì)節(jié)。根據(jù)描述、附圖和權(quán)利要求,主題的其他特征、方面以及優(yōu)點(diǎn)將變得顯而易見。
附圖說明
圖1圖示了用以改善計算機(jī)安全的示例性系統(tǒng)。
圖2是用于改善計算機(jī)安全的示例性過程的流程圖。
圖3是用于改善計算機(jī)安全的示例性過程的流程圖。
各種圖中的相同附圖標(biāo)記和命名指示相同的元件。
具體實(shí)施方式
圖1圖示了用于改善計算機(jī)安全的示例性系統(tǒng)100。
系統(tǒng)100包括cpu102、描述符表寄存器104、描述符表106、描述符表的第一映射107、別名描述符表108、存儲器圖(memorymap)110、操作系統(tǒng)內(nèi)核112和軟件進(jìn)程114。cpu102可以是各種類型的計算機(jī)處理器。例如,cpu102可以是x86處理器、x86兼容處理器或x86處理器的64位后代(例如,intelcore2或amdopteron)。可以使用其他cpu。
cpu102可以包括存儲關(guān)聯(lián)描述符表106的存儲器地址的描述符表寄存器104(“dt寄存器”)。例如,cpu102可以包括存儲中斷描述符表的存儲器地址的中斷描述符表寄存器。雖然圖1圖示了單個dt寄存器104,但cpu102能夠包括對應(yīng)于各種描述符表106的多個dt寄存器104。例如,除中斷描述符表寄存器之外,cpu102能夠包括存儲與全局描述符表相關(guān)聯(lián)的存儲器地址的全局描述符表寄存器。dt寄存器104能夠存儲物理存儲器地址或虛擬存儲器地址。
能夠由操作系統(tǒng)內(nèi)核112將存儲在dt寄存器104中的值編程。例如,在系統(tǒng)100的初始化(例如,啟動時間)期間,操作系統(tǒng)內(nèi)核112能夠存儲與別名描述符表108相關(guān)聯(lián)的存儲器地址(例如,虛擬存儲器地址)。在某些實(shí)施方式中,能夠在除初始化之外的時間將存儲在dt寄存器104中的值編程。
存儲器圖110可以是與cpu102相關(guān)聯(lián)的描述存儲器被如何組織的存儲器管理模塊(例如,虛擬存儲器圖)。例如,存儲器圖110能夠包括描述存儲器大小、為操作系統(tǒng)使用預(yù)留的存儲器區(qū)域和/或能夠被軟件進(jìn)程114使用或訪問的存儲器區(qū)域的信息。另外,能夠使用存儲器圖110來指定存儲器地址與只讀許可或讀寫許可相關(guān)聯(lián)。例如,操作系統(tǒng)內(nèi)核112能夠修改存儲器圖110以改變與描述符表106或別名描述符表108相關(guān)聯(lián)的許可。另外,存儲器圖110能夠被cpu102或與cpu102相關(guān)聯(lián)的存儲器管理器用來解釋到物理存儲器地址的邏輯/虛擬存儲器地址。
描述符表106能夠包括例如與各種軟件例程或數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的存儲器地址、存儲器段描述符、用于改變與cpu相關(guān)聯(lián)的特權(quán)水平的機(jī)制(例如,“調(diào)用門”)及其他數(shù)據(jù)。例如,描述符表106可以是能夠用來實(shí)現(xiàn)中斷矢量表的中斷描述符表。在某些實(shí)施方式中,中斷描述符表包括與中斷處理機(jī)(handler)相關(guān)聯(lián)的存儲器地址,該中斷處理機(jī)可以是隨著軟件進(jìn)程或例程被觸發(fā)而處理中斷(例如,硬件中斷、軟件中斷和/或處理器異常(共同地稱為“中斷”))的軟件進(jìn)程或例程。例如,中斷描述符表能夠?qū)⑴c中斷處理機(jī)(“to_int_handler”)相關(guān)聯(lián)的存儲器地址存儲在與定時器中斷相對應(yīng)的表內(nèi)的位置上。當(dāng)定時器中斷被觸發(fā)時,操作系統(tǒng)能夠訪問中斷描述符表并確定應(yīng)響應(yīng)于定時器中斷而執(zhí)行to_int_handler。
使用存儲器圖110,能夠使描述符表106與各種許可水平相關(guān)聯(lián)。例如,描述符表106可以具有防止描述符表106和存儲在描述符表106中的值被修改的只讀許可。另外,描述符表106可以具有允許描述符表106和存儲在描述符表106中的值被修改的讀寫許可。與描述符表106相關(guān)聯(lián)的許可水平能夠被操作系統(tǒng)內(nèi)核112修改。例如,操作系統(tǒng)內(nèi)核112能夠使用存儲器圖110來將描述符表106的許可從讀寫變成只讀。
描述符表106可以位于各種物理存儲器地址處。例如,描述符表106可以是由操作系統(tǒng)內(nèi)核112或cpu102在隨機(jī)存儲器地址處創(chuàng)建的。另外,可以在固定的存儲器地址處創(chuàng)建描述符表106。另外,可以由存儲器圖110(例如,映射描述符表107)將描述符表106從物理存儲器位置映射到虛擬存儲器位置。映射描述符表107能夠指回到描述符表106,并且包括在映射描述符表107中的值能夠反映包括在描述符表106中的值。例如,如果包括在描述符表106中的值改變,則映射描述符表107也被更新以反映已改變值。
能夠使用存儲器圖110(例如,別名描述符表108)將描述符表106映射到第二地址。例如,能夠?qū)⒚枋龇?06映射到指向與描述符表106相關(guān)聯(lián)的物理存儲器地址的第二虛擬地址。類似于映射描述符表107,包括在別名描述符表108中的值能夠反映包括在描述符表106(和映射描述符表107)中的值。
能夠使描述符表106、映射描述符表107和別名描述符表108與不同許可相關(guān)聯(lián)。例如,能夠使描述符表106和映射描述符表107與讀寫許可相關(guān)聯(lián),并且能夠使別名描述符表108與只讀許可相關(guān)聯(lián)。另外,與描述符表106、映射描述符表107和別名描述符表108相關(guān)聯(lián)的許可水平能夠被操作系統(tǒng)內(nèi)核112修改。例如,操作系統(tǒng)內(nèi)核112能夠?qū)⑴c別名描述符表108相關(guān)聯(lián)的許可水平設(shè)置成只讀,并且能夠?qū)⑴c描述符表106相關(guān)聯(lián)的許可水平設(shè)置成讀寫。別名描述符表108能夠被cpu和/或操作系統(tǒng)內(nèi)核112訪問。在某些實(shí)施方式中,系統(tǒng)100不包括映射描述符表107和/或別名描述符表108。
cpu102能夠包括促使其提供描述符表106的存儲器地址的指令。例如,cpu102能夠包括促使其返回存儲在dt寄存器104中的值的指令(例如,sdt指令)。在某些實(shí)施方式中,sdt指令可以是返回與中斷描述符表相關(guān)聯(lián)的存儲器地址的存儲中斷描述符表指令(sidt)或返回與全局描述符表相關(guān)聯(lián)的存儲器地址的存儲全局描述符表指令(sgdt)。該指令能夠被操作系統(tǒng)內(nèi)核112使用。軟件應(yīng)用或進(jìn)程114能夠利用操作系統(tǒng)中的缺陷或弱點(diǎn)并促使操作系統(tǒng)內(nèi)核112發(fā)布sdt指令。
操作系統(tǒng)內(nèi)核112可以是任何適當(dāng)類型的操作系統(tǒng)內(nèi)核。操作系統(tǒng)內(nèi)核112能夠管理cpu的資源和/或與系統(tǒng)100相關(guān)聯(lián)的其他硬件資源。操作系統(tǒng)內(nèi)核112能夠與在系統(tǒng)100上執(zhí)行的軟件進(jìn)程114相交互。例如,操作系統(tǒng)內(nèi)核112能夠從軟件進(jìn)程114接收指令并代表軟件進(jìn)程114與cpu102和/或與系統(tǒng)100相關(guān)聯(lián)的硬件資源相交互(例如,與數(shù)據(jù)端口或外圍設(shè)備交換數(shù)據(jù))。
軟件進(jìn)程114可以是與操作系統(tǒng)內(nèi)核112相交互的一個或多個軟件應(yīng)用或進(jìn)程。在某些實(shí)施方式中,軟件進(jìn)程114能夠促使cpu102提供與描述符表106相關(guān)聯(lián)的存儲器地址。例如,軟件進(jìn)程114使用sidt指令來促使cpu102返回存儲在dt寄存器104中的與中斷描述符表相關(guān)聯(lián)的值。
圖2是用于改善計算機(jī)安全的示例性過程200的流程圖。過程200通過創(chuàng)建描述符表并將其初始化開始(在202處)。例如,當(dāng)cpu102被初始化(例如,在啟動時間)時,操作系統(tǒng)內(nèi)核112或與操作系統(tǒng)內(nèi)核112相關(guān)聯(lián)的固件能夠創(chuàng)建描述符表106并將其初始化。固件或操作系統(tǒng)內(nèi)核112將描述符表106的值更新成包括與當(dāng)中斷被觸發(fā)時執(zhí)行的軟件例程(例如,“中斷處理機(jī)”)相關(guān)聯(lián)的存儲器位置。操作系統(tǒng)內(nèi)核112能夠?qū)⒚枋龇?06映射到第一虛擬存儲器地址(例如,映射描述符表107)。操作系統(tǒng)內(nèi)核112能夠創(chuàng)建被初始化的描述符表106(例如,別名描述符表108)的第二映射。操作系統(tǒng)內(nèi)核112能夠?qū)⒂成涿枋龇?07和別名描述符表108定位于不同的虛擬存儲器地址處。例如,操作系統(tǒng)內(nèi)核能夠使用存儲器圖110將映射描述符表107定位于第一虛擬存儲器地址處,并將別名描述符表108映射在不同于第一虛擬存儲器地址的第二虛擬存儲器地址處。在某些實(shí)施方式中,操作系統(tǒng)內(nèi)核112在隨機(jī)存儲器位置處創(chuàng)建映射描述符表107和別名描述符表108。在某些實(shí)施方式中,不包括且不使用映射描述符表107。
與描述符表相關(guān)聯(lián)的許可水平被更新(在203處)。例如,操作系統(tǒng)內(nèi)核112能夠?qū)⑴c別名描述符表108相關(guān)聯(lián)的許可水平設(shè)置成是只讀的,并且將與描述符表106和映射描述符表107相關(guān)聯(lián)的許可水平設(shè)置成是讀寫的。在某些實(shí)施方式中,操作系統(tǒng)內(nèi)核112使用存儲器圖110來設(shè)置與描述符表106、映射描述符表107和別名描述符表108相關(guān)聯(lián)的許可水平。
操作系統(tǒng)內(nèi)核更新dt寄存器(在204處)。例如,操作系統(tǒng)內(nèi)核112能夠更新dt寄存器104以存儲與別名描述符表108相關(guān)聯(lián)的存儲器地址(例如,與別名描述符表108相關(guān)聯(lián)的虛擬存儲器地址)。
過程100能夠通過接收用于返回與描述符表相關(guān)聯(lián)的存儲器地址的指令來繼續(xù)(在206處)。例如,cpu102能夠從操作系統(tǒng)內(nèi)核112或軟件應(yīng)用114接收sdt指令。在某些實(shí)施方式中,sdt指令是sidt指令或sgdt指令。
響應(yīng)于該指令,cpu返回存儲在dt寄存器中的存儲器地址(在208處)。例如,響應(yīng)于sdt指令,cpu102能夠提供與別名描述符表108相關(guān)聯(lián)的存儲器地址,其在204處被存儲在dt寄存器104中。雖然別名描述符表108的存儲器地址被cpu102返回,但敵對軟件應(yīng)用114不能利用此信息,因為別名描述符表108與只讀許可相關(guān)聯(lián)。如果敵對軟件應(yīng)用114嘗試使用在208處返回的別名描述符表108的存儲器地址來向描述符表106中寫入數(shù)據(jù),則操作系統(tǒng)內(nèi)核112或存儲器圖110生成錯誤(例如,許可錯誤),并防止敵對軟件應(yīng)用向描述符表106中寫入數(shù)據(jù)。因此,敵對軟件應(yīng)用不能修改描述符表106的值或內(nèi)容。
替換地,過程200能夠接收用于更新存儲在描述符表中的數(shù)據(jù)的指令(在210處)。例如,操作系統(tǒng)內(nèi)核112能夠接收應(yīng)更新描述符表106的指令。在某些實(shí)施方式中,操作系統(tǒng)內(nèi)核112能夠從操作系統(tǒng)功能(例如,硬件管理器)接收用以更新描述符表的指令。
響應(yīng)于該指令,操作系統(tǒng)內(nèi)核能夠更新描述符表(在212處)。例如,操作系統(tǒng)內(nèi)核112能夠訪問與讀寫許可相關(guān)聯(lián)的映射描述符表107,并更新與映射描述符表107中的特定條目相關(guān)聯(lián)的值。由于映射描述符表107是描述符表106的映射,所以包括在描述符表106和別名描述符表108中的值被更新。在某些實(shí)施方式中,操作系統(tǒng)內(nèi)核112訪問描述符表106并更新描述符表106中的值。
圖3是用于改善計算機(jī)安全的示例性過程300的流程圖。過程300通過將描述符表初始化而開始(在302處)。例如,操作系統(tǒng)內(nèi)核112能夠創(chuàng)建描述符表106(例如,中斷描述符表或全局描述符表)并將描述符表106初始化成包括適當(dāng)?shù)臄?shù)據(jù)值(例如,與中斷管理機(jī)相關(guān)聯(lián)的存儲器地址或與各種存儲器段相關(guān)聯(lián)的特性)。在某些實(shí)施方式中,操作系統(tǒng)112在啟動時間將描述符表106初始化。操作系統(tǒng)共內(nèi)核112能夠?qū)⑴c描述符表106相關(guān)聯(lián)的許可變成是只讀的。
操作系統(tǒng)內(nèi)核112能夠更新dt寄存器(在303處)。例如,操作系統(tǒng)內(nèi)核112能夠?qū)⑴c描述符表106相關(guān)聯(lián)的存儲器地址存儲在dt寄存器104中。
過程300能夠通過接收用于提供與描述符表相關(guān)聯(lián)的存儲器地址的指令來繼續(xù)(在304處)。例如,cpu102能夠從操作系統(tǒng)內(nèi)核112或軟件應(yīng)用114接收sdt指令。在某些實(shí)施方式中,sdt指令是sidt指令或sgdt指令。響應(yīng)于該指令,cpu返回存儲在dt寄存器中的存儲器地址(例如,描述符表106的存儲器地址)(在306)處。雖然描述符表106的存儲器地址被cpu102返回,但敵對軟件應(yīng)用114不能利用此信息,因為描述符表106與只讀許可相關(guān)聯(lián)。如果敵對軟件應(yīng)用114嘗試向描述符表106中寫入數(shù)據(jù),則操作系統(tǒng)內(nèi)核112或存儲器圖110生成許可錯誤。因此,敵對軟件應(yīng)用不能修改描述符表106的值或內(nèi)容。
替選地,過程300能夠接收用于更新存儲在描述符表中的數(shù)據(jù)的指令(在308處)。例如,操作系統(tǒng)內(nèi)核112能夠接收應(yīng)更新描述符表106的指令。在某些實(shí)施方式中,操作系統(tǒng)內(nèi)核112能夠從操作系統(tǒng)功能(例如,硬件管理器)接收指令。
響應(yīng)于該指令,操作系統(tǒng)系統(tǒng)能夠改變與描述符表相關(guān)聯(lián)的許可水平(在310處)。例如,操作系統(tǒng)內(nèi)核112能夠?qū)⑴c描述符表106相關(guān)聯(lián)的許可水平從只讀變成讀寫。
在與描述符表相關(guān)聯(lián)的許可水平已被更新之后,能夠更新描述符表(在312處)。例如,操作系統(tǒng)內(nèi)核112能夠更新與描述符表112中的特定條目相關(guān)聯(lián)的值。在描述符表被更新之后,能夠改變與描述符表相關(guān)聯(lián)的許可水平(在314處)。例如,在描述符表106已被更新成包括新值之后,操作系統(tǒng)內(nèi)核能夠?qū)⑴c描述符表相關(guān)聯(lián)的許可水平變成只讀的。
在本說明書中描述的主題和操作的實(shí)施例能夠用數(shù)字電子電路、或用計算機(jī)軟件、固件或硬件、包括在本說明書中公開的結(jié)構(gòu)及其結(jié)構(gòu)等效物或用其中的一個或多個的組合來實(shí)現(xiàn)。在本說明書中描述的主題的實(shí)施例能夠被實(shí)現(xiàn)為一個或多個計算機(jī)程序,即在計算機(jī)存儲介質(zhì)上編碼以便由數(shù)據(jù)處理設(shè)備執(zhí)行或控制其操作的計算機(jī)程序指令的一個或多個模塊。替選地或另外,能夠?qū)⒊绦蛑噶罹幋a在人工生成的傳播信號上,例如機(jī)器生成的電、光或電磁信號,其被生成為對信息進(jìn)行編碼以便向適當(dāng)?shù)慕邮赵O(shè)備傳輸以便由數(shù)據(jù)處理設(shè)備執(zhí)行。計算機(jī)存儲介質(zhì)可以是計算機(jī)可讀存儲器件、計算機(jī)可讀存儲基板、隨機(jī)或串行存取存儲器陣列或器件或其中的一個或多個的組合,或被包括在其中。此外,雖然計算機(jī)存儲介質(zhì)不是傳播信號,但計算機(jī)存儲介質(zhì)可以是在人工生成的傳播信號中編碼的計算機(jī)程序指令的源或目的地。計算機(jī)存儲介質(zhì)還可以是一個或多個單獨(dú)物理組件或介質(zhì)(例如,多個cd、盤或其他存儲設(shè)備)或被包括在其中。
能夠?qū)⒈菊f明書中描述的操作實(shí)現(xiàn)為由數(shù)據(jù)處理設(shè)備對存儲在一個或多個計算機(jī)可讀存儲器件上或從其他源接收到的數(shù)據(jù)執(zhí)行的操作。
術(shù)語“數(shù)據(jù)處理設(shè)備”涵蓋用于處理數(shù)據(jù)的大量設(shè)備、器件以及機(jī)器,舉例來說包括可編程處理器、計算機(jī)、片上系統(tǒng)或者前述中的多個或組合。該設(shè)備可以包括專用邏輯電路,例如,fpga(現(xiàn)場可編程門陣列)或asic(專用集成電路)。除硬件之外,該設(shè)備還可以包括為正在討論中的計算機(jī)程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如,組成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、跨平臺運(yùn)行環(huán)境、虛擬機(jī)或其中的一個或多個的組合的代碼。該設(shè)備和執(zhí)行環(huán)境能夠?qū)崿F(xiàn)各種不同的計算模型基礎(chǔ)設(shè)施,諸如web服務(wù)、分布式計算和網(wǎng)格計算基礎(chǔ)設(shè)施。
能夠用任何形式的編程語言來編寫計算機(jī)程序(也稱為程序、軟件、軟件應(yīng)用、腳本或代碼),包括編譯或解釋語言、聲明或過程語言,并且其能夠以任何形式來部署,包括作為獨(dú)立程序或作為模塊、組件、子程序、對象或適合于在計算環(huán)境中使用的其他單元。計算機(jī)程序可以但不需要對應(yīng)于文件系統(tǒng)中的文件。能夠?qū)⒊绦虼鎯υ诒3制渌绦蚧驍?shù)據(jù)的文件的一部分(例如存儲在標(biāo)記語言文檔中的一個或多個腳本)中、專用于正在討論中的程序的單個文件中或者在多個協(xié)調(diào)文件(例如存儲一個或多個模塊、子程序或代碼部分的文件)中。能夠?qū)⒂嬎銠C(jī)程序部署成在一個計算機(jī)上或在位于一個地點(diǎn)處或跨多個地點(diǎn)分布并被通信網(wǎng)絡(luò)互連的多個計算機(jī)上執(zhí)行。
在本說明書中所述的過程和邏輯流程能夠由一個或多個可編程處理器來執(zhí)行,其執(zhí)行一個或多個計算機(jī)程序以通過對輸入數(shù)據(jù)進(jìn)行操作并生成輸出來執(zhí)行動作。該過程和邏輯流程還能夠由專用邏輯電路來執(zhí)行,或者還能夠?qū)⑺鲅b置實(shí)現(xiàn)為專用邏輯電路,例如fpga(現(xiàn)場可編程門陣列)或asic(專用集成電路)。
適合于執(zhí)行計算機(jī)程序的處理器舉例來說包括通用和專用兩種微處理器以及任何種類的數(shù)字計算機(jī)的任何一個或多個處理器。一般地,處理器將從只讀存儲器或隨機(jī)存取存儲器或兩者接收指令和數(shù)據(jù)。計算機(jī)的必需元件是用于根據(jù)指令執(zhí)行動作的處理器和用于存儲指令和數(shù)據(jù)的一個或多個存儲器件。一般地,計算機(jī)還將包括用于存儲數(shù)據(jù)的一個或多個大容量存儲器件,或者被操作地耦合到該一個或多個大容量存儲器件以從其接收數(shù)據(jù)或向其傳輸數(shù)據(jù)或兩者,大容量存儲器件例如磁盤、磁光盤或光盤。然而,計算機(jī)不需要具有此類設(shè)備。此外,能夠?qū)⒂嬎銠C(jī)嵌入另一設(shè)備中,例如移動電話、個人數(shù)字助理(pda)、移動音頻或視頻播放器、游戲控制臺、全球定位系統(tǒng)(gps)接收機(jī)或便攜式存儲設(shè)備,例如通用串行總線(usb)閃速驅(qū)動,僅舉幾個例子。適合于存儲計算機(jī)程序指令和數(shù)據(jù)的設(shè)備包括所有形式的非易失性存儲器、介質(zhì)和存儲器件,舉例來說,包括半導(dǎo)體存儲器件,例如eprom、eeprom以及閃速存儲器件;磁盤,例如內(nèi)部硬盤或可移動磁盤;磁光盤;以及cd-rom和dvd-rom磁盤。能夠用專用邏輯電路來補(bǔ)充處理器和存儲器或?qū)⑻幚砥骱痛鎯ζ鹘Y(jié)合在其中。
為了提供與用戶的交互,能夠在計算機(jī)上實(shí)現(xiàn)在本說明書中描述的主題的實(shí)施例,該計算機(jī)具有用于向用戶顯示信息的顯示設(shè)備,例如crt(陰極射線管)、或lcd(液晶顯示器)監(jiān)視器,以及鍵盤和指示設(shè)備,例如鼠標(biāo)或軌跡球,用戶能夠用其向計算機(jī)提供輸入。也能夠使用其他種類的設(shè)備來提供與用戶的交互;例如,提供給用戶的反饋能夠是任何形式的感知反饋,例如視覺反饋、聽覺反饋或觸覺反饋;并且能夠以任何形式來接收來自用戶的輸入,包括聲學(xué)、語音或觸覺輸入。另外,計算機(jī)能夠通過向用戶所使用的設(shè)備發(fā)送文檔和從其接收文檔來與用戶相交互;例如,通過響應(yīng)于從web瀏覽器接收到的請求而在用戶的客戶端設(shè)備上將網(wǎng)頁發(fā)送到web瀏覽器。
在本說明書中描述的主題的實(shí)施例能夠在計算系統(tǒng)中實(shí)現(xiàn),其包括后端組件,例如作為數(shù)據(jù)服務(wù)器,或者其包括中間件組件,例如應(yīng)用服務(wù)器,或者其包括前端組件,例如具有用戶能夠通過其與在本說明書中描述的主題的實(shí)施方式相交互的圖形用戶接口或web瀏覽器的客戶端計算機(jī),或者一個或多個此類后端、中間件或前端組件的任何組合。能夠用例如通信網(wǎng)絡(luò)的任何形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信來將系統(tǒng)的組件互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“l(fā)an”)和廣域網(wǎng)(“wan”)、互聯(lián)網(wǎng)(例如,因特網(wǎng))以及端對端網(wǎng)絡(luò)(例如,自組端對端網(wǎng)絡(luò))。
能夠?qū)⒁粋€或多個計算機(jī)的系統(tǒng)配置成借助于使在操作中促使系統(tǒng)執(zhí)行動作的軟件、固件、硬件或其組合被安裝于系統(tǒng)上來執(zhí)行特定操作或動作。能夠?qū)⒁粋€或多個計算機(jī)程序配置成借助于包括當(dāng)被數(shù)據(jù)處理設(shè)備執(zhí)行時促使該設(shè)備執(zhí)行動作的指令來執(zhí)行特定操作或動作。
計算系統(tǒng)能夠包括客戶端和服務(wù)器。客戶端和服務(wù)器一般地相互遠(yuǎn)離且通常通過通信網(wǎng)絡(luò)相交互。客戶端和服務(wù)器的關(guān)系借助于在相應(yīng)計算機(jī)上運(yùn)行且相互之間具有客戶端-服務(wù)器關(guān)系的計算機(jī)程序而產(chǎn)生。在某些實(shí)施例中,服務(wù)器向客戶端設(shè)備發(fā)送數(shù)據(jù)(例如,html頁面)(例如,出于向與客戶端設(shè)備相交互的用戶顯示數(shù)據(jù)并從該用戶接收用戶輸入的目的)。能夠在服務(wù)器處從客戶端設(shè)備接收在客戶端設(shè)備處生成的數(shù)據(jù)(例如,用戶交互的結(jié)果)。
雖然本說明書包含許多特定實(shí)現(xiàn)細(xì)節(jié),但不應(yīng)將這些理解為對任何發(fā)明的范圍或?qū)梢蟊Wo(hù)的范圍的限制,而是作為對于特定發(fā)明的特定實(shí)施例而言特定的特征的描述。在本說明書中在單獨(dú)實(shí)施例的背景下描述的某些特征還能夠在單個實(shí)施例中以組合方式實(shí)現(xiàn)。相反地,在單個實(shí)施例的背景下描述的各種特征還能夠單獨(dú)地或以任何適當(dāng)?shù)淖咏M合的方式在多個實(shí)施例中實(shí)現(xiàn)。
此外,雖然上文已將特征描述為以某些組合的方式起作用且甚至最初要求這樣,但在某些情況下可從該組合去除來自要求保護(hù)的組合的一個或多個特征,并且要求保護(hù)的組合可針對子組合或子組合的變體。
類似地,雖然在圖中按照特定順序描述了操作,但不應(yīng)將這理解為要求按照所示的特定順序或相繼順序來執(zhí)行此類操作,或者執(zhí)行所有所示操作,才能實(shí)現(xiàn)期望的結(jié)果。在某些情況下,多任務(wù)和并行處理可能是有利的。此外,不應(yīng)將上述實(shí)施例中的各種系統(tǒng)組件的分離理解為在所有實(shí)施例例中要求此類分離,并且應(yīng)理解的是一般地能夠?qū)⑺龀绦蚪M件和系統(tǒng)一起集成在單個軟件產(chǎn)品中或封裝到多個軟件產(chǎn)品中。
因此,已描述了主題的特定實(shí)施例。其他實(shí)施例在以下權(quán)利要求的范圍內(nèi)。在某些情況下,在權(quán)利要求中記載的動作能夠按照不同的順序來執(zhí)行且仍實(shí)現(xiàn)期望的結(jié)果。另外,在附圖中描述的過程不一定要求所示的特定順序或相繼順序才能實(shí)現(xiàn)期望的結(jié)果。在某些實(shí)施方式中,多任務(wù)和并行處理可能是有利的。