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

安全的操作系統(tǒng)切換的制作方法

文檔序號(hào):6454219閱讀:191來(lái)源:國(guó)知局
專利名稱:安全的操作系統(tǒng)切換的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)中的操作系統(tǒng)領(lǐng)域;更具體地,本發(fā)明涉及在計(jì)算機(jī)系統(tǒng)上使用的操作系統(tǒng)之間的切換。

背景技術(shù)
計(jì)算機(jī)系統(tǒng)由許多硬件組件組成,例如,CPU、RAM、盤片、鍵盤、顯示器、串口等。其他一些略微抽象,卻是OS的運(yùn)行同樣關(guān)心的,如中斷、PCI總線等。
當(dāng)系統(tǒng)中只有一個(gè)OS在運(yùn)行時(shí),該OS能夠看見、擁有并管理系統(tǒng)中的全部硬件組件。
近年來(lái),人們?cè)谙嗤挠?jì)算機(jī)上放置了多于一個(gè)的操作系統(tǒng)(OS)。在企業(yè)服務(wù)器領(lǐng)域,這樣的特征允許將一個(gè)服務(wù)器放在一個(gè)VM上,并帶來(lái)好得多的可管理性。在軟件開發(fā)中,這使開發(fā)者能夠快速測(cè)試出在各種OS以及相同OS的各種版本上的軟件可移植性。甚至在個(gè)人計(jì)算中,人們使用多個(gè)OS用于支持不同的應(yīng)用并用于測(cè)試新的OS版本,或甚至測(cè)試下載的軟件。在如智能電話之類的嵌入式設(shè)備上,人們可以為不同的目的而擁有兩個(gè)OS一個(gè)針對(duì)私人使用而一個(gè)針對(duì)公務(wù)。
對(duì)于多OS而言,最重要的技術(shù)是虛擬機(jī)(VM)技術(shù),該技術(shù)原先是由IBM為大型計(jì)算機(jī)而開發(fā)的。近來(lái),在VM技術(shù)中重新開始了新的關(guān)注,包括新產(chǎn)品和如VMW之類的研究項(xiàng)目。這些提供了良好的安全性和隔離。然而,典型地,這些確實(shí)都承受了性能的損失。一項(xiàng)研究表明,取決于應(yīng)用,VM技術(shù)可以將應(yīng)用減慢10%至80%。
此外,VM技術(shù)的實(shí)現(xiàn)和移植很復(fù)雜。例如為了很好地支持訪客(guest)系統(tǒng),需要以這樣或那樣的方式將所有下層設(shè)備虛擬化,以便由該訪客系統(tǒng)訪問(wèn)。隨著每天面世的新硬件列表的增長(zhǎng),這一限制可能局限了基于VM的方法的應(yīng)用性。
對(duì)于不需要多個(gè)OS同時(shí)運(yùn)行的應(yīng)用場(chǎng)景,現(xiàn)有的簡(jiǎn)單的解決方案沒有這些問(wèn)題。已經(jīng)有如來(lái)自GNU.org的GRUB以及來(lái)自PowerQuest(Symantec)的BootMagic之類的多引導(dǎo)解決方案。也有一些硬件交換和手動(dòng)選擇方案,這些方案讓人們選擇不同的引導(dǎo)設(shè)備并有效地使多個(gè)OS能夠運(yùn)行在相同的計(jì)算機(jī)上。不幸的是,緩慢而繁瑣的切換過(guò)程限制了其應(yīng)用范圍。
OS切換是另一種選擇方案,用于支持多OS。操作系統(tǒng)(OS)切換是一種使多個(gè)操作系統(tǒng)(OS)能夠在相同的計(jì)算機(jī)上同時(shí)運(yùn)行的技術(shù)。在一個(gè)實(shí)施例中,每個(gè)OS擁有一部分系統(tǒng)內(nèi)存和存儲(chǔ)器,并輪流運(yùn)行。在一個(gè)實(shí)施例中,通過(guò)修改功率管理模塊中的掛起/繼續(xù)功能來(lái)實(shí)現(xiàn)從一個(gè)OS到另一個(gè)的切換。
當(dāng)多個(gè)OS同時(shí)運(yùn)行時(shí),一個(gè)基本問(wèn)題是,如何將每個(gè)硬件組件導(dǎo)出至每個(gè)OS?,F(xiàn)有三種根本不同的技術(shù)獨(dú)占分割、時(shí)間復(fù)用以及抽象(abstraction)。在獨(dú)占分割中,硬件組件獨(dú)占地屬于一個(gè)OS,系統(tǒng)中的任何其他OS永遠(yuǎn)不能訪問(wèn)該硬件組件。例如,可以將存儲(chǔ)器劃分為兩半,兩個(gè)OS每個(gè)擁有一半。又例如,可以將以太網(wǎng)控制器分配給一個(gè)OS,而其他OS或者不能訪問(wèn)以太網(wǎng),或者通過(guò)與作為擁有者的OS通話來(lái)間接地訪問(wèn)以太網(wǎng)。在時(shí)間復(fù)用中,任何時(shí)候一個(gè)OS獨(dú)占地?fù)碛胁⒐芾碛布M件。然而,隨時(shí)間變化,擁有權(quán)可以從一個(gè)OS切換至另一個(gè)。典型地,CPU就是按照這種方式被共享的。在抽象中,OS不能看見并管理真實(shí)的硬件組件;代之以通過(guò)另一個(gè)軟件層來(lái)訪問(wèn)該硬件。虛擬化是抽象的一種特殊形式,在虛擬化中,抽象軟件的接口看上去像是傳統(tǒng)設(shè)備,而取代了典型的功能調(diào)用接口。
多OS解決方案可以使用上述技術(shù)的組合。即使對(duì)于相同的硬件組件,也可以組合不同的技術(shù)。例如,以太網(wǎng)控制器可以獨(dú)占地屬于一個(gè)OS。如果在該OS中的應(yīng)用實(shí)現(xiàn)了虛擬以太網(wǎng)控制器,并將其導(dǎo)出至其他OS,則其他OS可以通過(guò)該虛擬以太網(wǎng)控制器的抽象接口來(lái)間接地訪問(wèn)該以太網(wǎng)控制器。
基于VM的多OS解決方案采用抽象或虛擬化來(lái)管理大多數(shù)硬件組件。另一方面,多引導(dǎo)解決方案通過(guò)重新引導(dǎo)對(duì)整個(gè)系統(tǒng)使用時(shí)間復(fù)用。
OS切換技術(shù)的一個(gè)示例描述在2001年8月30日提出的美國(guó)專利申請(qǐng)No.20010018717A1中,其名稱為“Computer System,OperatingSystem Switching System,Operating System Mounting Method,Operating System Switching Method,Storage Medium,and ProgramTransmission Apparatus”,其中在未嘗試虛擬化任何硬件組件的情況下支持多個(gè)OS。
如美國(guó)專利申請(qǐng)No.20010018717A1中所描述的現(xiàn)有的OS切換解決方案不能在多個(gè)OS之間提供強(qiáng)大的隔離。該OS切換的一個(gè)問(wèn)題是缺少OS間的強(qiáng)大的隔離和保護(hù),表現(xiàn)為缺少存儲(chǔ)器隔離以及缺少?gòu)?qiáng)制控制轉(zhuǎn)移。更具體地,對(duì)于缺少存儲(chǔ)器隔離,所有OS共享相同的物理存儲(chǔ)器。當(dāng)OS內(nèi)核在特許(privilege)模式下運(yùn)行時(shí),它能夠修改任何存儲(chǔ)器內(nèi)容,包括屬于其他OS以及OS切換器的內(nèi)容。如果是這樣,或者由于錯(cuò)誤(bug)或者由于惡意病毒,其他OS以及甚至整個(gè)系統(tǒng)將崩潰。同樣,對(duì)于缺少?gòu)?qiáng)制控制轉(zhuǎn)移,上述實(shí)現(xiàn)方式依賴于當(dāng)前有效的OS放棄CPU并進(jìn)入OS切換器以便執(zhí)行OS切換。潛在地,錯(cuò)誤的或被惡意攻擊的OS可能永遠(yuǎn)不會(huì)進(jìn)入OS切換器。由此,其他OS被永遠(yuǎn)有效地掛起,除非將整個(gè)系統(tǒng)關(guān)閉并重新引導(dǎo)。因此,主要由于缺少存儲(chǔ)器隔離和強(qiáng)制控制轉(zhuǎn)移,這些OS切換的實(shí)現(xiàn)方式具有安全漏洞。


發(fā)明內(nèi)容
此處公開了用于安全的操作系統(tǒng)切換的方法和裝置。在一個(gè)實(shí)施例中,所述方法包括識(shí)別多個(gè)操作系統(tǒng)中下一個(gè)有效的第二操作系統(tǒng);一旦所述第二操作系統(tǒng)變?yōu)橛行?,使存?chǔ)器訪問(wèn)控制器能夠獨(dú)占訪問(wèn)針對(duì)所述第二操作系統(tǒng)的存儲(chǔ)器的一部分;以及使所述第二操作系統(tǒng)變?yōu)橛行А?br>


從以下給出的詳細(xì)描述,以及從本發(fā)明的各種實(shí)施例的附圖中,可以更全面的理解本發(fā)明,然而,這些詳細(xì)描述和附圖不應(yīng)被認(rèn)為是將本發(fā)明限制為具體實(shí)施例,而僅是為了解釋和理解。
圖1示意了用于執(zhí)行兩個(gè)OS之間的OS切換的OS切換偽代碼的一個(gè)實(shí)施例; 圖2示意了偽代碼,該偽代碼描述了當(dāng)在OS間切換時(shí)發(fā)生強(qiáng)制OS切換的一般場(chǎng)景; 圖3示意了圖2所示的強(qiáng)制OS切換; 圖4是用于使多個(gè)操作系統(tǒng)能夠在計(jì)算機(jī)上同時(shí)運(yùn)行的過(guò)程的實(shí)施例的流程圖; 圖5示意了用于利用延遲策略執(zhí)行強(qiáng)制OS切換的偽代碼; 圖6示意了圖5中描述的強(qiáng)制OS切換的場(chǎng)景; 圖7是示例性計(jì)算機(jī)系統(tǒng)的框圖; 圖8是存儲(chǔ)器訪問(wèn)控制器的一個(gè)實(shí)施例的框圖; 圖9是切換策略強(qiáng)制執(zhí)行裝置的一個(gè)實(shí)施例的框圖。

具體實(shí)施例方式 描述了安全的操作系統(tǒng)(OS)切換。在下層硬件的支持下,所公開的OS切換被實(shí)現(xiàn)為具有強(qiáng)大的隔離。在一個(gè)實(shí)施例中,安全的OS切換使用英國(guó)劍橋的ARM Holding公司的TrustZone技術(shù)以及加利福尼亞州圣克拉拉的因特爾公司的VT-x技術(shù)。
在以下的描述中,闡述了許多細(xì)節(jié),以提供本發(fā)明的更全面的描述。然而,本領(lǐng)域技術(shù)人員應(yīng)理解,沒有這些具體細(xì)節(jié),也可以實(shí)現(xiàn)本發(fā)明。在其他示例中,以框圖的形式來(lái)示出眾所周知的結(jié)構(gòu)和設(shè)備,而不詳細(xì)描述,以避免使本發(fā)明變得不清楚。
以對(duì)計(jì)算機(jī)存儲(chǔ)器中的數(shù)據(jù)比特的運(yùn)算的算法和符號(hào)表示的方式來(lái)呈現(xiàn)以下的詳細(xì)描述的一些部分。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用于向本領(lǐng)域其他技術(shù)人員最有效地傳遞其工作的實(shí)質(zhì)的方法。此處,一般地,算法被是導(dǎo)致所需結(jié)果的自我一致(self-consistent)的步驟序列。步驟是需要物理量的物理操作的步驟。通常,但不必要地,這些量采取能被存儲(chǔ)、轉(zhuǎn)移、組合、比較或操作的電或磁信號(hào)的形式。已經(jīng)證實(shí),有時(shí),尤其出于通用的目的,將這些信號(hào)稱為比特、值、元素、符號(hào)、字符、項(xiàng)、數(shù)或類似物是很方便的。
然而,應(yīng)記住,所有這些以及類似的詞都與合適的物理量相關(guān)聯(lián),并僅是對(duì)這些量施加的方便的標(biāo)簽。除非特別聲明,否則,如在以下的描述中顯而易見的,可以認(rèn)識(shí)到,在整個(gè)說(shuō)明書中,利用如“處理”或“計(jì)算(computing)”或“計(jì)算(calculating)”或“確定”或“顯示”之類的詞的討論,是指計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算設(shè)備的動(dòng)作和過(guò)程,所述動(dòng)作和過(guò)程將計(jì)算機(jī)系統(tǒng)的寄存器或存儲(chǔ)器中表示為物理(電子)量的數(shù)據(jù)操作并變換為類似地表示為計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或寄存器或其他這樣的信息存儲(chǔ)、傳送或顯示設(shè)備中的物理量的其他數(shù)據(jù)。
本發(fā)明也涉及用于執(zhí)行此處的操作的裝置。可以為所需目的特別構(gòu)造該裝置,或者,該裝置可以包括通用計(jì)算機(jī),由該計(jì)算機(jī)中存儲(chǔ)的計(jì)算機(jī)程序來(lái)選擇性的激活或重新配置該計(jì)算機(jī)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,例如但不限于任何種類的盤,包括軟盤、光盤、CD-ROM、以及磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、EPROM、EEPROM、磁或光卡、或適于存儲(chǔ)電子指令的任何種類的媒質(zhì),每個(gè)這樣的存儲(chǔ)介質(zhì)與計(jì)算機(jī)總線連接。
此處所呈現(xiàn)的算法和顯示不是固有地與任何特定計(jì)算機(jī)或其他裝置相關(guān)。根據(jù)此處的教導(dǎo),可以將各種通用系統(tǒng)與程序一起使用,或者,可以證實(shí),構(gòu)造更特殊的裝置來(lái)執(zhí)行所需的方法步驟是方便的。從以下描述中,各種這樣的系統(tǒng)的所需結(jié)構(gòu)將變得清楚。此外,本發(fā)明不是根據(jù)任何特定的變成語(yǔ)言來(lái)描述的??梢哉J(rèn)識(shí)到,可以使用各種變成語(yǔ)言來(lái)實(shí)現(xiàn)如此處所描述的本發(fā)明的教導(dǎo)。
機(jī)器可讀介質(zhì)包括用于以機(jī)器(例如計(jì)算機(jī))可讀的形式存儲(chǔ)或傳送信息的機(jī)制。例如,機(jī)器可讀介質(zhì)包括只讀存儲(chǔ)器(“ROM”);隨機(jī)訪問(wèn)存儲(chǔ)器(“RAM”);磁盤存儲(chǔ)媒質(zhì);光存儲(chǔ)媒質(zhì);閃存設(shè)備;點(diǎn)、光、聲或其他傳播信號(hào)的形式(例如載波、紅外信號(hào)、數(shù)字信號(hào)等)等。
安全的OS切換 為了執(zhí)行安全的OS切換,使用被稱為OS切換器的一件邏輯上獨(dú)立的軟件。在一個(gè)實(shí)施例中,在CPU執(zhí)行OS切換器代碼時(shí),該CPU處于切換器模式。否則,為了此處的目的,該CPU運(yùn)行在傳統(tǒng)模式下。
在一個(gè)實(shí)施例中,OS切換將多個(gè)計(jì)算機(jī)系統(tǒng)仿真為一個(gè),其中,在任何時(shí)候,其中只有一個(gè)是有效的,而其他被掛起。在OS切換過(guò)程中,由于OS內(nèi)核典型地未準(zhǔn)備處理硬件擁有權(quán)的突然丟失或CPU執(zhí)行控制的丟失,因此需要特別注意。對(duì)于獨(dú)占分割的資源,如果該設(shè)備沒有產(chǎn)生如中斷之類的異步事件,則典型地,軟件沒有觀察到OS切換的任何副作用。如果該設(shè)備產(chǎn)生異步事件,則軟件需要知道在關(guān)閉當(dāng)前OS時(shí)可能丟失這樣的事件。可選地,當(dāng)前OS可以在被關(guān)閉之前關(guān)閉該設(shè)備,使其在關(guān)閉OS時(shí)不產(chǎn)生任何同步事件。對(duì)于時(shí)間復(fù)用的資源,在OS切換過(guò)程中,多個(gè)OS訪問(wèn)時(shí)間復(fù)用的設(shè)備。在關(guān)閉當(dāng)前OS之前,強(qiáng)制保存該設(shè)備的狀態(tài),并在再次切換至原先的OS時(shí)恢復(fù)原先的狀態(tài)。當(dāng)然,如果該設(shè)備能夠產(chǎn)生異步事件,則OS需要知道在關(guān)閉當(dāng)前OS時(shí)可能丟失這樣的事件。因此,使用OS功率掛起和繼續(xù)(resume)功能。
原理上,有效OS在被關(guān)閉之前立即執(zhí)行掛起功能。下一個(gè)有效的OS執(zhí)行繼續(xù)功能來(lái)繼續(xù)其正常操作。在大多數(shù)現(xiàn)代OS中存在該掛起/繼續(xù)功能,以便計(jì)算機(jī)可以進(jìn)入掛起模式而不消耗任何功率。在特定的預(yù)配置事件中,系統(tǒng)可以快速地再次繼續(xù)其操作,典型地,在小于1秒的時(shí)間段之內(nèi)。
在一個(gè)實(shí)施例中,OS功率掛起功能包括以下操作由用戶或OS/BIOS事件啟動(dòng)系統(tǒng)掛起功能、被掛起的OS內(nèi)核保存并關(guān)閉各種子系統(tǒng)(例如過(guò)程、存儲(chǔ)器、定時(shí)器等)、被掛起的OS中的驅(qū)動(dòng)器保存并關(guān)閉硬件設(shè)備、以及OS或BIOS指示CPU和整個(gè)系統(tǒng)進(jìn)入掛起模式。在這種情況下,整個(gè)系統(tǒng)由當(dāng)前運(yùn)行的(有效)OS、所有時(shí)間復(fù)用的硬件資源以及屬于該當(dāng)前有效的OS的任何分割的硬件資源組成。作為OS功率繼續(xù)功能的一個(gè)實(shí)施例,執(zhí)行以下功能繼續(xù)的OS中的驅(qū)動(dòng)器恢復(fù)(restore)硬件、繼續(xù)的OS中的內(nèi)核恢復(fù)并繼續(xù)各種子系統(tǒng)(例如過(guò)程、存儲(chǔ)器、定時(shí)器等)的操作、以及整個(gè)系統(tǒng)繼續(xù)正常操作。
在一個(gè)實(shí)施例中,在OS和OS切換器之間分割系統(tǒng)存儲(chǔ)器。除了存儲(chǔ)器和存儲(chǔ)之外,其他所有硬件資源是時(shí)間復(fù)用的。當(dāng)前擁有所有時(shí)間復(fù)用資源(包括CPU)的OS此處被稱為有效OS或當(dāng)前有效OS。
強(qiáng)大的存儲(chǔ)器隔離 為了固定這些安全漏洞,使用特定的硬件能力。為了更強(qiáng)大的存儲(chǔ)器隔離,使用存儲(chǔ)器訪問(wèn)控制器,該存儲(chǔ)器訪問(wèn)控制器提供了在傳統(tǒng)模式期間禁用對(duì)特定存儲(chǔ)器區(qū)域的訪問(wèn)的能力。此外,在一個(gè)實(shí)施例中,僅當(dāng)CPU處于切換器模式時(shí)才發(fā)生對(duì)存儲(chǔ)器訪問(wèn)控制器的任何修改。否則,OS可以修改該控制器使其獲得對(duì)所有存儲(chǔ)器的訪問(wèn)。
使用這些能力,OS切換的實(shí)現(xiàn)方式的一個(gè)實(shí)施例如下。當(dāng)系統(tǒng)啟動(dòng)時(shí),CPU處于切換器模式,使其能夠設(shè)置針對(duì)任何存儲(chǔ)器區(qū)域的可訪問(wèn)性。每次CPU控制到達(dá)下一個(gè)有效OS時(shí),不論是第一次引導(dǎo)還是從之前的執(zhí)行繼續(xù),OS切換器設(shè)置該存儲(chǔ)器訪問(wèn)控制器,使得在傳統(tǒng)模式下只能訪問(wèn)屬于該下一個(gè)有效OS的存儲(chǔ)器區(qū)域。如果有必要,該OS切換器連續(xù)地監(jiān)控,以確保有效OS不訪問(wèn)不屬于它的存儲(chǔ)器區(qū)域。
圖1示意了用于執(zhí)行兩個(gè)OS之間的OS切換的OS切換偽代碼的一個(gè)實(shí)施例。參照?qǐng)D1,OS切換過(guò)程開始于OS#1中啟動(dòng)OS切換(1)。OS切換可以由用戶或OS事件啟動(dòng)。響應(yīng)于OS切換的啟動(dòng),OS#1中的內(nèi)核保存并關(guān)閉各種子系統(tǒng)(例如過(guò)程、存儲(chǔ)器、定時(shí)器等)(2)。OS#1中的驅(qū)動(dòng)器保存并關(guān)閉硬件設(shè)備(3)。此后,CPU退出OS#1并進(jìn)入OS切換器(4)。
OS切換器識(shí)別下一個(gè)OS,即OS#2,并執(zhí)行用于切換的整理(housekeeping)活動(dòng)(例如,記錄日志數(shù)據(jù)用于管理、報(bào)表或調(diào)試目的、額外的保存和存儲(chǔ)等)(5)。OS切換器設(shè)置存儲(chǔ)器訪問(wèn)控制器,使得在OS#2繼續(xù)之后,只能訪問(wèn)屬于該下一個(gè)有效OS的存儲(chǔ)器(6)。在一個(gè)實(shí)施例中,在OS#2繼續(xù)之后,OS切換器繼續(xù)監(jiān)控違反(violation)存儲(chǔ)器訪問(wèn)的情況。
接著,該OS切換器跳轉(zhuǎn)至OS#2中的系統(tǒng)繼續(xù)功能(7)。在執(zhí)行該系統(tǒng)繼續(xù)功能時(shí),OS#2中的驅(qū)動(dòng)器恢復(fù)硬件設(shè)備狀態(tài)(A),OS2中的內(nèi)核恢復(fù)并繼續(xù)各種子系統(tǒng)(例如過(guò)程、存儲(chǔ)器、定時(shí)器等)的操作(9)此后,OS#2繼續(xù)正常操作(10)。
在一個(gè)實(shí)施例中,切換器代碼本身也隱藏在傳統(tǒng)模式中。這是很重要的,因?yàn)榉駝t任何OS可以修改該OS切換器代碼以便放松對(duì)其自己的訪問(wèn)限制。
存儲(chǔ)器訪問(wèn)控制器執(zhí)行存儲(chǔ)器訪問(wèn)控制。圖8是存儲(chǔ)器訪問(wèn)控制器的一個(gè)實(shí)施例的框圖。參照?qǐng)D8,存儲(chǔ)器訪問(wèn)控制器801包括具有n行的表格802。表格802中的每一行與存儲(chǔ)器中的區(qū)域相對(duì)應(yīng)。例如,第一行與存儲(chǔ)器區(qū)域0相對(duì)應(yīng),第二行與存儲(chǔ)器區(qū)域1相對(duì)應(yīng),第三行與存儲(chǔ)器區(qū)域2相對(duì)應(yīng),等等,直到倒數(shù)第二行與存儲(chǔ)器區(qū)域n-2相對(duì)應(yīng),最后一行與存儲(chǔ)器區(qū)域n-1相對(duì)應(yīng)。所述行包括存儲(chǔ)器區(qū)域的地址,以及指示該存儲(chǔ)器區(qū)域的狀態(tài)的標(biāo)志803。在一個(gè)實(shí)施例中,狀態(tài)0指示了該區(qū)域當(dāng)前是被禁用的(當(dāng)前有效OS不可訪問(wèn)),而狀態(tài)1指示了該區(qū)域當(dāng)前是被允許的(有效OS可以訪問(wèn))。
在一個(gè)存儲(chǔ)器區(qū)域中,例如存儲(chǔ)器區(qū)域0是用于執(zhí)行存儲(chǔ)器控制器操作的存儲(chǔ)器訪問(wèn)控制代碼810。存儲(chǔ)器訪問(wèn)控制代碼810在OS切換器代碼811中,并且,在系統(tǒng)上執(zhí)行該代碼時(shí),基于OS切換器代碼811所指示的哪個(gè)OS將要有效以及哪個(gè)將要無(wú)效來(lái)設(shè)置標(biāo)志803。存儲(chǔ)器訪問(wèn)控制代碼810也接收存儲(chǔ)器訪問(wèn)違反信號(hào)850,以允許存儲(chǔ)器訪問(wèn)控制器處理存儲(chǔ)器訪問(wèn)的違反。
強(qiáng)制控制轉(zhuǎn)移 在一個(gè)實(shí)施例中,為了可靠地切換,要做出確定,確定當(dāng)前有效OS何時(shí)不能合作而允許OS切換發(fā)生。這可以繼續(xù)通過(guò)確定當(dāng)前有效OS不執(zhí)行掛起操作或在預(yù)定的時(shí)間段內(nèi)未完成掛起操作來(lái)識(shí)別。當(dāng)這種情況發(fā)生時(shí),執(zhí)行強(qiáng)制切換來(lái)關(guān)閉當(dāng)前有效OS。在一個(gè)實(shí)施例中,當(dāng)OS被強(qiáng)制關(guān)閉時(shí),它再也不能正常繼續(xù)。在這種情況下,如果該OS下一次需要運(yùn)行,則需要新的引導(dǎo)。
在一個(gè)實(shí)施例中,通過(guò)特定的外部事件來(lái)啟動(dòng)切換,例如但不限于按下切換按鈕或接收到特殊的到達(dá)的包。何時(shí)執(zhí)行強(qiáng)制切換是基于特定的策略。例如,一種策略可能如下在按下切換按鈕后預(yù)定的時(shí)間(例如2秒),如果還沒有發(fā)生切換,則執(zhí)行強(qiáng)制切換。另一種策略可能提供了專用的強(qiáng)制切換按鈕。
在一個(gè)實(shí)施例中,為了實(shí)現(xiàn)不同的策略,使用的不同的硬件支持。在一個(gè)實(shí)施例中,使用切換按鈕和時(shí)間來(lái)實(shí)現(xiàn)按下切換按鈕策略之后的2秒的延遲。在這種情況下,OS切換器訪問(wèn)切換按鈕和定時(shí)器,以確定是否強(qiáng)制執(zhí)行該策略。為了此處的目的,這些硬件資源被稱為用于強(qiáng)制切換的策略實(shí)現(xiàn)硬件。
在一個(gè)實(shí)施例中,為了在OS切換過(guò)程中執(zhí)行控制轉(zhuǎn)移,包括了系統(tǒng)中的硬件,使得由策略實(shí)現(xiàn)硬件產(chǎn)生的事件被路由至OS切換器,運(yùn)行在傳統(tǒng)模式下的OS不能改變策略實(shí)現(xiàn)硬件的狀態(tài)及其事件的路由。
在一個(gè)實(shí)施例中,OS切換器在系統(tǒng)啟動(dòng)過(guò)程中實(shí)現(xiàn)了強(qiáng)制切換策略,該OS切換器設(shè)置策略實(shí)現(xiàn)硬件的狀態(tài)并將其事件路由至該OS切換器自身。該OS切換器也檢測(cè)到OS切換的啟動(dòng),并決定是否應(yīng)執(zhí)行強(qiáng)制OS切換。如果是,則該OS切換器通過(guò)外部源獲得CPU控制,將當(dāng)前有效OS標(biāo)記為關(guān)閉,并切換至下一個(gè)OS。
圖2示意了偽代碼,該偽代碼描述了當(dāng)從OS#1切換至OS#2時(shí)發(fā)生強(qiáng)制OS切換的一般場(chǎng)景。參照?qǐng)D2,該強(qiáng)制OS切換過(guò)程開始于OS#1中啟動(dòng)OS切換(1)。OS切換可以由用戶或OS事件啟動(dòng)。在OS#1中啟動(dòng)OS切換之后,OS#1不能完成掛起過(guò)程,不能進(jìn)入OS切換器(2)。這發(fā)生之后,發(fā)生強(qiáng)制切換事件,控制回到OS切換器(3)。在一個(gè)實(shí)施例中,該強(qiáng)制切換事件可以是定時(shí)器到期。
響應(yīng)于該強(qiáng)制切換事件,該OS切換器認(rèn)識(shí)到發(fā)生了強(qiáng)制OS切換(4)。該OS切換器識(shí)別下一個(gè)OS,即OS#2,并執(zhí)行用于切換的整理活動(dòng)(例如將OS#1標(biāo)記為處于關(guān)閉狀態(tài))。該OS切換器跳轉(zhuǎn)至OS#2中的系統(tǒng)繼續(xù)功能(5)。在這個(gè)狀態(tài),OS#2中的驅(qū)動(dòng)器恢復(fù)硬件設(shè)備狀態(tài)(6),OS2中的內(nèi)核恢復(fù)并繼續(xù)各種子系統(tǒng)(例如過(guò)程、存儲(chǔ)器、定時(shí)器等)的操作(7)。此后,OS#2繼續(xù)正常操作(8)。
圖3示意了圖2所示的強(qiáng)制OS切換。在圖3中,圖2所示的每個(gè)操作被示為與OS切換器以及兩個(gè)OS,即OS#1和OS#2的交互。
切換策略強(qiáng)制執(zhí)行裝置控制切換策略的強(qiáng)制執(zhí)行。圖9是切換策略強(qiáng)制執(zhí)行裝置的一個(gè)實(shí)施例的框圖。參照?qǐng)D9,切換策略強(qiáng)制執(zhí)行硬件901-903包括分別包括狀態(tài)911-913。并產(chǎn)生中斷950。雖然只示出了3個(gè)切換策略強(qiáng)制執(zhí)行硬件的框,但是系統(tǒng)可以具有多于或少于3個(gè)這樣的硬件。事件路由控制器904將中斷950路由至切換策略強(qiáng)制執(zhí)行代碼922,在該系統(tǒng)上執(zhí)行切換策略強(qiáng)制執(zhí)行代碼922作為OS切換器921的部分。OS切換器位于存儲(chǔ)器區(qū)域905中,而有效OS916位于存儲(chǔ)器區(qū)域906中,存儲(chǔ)器區(qū)域906不同于存儲(chǔ)器區(qū)域905。
注意,切換策略強(qiáng)制執(zhí)行硬件901-903、事件路由控制器904和OS切換器921是有效OS906不能訪問(wèn)的對(duì)象,或者是有效OS906不能修改其狀態(tài)(即狀態(tài)911-913)的對(duì)象。
實(shí)現(xiàn)安全的OS切換 圖4是用于使多個(gè)操作系統(tǒng)能夠在計(jì)算機(jī)上同時(shí)運(yùn)行的過(guò)程的實(shí)施例的流程圖。這一過(guò)程是由處理邏輯來(lái)執(zhí)行的,該處理邏輯可以包括硬件(電路、專用邏輯等)、軟件(如運(yùn)行在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上的軟件)或其組合。
參照?qǐng)D4,該過(guò)程開始于一個(gè)有效的OS,且處理邏輯響應(yīng)于操作系統(tǒng)切換事件來(lái)啟動(dòng)操作系統(tǒng)切換(處理框401)。在一個(gè)實(shí)施例中,該OS切換事件是用戶事件。在一個(gè)實(shí)施例中,響應(yīng)于按下切換按鈕來(lái)產(chǎn)生該OS切換事件。在一個(gè)實(shí)施例中,該切換按鈕被映射為具有OS不能改變的狀態(tài)、或者OS不能阻止的一個(gè)或多個(gè)中斷的安全設(shè)備。在另一個(gè)實(shí)施例中,在定時(shí)器達(dá)到預(yù)定的時(shí)間之后產(chǎn)生該切換事件;響應(yīng)于按下切換按鈕來(lái)觸發(fā)該定時(shí)器的運(yùn)行。
在一個(gè)實(shí)施例中,響應(yīng)于操作系統(tǒng)切換事件來(lái)啟動(dòng)操作系統(tǒng)切換包括確定強(qiáng)制切換事件發(fā)生并執(zhí)行強(qiáng)制控制轉(zhuǎn)移。在一個(gè)實(shí)施例中,在當(dāng)前有效的操作系統(tǒng)不能變?yōu)闊o(wú)效以及不能允許一個(gè)操作系統(tǒng)變?yōu)橛行е蟀l(fā)生強(qiáng)制切換事件。
一旦啟動(dòng)了OS切換,處理邏輯識(shí)別下一個(gè)有效的OS(處理框402)。
在一個(gè)實(shí)施例中,響應(yīng)于切換事件,與當(dāng)前有效OS相關(guān)聯(lián)的處理邏輯執(zhí)行掛起操作(處理框403)。在一個(gè)實(shí)施例中,當(dāng)前OS通過(guò)保存與一個(gè)或更多子系統(tǒng)以及一個(gè)或更多硬件設(shè)備相關(guān)聯(lián)的狀態(tài)來(lái)執(zhí)行掛起操作。
在識(shí)別下一個(gè)有效的OS之后,一旦該OS變?yōu)橛行В幚磉壿嬍勾鎯?chǔ)器訪問(wèn)控制器(例如保護(hù)控制器)能夠獨(dú)占訪問(wèn)針對(duì)該下一個(gè)有效的OS的一部分存儲(chǔ)器(處理框404)。在一個(gè)實(shí)施例中,使存儲(chǔ)器訪問(wèn)控制器能夠獨(dú)占訪問(wèn)針對(duì)該下一個(gè)有效的OS的一部分存儲(chǔ)器包括將存儲(chǔ)器靜態(tài)分割為第二操作系統(tǒng)可訪問(wèn)的不安全存儲(chǔ)器以及第二操作系統(tǒng)不可訪問(wèn)的安全存儲(chǔ)器。在一個(gè)實(shí)施例中,該安全存儲(chǔ)器和不安全存儲(chǔ)器包括芯片上的存儲(chǔ)器的部分。
接下來(lái),處理邏輯使該OS變?yōu)橛行?處理框405)。在一個(gè)實(shí)施例中,使該第二操作系統(tǒng)變?yōu)橛行О▽?duì)新的有效OS執(zhí)行繼續(xù)操作,以使該新的有效OS繼續(xù)操作。在一個(gè)實(shí)施例中,下一個(gè)有效的OS的處理邏輯通過(guò)其一個(gè)或更多驅(qū)動(dòng)器恢復(fù)硬件設(shè)備狀態(tài)、其內(nèi)核恢復(fù)并繼續(xù)一個(gè)或更多子系統(tǒng)的操作來(lái)執(zhí)行繼續(xù)操作,接著繼續(xù)正常操作。在一個(gè)實(shí)施例中,該過(guò)程也包括接收從當(dāng)前有效OS切換至下一個(gè)有效的OS的指示,以及使當(dāng)前OS保存與當(dāng)前有效的操作系統(tǒng)相關(guān)聯(lián)的狀態(tài)。在一個(gè)實(shí)施例中,響應(yīng)于用戶動(dòng)作或操作系統(tǒng)事件來(lái)接收該指示。
在下一個(gè)有效的OS變?yōu)橛行е螅幚磉壿嫳O(jiān)控除了變?yōu)橛行У腛S之外的其他OS的違反存儲(chǔ)器訪問(wèn)的情況(處理框406)。
使用TrustZone來(lái)實(shí)現(xiàn)安全的OS切換 TrustZone是對(duì)ARMCPU架構(gòu)的擴(kuò)展,可以從英國(guó)劍橋的ARMHolding得到。TrustZone將CPU執(zhí)行分為安全模式和不安全模式。它將所有其他硬件資源分類為分割為安全資源或不安全資源。當(dāng)CPU在不安全模式下(通常稱為不安全界(world))執(zhí)行時(shí),它只能訪問(wèn)不安全硬件資源。當(dāng)CPU在安全模式下(通常成為安全界)執(zhí)行時(shí),它可以訪問(wèn)安全以及不安全的硬件資源。
此外,TrustZone可以將特定中斷安全地路由至安全環(huán)境中。
在一個(gè)實(shí)施例中,為了實(shí)現(xiàn)安全的OS切換,使用了來(lái)自TrustZone的以下特征 ●“NS”比特CPU狀態(tài)寄存器中的新比特,用于指示CPU是否運(yùn)行在不安全模式下(NS=1)。這與現(xiàn)有的特許模式、用戶模式以及幾個(gè)其他異常處理模式不相關(guān)(orthogonal)。
●監(jiān)控模式一種CPU模式,用于在安全執(zhí)行模式和不安全執(zhí)行模式之間切換CPU??梢酝ㄟ^(guò)新的指令(SMI)或特定的模式切換異常來(lái)進(jìn)入該模式。
●保護(hù)控制器一種可編程控制器,確定在不安全模式下能夠訪問(wèn)哪些外圍設(shè)備而不能訪問(wèn)哪些外圍設(shè)備。在一個(gè)實(shí)施例中,將該控制器所控制的全部外圍設(shè)備分為兩類安全的和不安全的。僅當(dāng)CPU處于安全模式下時(shí),才許可對(duì)安全設(shè)備的訪問(wèn)。
●中斷在TrustZone架構(gòu)中有兩種中斷控制器。一個(gè)用于從安全設(shè)備中路由中斷,一種用于從不安全設(shè)備中路由中斷。將該中斷方案與保護(hù)控制器一起使用,可以假定向安全環(huán)境傳送安全設(shè)備事件,不安全界不能改變?cè)撌录?br> 使用TrustZone來(lái)實(shí)現(xiàn)安全的OS切換 由于有多種方式來(lái)實(shí)現(xiàn)存儲(chǔ)器隔離和強(qiáng)制控制轉(zhuǎn)移,因此有許多方式來(lái)使用TrustZone以實(shí)現(xiàn)安全的OS切換。在以下的討論中,描述了多個(gè)用于實(shí)現(xiàn)安全的OS切換的方法。
由于安全的OS切換需要兩種不同的CPU模式,即切換器模式和傳統(tǒng)模式,因此,在一個(gè)實(shí)施例中,將該傳統(tǒng)模式映射為TrustZone中的不安全模式,在該模式下,限制了其存儲(chǔ)器訪問(wèn)和CPU控制。將該切換器模式映射為TrustZone中的安全模式。在另一個(gè)實(shí)施例中,可以在TrustZone中的新的監(jiān)控模式中實(shí)現(xiàn)該切換器代碼。TrustZone中的監(jiān)控模式能夠過(guò)濾中斷并將其分配給安全或不安全環(huán)境。在一個(gè)實(shí)施例中,切換器代碼在監(jiān)控模式中實(shí)現(xiàn),并且在切換器代碼較小時(shí)是一個(gè)有用的選擇。在又另一個(gè)實(shí)施例中,將切換器代碼分為兩部分性能關(guān)鍵部分被放入切換器模式(不安全環(huán)境),而大小大得多的性能非關(guān)鍵部分被放入安全環(huán)境中。
當(dāng)CPU運(yùn)行不安全執(zhí)行模式時(shí),它不能訪問(wèn)任何是安全設(shè)備的外圍設(shè)備,包括存儲(chǔ)器芯片。當(dāng)保護(hù)控制器控制存儲(chǔ)器芯片時(shí),可以將該存儲(chǔ)器芯片動(dòng)態(tài)地分類為安全設(shè)備或不安全設(shè)備。
例如,假定該系統(tǒng)具有3個(gè)存儲(chǔ)器芯片,這3個(gè)存儲(chǔ)器芯片被靜態(tài)分割,以使兩個(gè)OS每個(gè)使用一個(gè),而第三個(gè)用于OS切換器。TrustZone的保護(hù)控制器控制所有存儲(chǔ)器芯片。在OS切換過(guò)程中,在監(jiān)控模式或安全執(zhí)行模式下運(yùn)行的切換器代碼可以修改該保護(hù)控制器,使得只有屬于下一個(gè)有效OS的存儲(chǔ)器芯片是不安全存儲(chǔ)器設(shè)備,而將其他兩個(gè)存儲(chǔ)器芯片標(biāo)記為安全設(shè)備。當(dāng)繼續(xù)下一個(gè)有效OS時(shí),它只能訪問(wèn)被標(biāo)記為不安全設(shè)備的存儲(chǔ)器芯片,而不能訪問(wèn)被標(biāo)記為安全設(shè)備的其他兩個(gè)存儲(chǔ)器芯片。在一個(gè)實(shí)施例中,該保護(hù)控制器通過(guò)在寄存器中存儲(chǔ)比特來(lái)執(zhí)行這一操作,尋址硬件在運(yùn)行時(shí)將檢查該寄存器中的比特。
在一個(gè)實(shí)施例中,使用TrustZone知道的存儲(chǔ)器控制器(即使用TrustZone的保護(hù)控制器用于存儲(chǔ)器保護(hù)的存儲(chǔ)器控制器),可以將相同存儲(chǔ)器芯片的部分動(dòng)態(tài)地配置為安全的或不安全的。其基本操作類似于上述的場(chǎng)景,除了多個(gè)OS共享存儲(chǔ)器的部分以及TrustZone知道的存儲(chǔ)器控制器控制這些存儲(chǔ)器部分的安全屬性之外。在一個(gè)實(shí)施例中,TrustZone使用比特樣式(pattern)來(lái)指定特定的存儲(chǔ)器地址應(yīng)是安全的。
在一個(gè)實(shí)施例中,使用TrustZone中的安全中斷路由特征來(lái)實(shí)現(xiàn)強(qiáng)制OS切換。不同的強(qiáng)制OS切換策略需要不同的實(shí)現(xiàn)方式。
在一個(gè)實(shí)施例中,系統(tǒng)中包括了分離的強(qiáng)制OS切換按鈕。這樣的系統(tǒng)可以包括常規(guī)OS切換按鈕。當(dāng)用戶按下該常規(guī)OS切換按鈕,并且如果有效OS不能響應(yīng),則用戶按下該強(qiáng)制OS切換按鈕來(lái)啟動(dòng)強(qiáng)制OS切換。在這種情況下,該強(qiáng)制OS切換按鈕被映射為安全設(shè)備,使得OS不能改變其狀態(tài)或阻止其中斷。此外,通過(guò)安全中斷控制器來(lái)路由其中斷,并將其發(fā)送至OS切換器所運(yùn)行的安全環(huán)境。給定了這樣的配置,當(dāng)按下強(qiáng)制切換按鈕時(shí),保證發(fā)生切換器代碼內(nèi)對(duì)CPU的控制。該切換器可以接著繼續(xù)系統(tǒng)中的下一個(gè)有效OS。
在一個(gè)實(shí)施例中,也實(shí)現(xiàn)了復(fù)雜的強(qiáng)制OS切換策略。例如,可以使用新的策略,在按下切換按鈕2秒后,如果當(dāng)前有效OS不能主動(dòng)地進(jìn)入OS切換器,則該新策略啟動(dòng)強(qiáng)制OS切換。在這種情況下,OS切換按鈕被映射為安全設(shè)備并需要安全定時(shí)器。當(dāng)按下切換按鈕時(shí),切換器代碼開啟2秒定時(shí)器,并將該事件轉(zhuǎn)發(fā)至當(dāng)前OS。如果當(dāng)前有效OS在2秒內(nèi)進(jìn)入OS切換器,則取消該定時(shí)器,按正常繼續(xù)OS切換。如果當(dāng)前有效OS不能這樣做,則2秒定時(shí)器到期,CPU控制回到切換器代碼,該切換器代碼接著決定執(zhí)行強(qiáng)制OS切換。
圖5示意了用于執(zhí)行具有2秒延遲策略的強(qiáng)制OS切換的偽代碼。在這一特定情況下,在初始按下切換按鈕之后,OS#1在2秒內(nèi)不能進(jìn)入OS切換器。由此,定時(shí)器到期,OS切換器執(zhí)行向OS#2的強(qiáng)制切換。
參照?qǐng)D5,偽代碼開始于包括多個(gè)操作的啟動(dòng)過(guò)程。首先,將切換按鈕和一個(gè)專用定時(shí)器標(biāo)記為安全設(shè)備(1)。接下來(lái),將該切換按鈕和該專用定時(shí)器的中斷路由至該OS切換器(2)。此后,針對(duì)該強(qiáng)制切換場(chǎng)景設(shè)置了圖5的其余部分。
在圖5中的強(qiáng)制切換場(chǎng)景中,用戶按下切換按鈕來(lái)啟動(dòng)OS切換(1)。接下來(lái),將由切換按鈕產(chǎn)生的中斷路由至OS切換器,該OS切換器設(shè)置2秒定時(shí)器(2)。接下來(lái),該OS切換器接著將該中斷轉(zhuǎn)發(fā)至OS#1,OS#1是當(dāng)前有效OS(3)。注意,在(3)中,該OS切換器有許多方式來(lái)向有效OS轉(zhuǎn)發(fā)該中斷。在一個(gè)實(shí)施例中,該OS切換器通過(guò)該OS切換器與當(dāng)前有效OS之間的特殊的功能調(diào)用接口來(lái)轉(zhuǎn)發(fā)該中斷。在另一個(gè)實(shí)施例中,該切換器設(shè)置硬件狀態(tài),使得當(dāng)該OS切換器將CPU控制交回當(dāng)前有效OS時(shí),發(fā)生另一個(gè)中斷,而這個(gè)中斷被路由至有效OS,而不是路由至該OS切換器。
在該OS向當(dāng)前有效OS(OS#1)轉(zhuǎn)發(fā)該中斷之后,OS#1不能在2秒內(nèi)完成掛起過(guò)程(4)。接著該定時(shí)器到期,接著將該中斷路由至該OS切換器(5)。此時(shí),該OS切換器意識(shí)到這是一個(gè)強(qiáng)制OS切換的情形、標(biāo)識(shí)下一個(gè)有效OS(OS#2)并執(zhí)行用于切換的整理活動(dòng)(例如將OS#1標(biāo)記為處于關(guān)閉狀態(tài))(6)。
此后,該OS切換器跳轉(zhuǎn)至OS#2中的系統(tǒng)繼續(xù)功能(7),OS#2中的驅(qū)動(dòng)器恢復(fù)硬件狀態(tài)(8),OS 2中的內(nèi)核恢復(fù)并繼續(xù)各種子系統(tǒng)(例如過(guò)程、存儲(chǔ)器、定時(shí)器等)的操作(9)。接著,OS#2繼續(xù)正常操作 (10)。
圖6示意了圖5中描述的強(qiáng)制OS切換的場(chǎng)景。如圖所示,OS#1和OS#2被示為與OS切換器交互。在圖6中,在圓括號(hào)中示出了結(jié)合圖5所描述的每個(gè)操作,以實(shí)現(xiàn)具有2秒延遲策略以及TrustZone實(shí)現(xiàn)方式的強(qiáng)制OS切換。
使用Intel的VT-x來(lái)實(shí)現(xiàn)安全的OS切換 可以使用Intel的VT(虛擬化技術(shù))來(lái)實(shí)現(xiàn)安全的OS切換,即針對(duì)Intel IA-32的VT的指定版本被稱為VT-x。一般地,使用合適的虛擬機(jī)監(jiān)控(VMM)的實(shí)現(xiàn)方式,可以運(yùn)行與傳統(tǒng)的IA-32兼容的OS而無(wú)需任何修改。用于安全的OS切換的VT-x的一些特征如下 ●VMM根(root)和非根(non-root)操作在保持所有傳統(tǒng)特征的同時(shí),具有VT-x功能的CPU具有兩種不同的操作模式,被稱為根操作和非根操作。一般地,VMM運(yùn)行在根操作模式下,而訪客OS運(yùn)行在非根操作下。加入了各種指令以便于操作模式的轉(zhuǎn)移。此外,定義了許多配置條件,以自動(dòng)從非根操作轉(zhuǎn)移至根操作模式。
●異常位圖在一個(gè)實(shí)施例中,32比特的字段指示了訪客OS中導(dǎo)致被陷于根操作(即VMM)中的異常的種類。
●IO位圖地址8KB大小的存儲(chǔ)器區(qū)域,其每個(gè)比特與IO空間中的32字節(jié)區(qū)域相對(duì)應(yīng)。如果對(duì)應(yīng)比特被設(shè)為1而“激活I(lǐng)P圖”比特也是1,則訪問(wèn)該32字節(jié)IO區(qū)域?qū)?dǎo)致該訪客OS被陷于VMM中。
●存儲(chǔ)器管理為了確保訪客OS不能訪問(wèn)不屬于它的存儲(chǔ)器,VT-x引入了一系列特征來(lái)完成這一目標(biāo)。例如,CR3是保存頁(yè)面表的根的物理地址的寄存器。訪客OS改變CR3的任何嘗試將導(dǎo)致被陷于VMM。從那里,該VMM可以向該訪客OS提供影象(shadow)頁(yè)面表,VMM始終跟蹤并檢查對(duì)該影象頁(yè)面表的操作。
有許多可能的方法來(lái)在使用VT-x的OS切換中實(shí)現(xiàn)多個(gè)OS間的強(qiáng)大的安全性和隔離。在一個(gè)實(shí)施例中,將傳統(tǒng)模式映射為VT-x中的非根操作模式,而在根操作模式(特別是在環(huán)0)中實(shí)現(xiàn)切換器代碼。為了確保在傳統(tǒng)模式下OS的繼續(xù)運(yùn)行,在OS切換器中實(shí)現(xiàn)了特定的仿真,包括針對(duì)CPUID、MOV等的指令仿真。
對(duì)于基于分頁(yè)的操作系統(tǒng),為了防止對(duì)不屬于該OS的任何存儲(chǔ)器的訪問(wèn),使用影像頁(yè)面表機(jī)制。
當(dāng)OS首次通過(guò)設(shè)置CR3來(lái)設(shè)立頁(yè)面表或修改頁(yè)面表?xiàng)l目時(shí),它將被陷于根操作模式下,在該模式下,該OS切換器可以制作該頁(yè)面表的拷貝,該拷貝被稱為影象頁(yè)面表。驗(yàn)證所有的表?xiàng)l目以確保沒有頁(yè)面表?xiàng)l目映射到不屬于該OS的物理頁(yè)面。同樣,如果頁(yè)面表中包括這樣的頁(yè)面表,則在影象頁(yè)面表中,將該頁(yè)面表?xiàng)l目修改為只讀。在返回該OS之前,使用該影象頁(yè)面表來(lái)設(shè)置CR3。隨后,當(dāng)該OS試圖修改任何表?xiàng)l目時(shí),由于該頁(yè)面表區(qū)域被映射為只讀,因此將發(fā)生被陷于該OS切換器。該OS切換器可以確認(rèn)該修改有效,并向原始頁(yè)面表和影象頁(yè)面表傳播該改變。接著,OS切換器照常繼續(xù)執(zhí)行。通過(guò)這樣的對(duì)頁(yè)面表?xiàng)l目的持續(xù)的檢查和有效確認(rèn),該OS切換器確保了任何OS不能訪問(wèn)不屬于該OS的存儲(chǔ)器區(qū)域。
如上所述,強(qiáng)制控制轉(zhuǎn)移的關(guān)鍵是識(shí)別策略實(shí)現(xiàn)硬件。一旦識(shí)別,執(zhí)行操作以確保OS不能修改策略實(shí)現(xiàn)硬件,并確保向OS切換器安全地傳送其中斷。
在IA-32系統(tǒng)上,OS可以通過(guò)IO指令或映射到存儲(chǔ)器的IO操作來(lái)訪問(wèn)設(shè)備。如果通過(guò)IO指令來(lái)訪問(wèn)策略實(shí)現(xiàn)設(shè)備,則該OS切換器設(shè)置IO位圖地址,使得訪客OS不能讀取或?qū)懭隝O空間中的對(duì)應(yīng)區(qū)域。如果通過(guò)存儲(chǔ)器映射來(lái)訪問(wèn)設(shè)備,則與上述對(duì)存儲(chǔ)器隔離的討論類似,OS切換器進(jìn)行檢查,以確保策略實(shí)現(xiàn)設(shè)備不被映射到任何OS,使得這些OS不能訪問(wèn)這些設(shè)備。
通過(guò)將所有中斷路由至OS切換器,將該策略實(shí)現(xiàn)設(shè)備的中斷安全地傳送至該OS切換器。對(duì)于該OS切換器不關(guān)心的中斷,該OS切換器將其轉(zhuǎn)發(fā)至當(dāng)前有效OS。否則,該OS切換器正確地處理該中斷。
為了確保中斷傳送和設(shè)備訪問(wèn)的安全,也可以使用與保護(hù)該策略實(shí)現(xiàn)設(shè)備相同的方案來(lái)保護(hù)位于CPU和策略實(shí)現(xiàn)設(shè)備之間的任何中間設(shè)備不被訪客OS訪問(wèn)。
安全的獨(dú)占分割 在一個(gè)OS切換實(shí)施例中,所有硬件資源都被暴露給有效OS。一些是時(shí)間復(fù)用的硬件資源,而一些是分割后的硬件資源。部分分割(如存儲(chǔ)器劃分和獨(dú)占分割)需要來(lái)自O(shè)S的合作。使用如TrustZone和VT-x之類的新的硬件能力,這樣的分割成為可能。同樣可行的是其他硬件資源,如以太網(wǎng)控制器的強(qiáng)制分割。例如,如果以太網(wǎng)控制器獨(dú)占地屬于一個(gè)OS,則可以使用TrustZone中的保護(hù)控制器,或者使用VT-x的頁(yè)面條目有效確認(rèn)來(lái)控制對(duì)該以太網(wǎng)控制器的訪問(wèn),使得只有該所有者OS可以訪問(wèn)它。
計(jì)算機(jī)系統(tǒng)的示例 圖7是示例性計(jì)算機(jī)系統(tǒng)的框圖,該示例性計(jì)算機(jī)系統(tǒng)可以執(zhí)行此處描述的一個(gè)或更多操作。參照?qǐng)D7,計(jì)算機(jī)系統(tǒng)700可以包括示例性客戶端或服務(wù)器計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)700包括用于通信信息的通信機(jī)制或總線711,以及與總線711連接的、用于處理信息的處理器712。處理器712包括微處理器,但不限于微處理器,例如PentiumTM、PowerPCTM、AlphaTM等。
系統(tǒng)700還包括與總線711連接的、用于存儲(chǔ)處理器712要執(zhí)行的信息和指令的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM),或者其他動(dòng)態(tài)存儲(chǔ)設(shè)備704(被稱為主存儲(chǔ)器)。主存儲(chǔ)器704也可以用于存儲(chǔ)處理器712執(zhí)行指令期間的臨時(shí)變量或其他中間信息。
計(jì)算機(jī)系統(tǒng)700也包括與總線711連接的、用于存儲(chǔ)針對(duì)處理器712的信息和指令的只讀存儲(chǔ)器(ROM)和/或其他靜態(tài)存儲(chǔ)設(shè)備706,以及數(shù)據(jù)存儲(chǔ)設(shè)備707,如磁盤或光盤及其對(duì)應(yīng)盤片驅(qū)動(dòng)器。數(shù)據(jù)存儲(chǔ)設(shè)備707與總線711連接,用于存儲(chǔ)信息和指令。
計(jì)算機(jī)系統(tǒng)700可以進(jìn)一步與顯示設(shè)備721連接,如陰極射線管(CRT)或液晶顯示器(LCD),該顯示設(shè)備721與總線711連接,用于向計(jì)算機(jī)用戶顯示信息。包括字母數(shù)字和其他鍵的字母數(shù)字輸入設(shè)備722也可以與總線711連接,用于與處理器712通信信息和命令選擇。附加用戶輸入設(shè)備是光標(biāo)控制723,如鼠標(biāo)、跟蹤球、跟蹤板、觸針或光標(biāo)方向鍵,該光標(biāo)控制723與總線711連接,用于與處理器712通信方向信息和命令選擇,并用于控制顯示器721上的光標(biāo)運(yùn)動(dòng)。
另一種可以與總線711連接的設(shè)備是硬拷貝設(shè)備724,該設(shè)備可以用于在如紙張、膠片的介質(zhì)或類似種類媒質(zhì)上標(biāo)記信息。另一種可以與總線711連接的設(shè)備是有線/無(wú)線通信能力725,用于與電話或手持掌上設(shè)備通信。
注意,本發(fā)明中可以使用系統(tǒng)700的任何或全部組件及相關(guān)聯(lián)的硬件。然而,可以認(rèn)識(shí)到,該計(jì)算機(jī)系統(tǒng)的其他配置可以包括一些或全部這些設(shè)備。
在閱讀了以上的描述之后,毫無(wú)疑問(wèn),對(duì)于本領(lǐng)域普通技術(shù)人員而言,本發(fā)明的許多變換或修改是顯而易見的,但是,應(yīng)理解,以示意方式示出和描述的任何具體實(shí)施例不應(yīng)被認(rèn)為是限制。因此,對(duì)各個(gè)實(shí)施例的細(xì)節(jié)的引用不應(yīng)限制權(quán)利要求的范圍,權(quán)利要求自身僅引用了被認(rèn)為是本發(fā)明的本質(zhì)的那些特征。
權(quán)利要求
1.一種用于使多個(gè)操作系統(tǒng)能夠在計(jì)算機(jī)上同時(shí)運(yùn)行的方法,其中,所述多個(gè)操作系統(tǒng)中的第一操作系統(tǒng)是當(dāng)前有效的,所述方法包括
識(shí)別多個(gè)操作系統(tǒng)中下一個(gè)有效的第二操作系統(tǒng);
一旦所述第二操作系統(tǒng)變?yōu)橛行?,使存?chǔ)器訪問(wèn)控制器能夠獨(dú)占訪問(wèn)針對(duì)所述第二操作系統(tǒng)的存儲(chǔ)器的一部分;以及
使所述第二操作系統(tǒng)變?yōu)橛行А?br> 2.一種制造品,具有一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),在所述一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有指令,當(dāng)系統(tǒng)執(zhí)行所述指令時(shí),所述指令使所述系統(tǒng)執(zhí)行用于使多個(gè)操作系統(tǒng)能夠在計(jì)算機(jī)上同時(shí)運(yùn)行的方法,其中,所述多個(gè)操作系統(tǒng)中的第一操作系統(tǒng)是當(dāng)前有效的,所述方法包括
識(shí)別多個(gè)操作系統(tǒng)中下一個(gè)有效的第二操作系統(tǒng);
一旦所述第二操作系統(tǒng)變?yōu)橛行?,使存?chǔ)器訪問(wèn)控制器能夠獨(dú)占訪問(wèn)針對(duì)所述第二操作系統(tǒng)的存儲(chǔ)器的一部分;以及
使所述第二操作系統(tǒng)變?yōu)橛行А?br> 3.一種系統(tǒng),包括
CPU;
存儲(chǔ)器,用于存儲(chǔ)操作系統(tǒng)切換器,所述操作系統(tǒng)切換器具有存儲(chǔ)器訪問(wèn)控制器模塊,所述存儲(chǔ)器訪問(wèn)控制器模塊啟用和禁用所述多個(gè)操作系統(tǒng)對(duì)多個(gè)區(qū)域的訪問(wèn),其中,當(dāng)所述切換器使當(dāng)前有效的操作系統(tǒng)變?yōu)闊o(wú)效,并使一個(gè)操作系統(tǒng)變?yōu)橛行r(shí),在切換模式期間,所述存儲(chǔ)器訪問(wèn)控制器禁用對(duì)針對(duì)除所述一個(gè)操作系統(tǒng)之外的操作系統(tǒng)的多個(gè)存儲(chǔ)器區(qū)域的訪問(wèn)。
4.一種方法,包括
使用n OS切換器來(lái)執(zhí)行安全的操作系統(tǒng)切換,所述OS切換器維持OS之間的安全隔離,以防止一個(gè)OS讀取另一個(gè)OS的存儲(chǔ)器,并防止一個(gè)OS使另一個(gè)OS或系統(tǒng)崩潰。
全文摘要
此處公開了用于安全的操作系統(tǒng)切換的方法和裝置。在一個(gè)實(shí)施例中,所述方法包括識(shí)別多個(gè)操作系統(tǒng)中下一個(gè)有效的第二操作系統(tǒng);一旦所述第二操作系統(tǒng)變?yōu)橛行?,使存?chǔ)器訪問(wèn)控制器能夠獨(dú)占訪問(wèn)針對(duì)所述第二操作系統(tǒng)的存儲(chǔ)器的一部分;以及使所述第二操作系統(tǒng)變?yōu)橛行А?br> 文檔編號(hào)G06F9/50GK101401069SQ200780009133
公開日2009年4月1日 申請(qǐng)日期2007年3月16日 優(yōu)先權(quán)日2006年3月16日
發(fā)明者軍 孫, 棟 周 申請(qǐng)人:株式會(huì)社Ntt都科摩
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1