虛擬計算機系統、虛擬計算機控制方法、虛擬計算機控制程序及半導體集成電路的製作方法
2023-12-12 12:51:52 2
專利名稱:虛擬計算機系統、虛擬計算機控制方法、虛擬計算機控制程序及半導體集成電路的製作方法
技術領域:
本發明涉及虛擬計算機系統,尤其涉及從虛擬計算機向存儲區域的訪問的控制技術。
背景技術:
以往,作為虛擬計算機系統,已知有對多個虛擬計算機進行執行控制的系統。在這樣的虛擬計算機系統中,作為提高硬體資源的利用效率的技術,有根據虛擬計算機系統的處理負荷而動態地控制虛擬計算機的生成和結束的技術。例如,在專利文獻I中,公開了通過將母虛擬計算機分叉(fork)而生成子虛擬計 算機的技術,在專利文獻2中,公開了如下技術基於來自在虛擬計算機上執行的應用程式的請求,將該虛擬計算機複製(clone、克隆)化,從而生成子虛擬計算機。在先技術文獻專利文獻專利文獻I :特開2004-133894號公報專利文獻2 :特開2008-165795號公報發明的概要發明所要解決的課題但是,在虛擬計算機系統中,在成為執行對象的應用程式中,有時同時存在已認證不含有惡意軟體(malware)的應用程式(以下稱為「已認證應用程式」)和未認證不含有惡意軟體的應用程式(以下稱為「未認證應用程式」)。這種情況下,在未認證應用程式中含有惡意軟體時,通過執行該惡意軟體,已認證應用程式可能被攻擊。作為已認證應用程式被攻擊的情況的例子,例如有如下情況已認證應用程式或數據被篡改;或者已認證應用程式被以不恰當的方法執行,系統的管理者權限被剝奪,結果計算機系統被非法地奪取,應該對外部保密的信息、例如系統所保存的收費內容、個人信息、密鑰等被讀取。在以往的動態地生成虛擬計算機的虛擬計算機系統中,在執行新的應用程式的情況下,在不存在用於執行該應用程式的虛擬計算機時等,基於母虛擬計算機來生成新的子虛擬計算機,使該子虛擬計算機執行該應用程式。這種情況下,從母虛擬計算機生成的子虛擬計算機具有與母虛擬計算機相同的功能。因此,在成為母虛擬計算機的執行對象的應用程式中含有已認證應用程式的情況下,即使是為了執行未認證應用程式而生成的子虛擬計算機,在成為執行對象的應用程式中也含有已認證應用程式。因此,在以往的虛擬計算機系統中,在子虛擬計算機執行的未認證應用程式中含有惡意軟體的情況下,已認證應用程式可能被該惡意軟體攻擊。
發明內容
在此,本發明是鑑於以上問題而做出的,其目的在於,提供一種虛擬計算機系統,即使在成為虛擬計算機的執行對象的應用程式中同時存在已認證應用程式和未認證應用程式,也能夠防止由於執行未認證應用程式所包含的惡意軟體而非法執行軟體,該軟體的非法執行包括系統的奪取或數據的盜用、以及成為篡改的原因的對已認證應用程式的攻擊等。解決課題所採用的手段
為了解決上述問題,本發明的虛擬計算機系統的特徵在於,具備存儲裝置;處理器,與該存儲裝置連接;以及管理器(hypervisor,管理程序、超級管理器、虛擬機管理器),在該處理器上執行,使該處理器進行多個虛擬計算機的執行控制;該虛擬計算機系統具備訪問控制部,對從虛擬計算機向所述存儲裝置的存儲區域的訪問進行控制;所述存儲裝置包括容納第I種程序的第I存儲區域和容納第2種程序的第2存儲區域;所述管理器包括啟動請求受理部,用於從虛擬計算機受理第I種程序或第2種程序的啟動請求;以及虛擬計算機生成部,在由所述處理器執行的所述啟動請求受理部受理了第I種程序的啟動請求時,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在受理了第2種程序的啟動請求時,生成用於執行該第2種程序的虛擬計算機,並將該生成的虛擬計算機作為第2種虛擬計算機來管理;所述訪問控制部以如下方式進行所述訪問的控制禁止從由所述處理器執行的所述虛擬計算機生成部作為所述第I種虛擬計算機來管理的虛擬計算機向所述第2存儲區域的訪問。發明效果根據具備上述構成的本發明的虛擬計算機系統,將未認證應用程式作為第I種程序容納在第I存儲區域中,將已認證應用程式作為第2種程序容納在第2存儲區域中,由此,執行未認證應用程式的虛擬計算機無法訪問已認證應用程式。因此,在成為虛擬計算機的執行對象的應用程式中,即使同時存在已認證應用程式和未認證應用程式,也能夠防止由於執行未認證應用程式所包含的惡意軟體而非法執行軟體,該軟體的非法執行包括系統的奪取或數據的盜用、以及成為篡改的原因的對已認證應用程式的攻擊等。
圖I是表示虛擬計算機系統100的主要的硬體構成的框圖。圖2是表示處理器101所具有的動作模式的動作模式圖。圖3是表示存儲器保護表的數據構造的數據構造圖。圖4是表示存儲器保護信息的數據構造的數據構造圖。圖5是表示存儲器102的存儲區域的劃分的存儲區域圖。圖6是表示在處理器101上成為執行對象的程序模塊的框圖。圖7是應用組管理表700的數據構造圖。圖8是虛擬計算機管理表800的數據構造圖。圖9是虛擬計算機狀態表900的數據構造圖。
圖10是訪問許可信息1000的數據構造。圖11是表示存儲器102的存儲區域的劃分的存儲區域圖。圖12是虛擬計算機切換處理的流程圖。圖13是存儲器訪問處理的流程圖。圖14是應用程式執行處理的流程圖。圖15是表示虛擬計算機系統1500的主要的硬體構成的框圖。圖16是表示在處理器101上成為執行對象的程序模塊的框圖。
圖17是表示在處理器101上成為執行對象的程序模塊的框圖。圖18是變形例中的虛擬計算機系統1800的概略構成圖。
具體實施例方式以下,作為本發明的虛擬計算機系統的一個實施方式,說明如下的虛擬計算機系統,該虛擬計算機系統具備處理器,該處理器具有執行應用程式的用戶模式和比用戶模式高級的管理員(supervisor)模式這2個程序執行模式,由以處理器的管理員模式執行的管理器對以處理器的管理員模式執行的多個作業系統進行分時執行控制。該虛擬計算機系統除了處理器之外,還具備存儲器保護單元,該存儲器保護單元進行從虛擬計算機向存儲器的存儲區域的訪問控制。並且,由處理器執行的管理器和存儲器保護單元協同動作,由此,對於各個虛擬計算機,將向存儲器的存儲區域的訪問分別控制為禁止向規定的區域的訪問。因此,由該虛擬計算機系統執行的各個虛擬計算機無法訪問被禁止訪問的區域所容納的程序、數據等。以下,參照
本實施方式I的虛擬計算機系統的構成。圖I是表示虛擬計算機系統100的主要的硬體構成的框圖。如該圖所示,虛擬計算機系統100作為硬體是計算機裝置,由集成電路110、輸入裝置131、輸出裝置132構成。集成電路110是將處理器101、存儲器102、高速緩衝存儲器105、MMU (MemoryManagement Unit :存儲器管理單兀)106、存儲器保護單兀107、計時器108、DMAC (DirectMemory Access Controller :直接存儲器訪問控制器)109、內部總線120、第I接口 121、第2接口 122、第3接口 123集成而得到的半導體集成電路,與輸入裝置131、輸出裝置132、外部的集成電路等連接。並且,存儲器102由ROM (Read Only Memory) 103和RAM (RandomAccess Memory) 104 構成。處理器101與高速緩衝存儲器105和MMU106連接,通過執行存儲在R0M103或RAM104中的程序,對R0M103、RAM104、高速緩衝存儲器105、MMU106、存儲器保護單元107、計時器108、輸入裝置131、輸出裝置132進行控制,實現各種功能。圖2是表示處理器101所具備的動作模式的動作模式圖。如該圖所示,處理器101具有執行應用程式(圖中的任務A231、任務K232、任務L233等)的用戶模式230和執行作業系統(圖中的第IOS (Operating System) 221、第20S222、第30S223等)及管理器的特權模式(以下稱為「管理員模式」)220。以用戶模式230執行的應用程式被以管理員模式220執行的作業系統分時執行控制,以管理員模式220執行的作業系統被同樣以管理員模式220執行的管理器分時執行控制。再次回到圖1,繼續說明虛擬計算機系統100的構成。R0M103與存儲器保護單元107連接,存儲有規定處理器101的動作的程序和處理器101所利用的數據。RAM104與存儲器保護單元107連接,存儲有規定處理器101的動作的程序和處理器101所利用的數據。高速緩衝存儲器105與處理器101、MMU106、內部總線120連接,由處理器101利 用。MMU106與處理器101、高速緩衝存儲器105、內部總線120連接,具有用於指定存儲器102的物理存儲區域的地址的物理地址與用於指定處理器101所利用的邏輯存儲區域的地址的邏輯地址的變換功能。存儲器保護單元107與存儲器102及內部總線120連接,具有在內部存儲存儲器保護表和存儲器保護信息的功能、以及參照存儲的存儲器保護表和存儲器保護信息而對從內部總線120的總線主控器(master)(在此為處理器101、DMAC109)向存儲器102的存儲區域的訪問進行控制的功能。圖3是表示由存儲器保護單元107存儲的存儲器保護表300的數據構造的數據構造圖。如該圖所示,存儲器保護表300通過將區域ID310、開始地址320、尺寸330建立對應而構成。區域ID310是用於識別存儲器102的存儲區域中的規定的存儲區域的識別符。開始地址320是通過對應的區域ID310識別的規定的存儲區域的開始地址。尺寸330以兆字節為單位來表示通過對應的區域ID310識別的規定的存儲區域的尺寸。根據存儲器保護表300,例如區域ID310為「I」的規定的存儲區域表示開始地址為 「0x8000_0000」、尺寸為 2MB (Mega Byte)的存儲區域。圖4是表示由存儲器保護單元107存儲的存儲器保護信息400的數據構造的數據構造圖。如該圖所示,存儲器保護信息400通過將區域ID410和訪問信息420建立對應而構成。區域ID410與區域ID310同樣,是用於識別存儲器102的存儲區域中的規定的存儲區域的識別符。訪問信息420是表示對通過對應的區域ID410識別的規定的存儲區域進行的訪問的限制的信息,是如下4個信息中的某一個信息(I)表示既可以讀出也可以寫入的意思的信息(以下稱為「R/W」)、(2)表示可以讀出但不可以寫入的意思的信息(以下稱為「R0」)、
(3)表示不可以讀出但可以寫入的意思的信息(以下稱為「W0」)、(4)表示既不可以讀出也不可以寫入的意思的信息(以下稱為「NA」)。根據該存儲器保護信息400,例如區域ID410為「I」的規定的區域表示既不可以讀出也不可以寫入,區域ID410為「2」的規定的區域表示既可以讀出也可以寫入,區域ID410為「3」的規定的區域表示可以讀出但不可以寫入,區域ID410為「4」的規定的區域表示既不可以讀出也不可以寫入。圖5是表示由存儲器保護單元107劃分為多個規定的區域而進行向存儲器102的存儲區域的訪問的控制的、存儲器102的存儲區域圖。如該圖所示,通過由存儲器保護單元107參照存儲器保護表,存儲器102的存儲區域被劃分為區域ID310為「I」的區域A501、區域ID310為「2」的區域B502、區域ID310為「3」的區域C503、區域ID310為「4」的區域D504等。另外,關於存儲器保護單元107所進行的向存儲器102的存儲區域的訪問控制動 作的更詳細內容,在後面的的項目的部分中使用流程圖進行說明。再次回到圖1,繼續說明虛擬計算機系統100的構成。計時器108與內部總線120連接,由處理器101控制。DMAC109與內部總線120連接,具有不經由處理器101而進行與第I接ロ 121連接的輸入裝置131、與第2接ロ 122連接的輸出裝置132及與第3接ロ 123連接的外部集成電路等和存儲器102之間的數據轉發的功能。內部總線120與MMU106、高速緩衝存儲器105、存儲器保護單元107、計時器108、第I接ロ 121、第2接ロ 122、第3接ロ 123、DMAC109連接,具有傳達這些連接的電路間的信號的功能。第I接ロ 121、第2接ロ 122、第3接ロ 123分別與內部總線120連接,分別具有中繼內部總線120與輸入裝置131之間的信號的交換的功能、中繼內部總線120與輸出裝置132之間的信號的交換的功能、中繼與外部的集成電路等之間的信號的交換的功能。輸入裝置131包括鍵盤、滑鼠、攝像機、傳感器等,與第I接ロ 121連接,由處理器101控制,具有如下功能通過鍵盤、滑鼠、攝像機、傳感器等生成與用戶操作等對應的數據,井向處理器101發送表示發生了用戶操作等的通知以及生成的數據。輸出裝置132包括顯示器、揚聲器等,與第2接ロ 122連接,由處理器101控制,具有使用顯示器、揚聲器等顯示並輸出字符串、圖像、聲音等的功能。上述虛擬計算機系統100通過由處理器101執行存儲在R0M103、RAM104中的程序,實現各種功能。圖6是表示在某時刻t0在處理器101上成為執行對象的程序模塊(以下簡稱為「模塊」)的框圖。在該圖中,模塊群600是在處理器101中成為執行對象的模塊的集合,模塊群600所包含的各模塊的對應的程序容納在存儲器102的存儲區域中。任務1A611、任務2A612、任務3A613、任務2B614、任務3C615分別是以處理器101的用戶模式執行的任務。0S1A621、0S1B622、0S1C623分別是在處理器101的管理員模式下執行的多任務對
應作業系統。
管理器630是以處理器101的管理員模式執行的管理器。在虛擬計算機系統100中,應用程式被以管理員模式執行的多任務對應作業系統進行執行控制,並以用戶模式執行。此外,作業系統被管理器進行執行控制,並以管理員模式執行。應用程式通過調用預先準備的作業系統調用例程,能夠對作業系統委託規定的處理。此外,作業系統通過調用預先準備的管理器調用例程,能夠對管理器委託規定的處理。此外,由管理器對在虛擬計算機系統的執行時產生的例外或從外部裝置產生的中斷進行處理,井根據需要對虛擬計算機上的作業系統重新發布。0S1A621對任務1A611、任務2A612、任務3A613進行執行控制,使由0S1A621、任務1A611、任務2A612、任務3A613構成的系統作為第I虛擬計算機601發揮功能。0S1B622對任務2B614進行執行控制,使由0S1B622、任務2B614構成的系統作為 第2虛擬計算機602發揮功能。0S1C623對任務3C615進行執行控制,使由0S1C623、任務3C615構成的系統作為第3虛擬計算機603發揮功能。在此,第2虛擬計算機602是以第I虛擬計算機601為母虛擬計算機、通過分叉方式生成的子虛擬計算機,第3虛擬計算機603是以第I虛擬計算機601為母虛擬計算機、通過分叉方式生成的子虛擬計算機。關於分叉方式的虛擬計算機的生成將在後面說明。管理器630在內部包含VM(Virtual Machine :虛擬機、虛擬計算機)管理表保持部640、VM執行控制部650、VM存儲器管理部660這3個模塊,VM執行控制部650還包含VM啟動部651、VM執行部652、VM結束部653、請求受理部654這4個模塊,VM存儲器管理部還包含保護設定信息保持部661、保護設定部662、C0W (Copy On Write :寫時複製)處理部663這3個模塊。VM管理表保持部640具有存儲預先決定的應用組管理表、預先決定的虛擬計算機管理表、由VM執行部652生成的虛擬計算機狀態表的功能。圖7是表示由VM管理表保持部640存儲的應用組管理表700的數據構造的數據構造圖。如該圖所示,應用組管理表700將應用組ID710和應用程式名720建立對應而構成。應用程式名720是應用程式的名稱,用於確定應用程式。應用組ID710是用於識別由對應的應用程式名720確定的應用程式所屬的應用程式組的識別符。根據該應用組管理表700,例如記事簿、計算器、終端設定等名稱的應用程式屬於應用組ID為「I」的應用程式組,DTV (Digital Television)應用等名稱的應用程式屬於應用組ID為「2」的應用程式組。圖8是表示由VM管理表保持部640存儲的虛擬計算機管理表800的數據構造的數據構造圖。如該圖所示,虛擬計算機管理表800通過將VMID810和應用組ID820建立對應而構成。應用組ID820是與應用組ID710同樣的識別符。
VMID810是用於識別用來執行屬於通過對應的應用組ID820識別的應用程式組的應用程式的虛擬計算機的識別符。根據該虛擬計算機管理表800,例如以VMID810「1」識別的虛擬計算機是用於執行屬於以應用組ID820 「I」確定的應用程式組的應用程式和屬於以「4」確定的應用程式組的應用程式的虛擬計算機。圖9是表示由VM管理表保持部640存儲的虛擬計算機狀態表900的數據構造的數據構造圖。如該圖所示,虛擬計算機狀態表900將VMID910和執行狀態920建立對應而構成。VMID910是用於識別虛擬計算機的識別符。執行狀態920是表示通過對應的VMID910識別的虛擬計算機的執行狀態的信息,是如下3個信息中的某個信息(I)表示虛擬計算機被啟動而成為分時執行處理的對象、處 於能夠進行新的任務處理的狀態的意思的信息(以下稱為「執行中」)、(2)表示虛擬計算機未被啟動的狀態的意思的信息(以下稱為「未啟動」)、(3)表示虛擬計算機雖然被啟動而成為分時執行處理的對象、但是用於使該虛擬計算機結束的結束處理為執行中、無法進行新的任務處理的狀態的意思的信息(以下稱為「結束處理中」)。在此,用於使虛擬計算機結束的結束處理是指,為了執行該虛擬計算機,將由管理器和虛擬計算機自身確保的存儲區域釋放的處理。再次回到圖6,繼續說明在處理器101上成為執行對象的模塊。請求受理部654具有從執行中的虛擬計算機的作業系統受理新的應用程式的啟動請求、並將受理了啟動請求的意思的信號發送給VM啟動部651的功能。VM啟動部651具有以下3個功能。功能I :為了執行新的應用程式,基於成為母虛擬機的虛擬計算機,通過分叉方式生成新的子虛擬計算機。在此,分叉方式的虛擬計算機的生成是指,以對成為母虛擬機的虛擬計算機分配的全部存儲區域和對新生成的虛擬計算機分配的全部存儲區域一一對應的方式,將對成為母虛擬機的虛擬計算機分配的存儲區域映射到新生成的虛擬計算機的存儲區域,從而生成新的虛擬計算機。另外,新生成虛擬計算機後,成為母虛擬機的虛擬計算機的存儲區域和新生成的虛擬計算機的存儲區域,由COW處理部663以寫時複製(copy on write)方式進行管理。由該COW處理部663進行的存儲區域的基於寫時複製方式的管理的詳細情況在後面說明。功能2 :為了執行新的應用程式而生成新的子虛擬計算機的情況下,參照存儲在VM管理表保持部640中的應用組管理表700和虛擬計算機管理表800,對該新的虛擬計算機賦予作為用於識別該新的子虛擬計算機的識別符的VMID,將存儲在VM管理表保持部640中的虛擬計算機狀態表900更新,以使與賦予的VMID建立了對應的執行狀態920成為「執行中」。功能3 :通過將處理器101初始化,在VM啟動部651被啟動的情況下,生成作為其他所有虛擬計算機的母虛擬機的虛擬計算機,並將用於識別生成的虛擬計算機的VMID設為 「O,,。VM執行部652具有使用計時器108對多個虛擬計算機以分時執行控制方式進行執行控制的功能。VM結束部653具有從虛擬計算機受理使該虛擬計算機結束的請求、即結束請求的功能;以及在受理了結束請求的情況下,對成為對象的虛擬計算機執行前述的結束處理而使該虛擬計算機結束的功能。保護設定信息保持部661具有存儲訪問許可信息的功能。圖10是表示由保護設定信息保持部661存儲的訪問許可信息1000的數據構造的數據構造圖。如該圖所示,訪問許可信息1000通過將區域ID1010、VMID1020、訪問信息(圖中的NA、R/W、RO等)建立對應而構成。
該訪問許可信息1000由預先決定的原始訪問信息的部分(與區域ID1010為I 6對應的部分)和由COW處理部663對預先決定的原始訪問信息追加的部分(與區域ID1010為I 6以外的區域ID1010對應的部分)構成。區域ID1010與區域ID310同樣,是用於識別存儲器102的存儲區域中的規定的存儲區域的識別符。VMID1020與VMID910同樣,是用於識別虛擬計算機的識別符。訪問信息是表示關於對應的VMID1020識別的虛擬計算機的對由對應的區域ID1010識別的規定的存儲區域進行的訪問的限制的信息,與訪問信息420同樣,是R/W、R0、W)、NA這4個信息中的某I個信息。根據該訪問許可信息1000,例如對於以VMID1020為「 I」識別的虛擬計算機,區域ID1010為「I」的規定的區域既不可以讀出也不可以寫入,區域ID1010為「2」的規定的區域可以讀出但不可以寫入,區域ID1010為「3」的規定的區域可以讀出但不可以寫入,區域ID1010為「4」的規定的區域既不可以讀出也不可以寫入。保護設定部662具有以下2個功能。功能I :在切換由VM執行部652執行的虛擬計算機的情況下,從由保護設定信息保持部661存儲的訪問許可信息1000中,讀出與成為切換目標的虛擬計算機的VMID1020有關的、分別與區域ID1010建立了對應的訪問信息,生成存儲器保護信息400 (參照圖4),利用生成的存儲器保護信息400來更新存儲器保護單元107所存儲的存儲器保護信息400。功能2 :在COW處理部663更新由保護設定信息保持部661存儲的訪問許可信息1000的情況下,從由保護設定信息保持部661存儲的訪問許可信息1000中,讀出與當前執行中的虛擬計算機的VMID有關的、分別與區域ID1010建立了對應的訪問信息,生成存儲器保護信息400,並利用生成的存儲器保護信息400來更新存儲器保護單元107所存儲的存儲器保護信息400。COff處理部663具有以下2個功能。功能I :對從虛擬計算機向存儲區域的訪問進行基於寫時複製方式的訪問管理。在此,基於寫時複製方式的訪問管理是指如下的訪問管理方法對於母虛擬計算機的存儲區域和子虛擬計算機的存儲區域,不能由任一虛擬計算機改寫的頁被雙方的虛擬計算機共用,而對於能夠由某個虛擬計算機改寫的頁,將母虛擬計算機利用的頁和子虛擬計算機利用的頁分配到相互不同的存儲區域而利用。功能2 :通過進行基於寫時複製方式的訪問管理,對虛擬計算機分配新的存儲區域的情況下,將保護設定信息保持部661所保持的訪問許可信息1000更新。這時,以如下方式進行訪問許可信息1000的更新對於與新分配的存儲區域對應的區域ID1010,與用於識別成為對象的虛擬計算機的VMID1020對應的訪問信息為R/W,與用於識別成為對象的虛擬計算機以外的所有虛擬計算機的VMID1020對應的訪問信息為NA。另外,成為對象的虛擬計算機是執行未認證應用程式的虛擬計算機的情況下,為了從執行母虛擬計算機或認證應用程式的虛擬計算機監視該虛擬計算機及未認證應用程式的執行,也可以將新分配的存儲器區域的訪問信息設為RO或R/W。在此,回到圖6,對第2虛擬計算機602和第3虛擬計算機603的說明進行補充。第2虛擬計算機602是為了執行任務2B614,而由VM啟動部651以第I虛擬計算機601為母虛擬計算機通過分叉方式生成的虛擬計算機。 此外,第3虛擬計算機603是為了執行任務3C615,而由VM啟動部651以第I虛擬計算機601為母虛擬計算機通過分叉方式生成的虛擬計算機。任務2B614是伴隨著第2虛擬計算機602的生成而基於任務2A612生成的任務,任務2A612所利用的存儲區域和任務2B所利用的存儲區域由COW處理部663以寫時複製
方式進行管理。任務3C615是伴隨著第3虛擬計算機603的生成而基於任務3A613生成的任務,任務3A613所利用的存儲區域和任務3C所利用的存儲區域由COW處理部663以寫時複製
方式進行管理。0S1B622和0S1C623是與第I虛擬計算機601的0S1A621對應的作業系統,0S1B622伴隨著第2虛擬計算機602的生成而生成,0S1C623伴隨著第3虛擬計算機603的生成而生成,0S1A621所利用的存儲區域、0S1B622所利用的存儲區域、0S1C623所利用的存儲區域由COW處理部663以寫時複製方式進行管理。以上那樣構成的虛擬計算機系統100按照以下所示的存儲器102的存儲區域的利用方法,利用存儲器102的存儲區域。在此,使用
虛擬計算機系統100中的存儲器102的存儲區域的利用方法。圖11是表示在時刻t0對於存儲器102的存儲區域中的被劃分為規定的區域的各個存儲區域的利用方法的、存儲器102的存儲區域圖。在該圖中,管理器分配區域1101是區域ID310 (參照圖3)為「I」的規定的存儲區域,與圖5中的區域A501對應。此外,該區域被預先設定為管理器630的代碼被容納的區域、或由管理器630利用的存儲區域。此外,根據由保護設定信息保持部661存儲的訪問許可信息1000中的原始訪問信息的部分,對所有虛擬計算機預先設定既不可以讀出也不可以寫入的區域。作業系統分配區域1102是區域ID310為「2」的規定的存儲區域,與圖5中的區域B502對應。而且,該區域被預先設定為成為處理器101的執行對象的作業系統的代碼被容納的區域、或由成為處理器101的執行對象的作業系統利用的存儲區域。此外,該區域被預先設定為僅能夠由管理員模式220的處理器101訪問的區域。此外,根據由保護設定信息保持部661存儲的訪問許可信息1000中的原始訪問信息的部分,預先設定為對VMID1020為「O」的虛擬計算機(S卩,作為所有其他虛擬計算機的母虛擬計算機的第I虛擬計算機601)既可以讀出也可以寫入的區域,對該虛擬計算機以外的所有虛擬計算機可以讀出但不可以寫入的區域。第I種程序分配區域1103是區域ID310為「3」的規定的存儲區域,與圖5中的區域C503對應。而且,該區域預先設定為屬於應用組ID為「I」的應用程式組的程序(以後稱為「第I種程序」)被容納的區域、或由第I種程序利用的存儲區域。此外,根據由保護設定信息保持部661存儲的訪問許可信息1000中的原始訪問信息的部分,預先設定為對VMID1020為「O」的虛擬計算機既可以讀出也可以寫入的區域,對VMID1020為「I」的虛擬計算機可以讀出但不可以寫入的區域,對其以外的所有虛擬計算機既不可以讀出也不可以寫入的區域。第2種程序分配區域1104是區域ID310為「4」的規定的存儲區域,與圖5中的區域D504對應。而且,該區域預先設定為屬於應用組ID為「2」的應用程式組的程序(以後稱為「第2種程序」)被容納的區域、或由第2種程序利用的存儲區域。此外,根據由保護設定信息保持部661存儲的訪問許可信息1000中的原始訪問信息的部分,預先設定為對VMID1020 為「O」的虛擬計算機既可以讀出也可以寫入的區域,對VMID1020為「2」的虛擬計算機可以讀出但不可以寫入的區域,對其以外的所有虛擬計算機既不可以讀出也不可以寫入的區域。第3種程序分配區域1105是區域ID310為「5」的規定的存儲區域,與圖5中的區域E505對應。而且,該區域預先設定為屬於應用組ID為「3」的應用程式組的程序(以後稱為「第3種程序」)被容納的區域、或由第3種程序利用的存儲區域。此外,根據由保護設定信息保持部661存儲的訪問許可信息1000中的原始訪問信息的部分,預先設定為對VMID1020為「O」的虛擬計算機既可以讀出也可以寫入的區域,對VMID1020為「3」的虛擬計算機可以讀出但不可以寫入的區域,對其以外的所有虛擬計算機既不可以讀出也不可以寫入的區域。IO區域1106至1108是區域ID310為「K」、「L」、「M」的規定的存儲區域,與圖5中的區域K506、L507、M508對應。該區域被預先設定為用於實現I/O仿真的區域,該I/O仿真是指,對於作為在虛擬計算機間共享器件控制的ー個方式的、共享的I/O寄存器,在從應用程式或作業系統有I/O操作請求時,進行產生例外的訪問設定,由管理器接收產生的例外,由管理器進行相應的I/O操作的調解及代理。此外,根據由保護設定信息保持部661存儲的訪問許可信息1000中的原始訪問信息的部分,對於VMID1020為「O」的虛擬計算機,將IO區域1106至1108預先設定為既可以讀出又可以寫入的區域,對於該虛擬計算機以外的所有虛擬計算機,為了使IO區域1106成為用於實現讀出和寫入共享的區域,預先設定既不可以讀出又不可以寫入的區域,為了使IO區域1107成為實現僅寫入共享的區域,預先設定可以讀出但是不可以寫入的區域,為了使IO區域1108成為實現僅讀出共享的區域,預先設定不可以讀出但可以寫入的區域。第2種程序的第I虛擬計算機用分配區域1111是區域ID310為「N」的規定的存儲區域,與圖5中的區域N511對應。該區域是通過由COW處理部663進行第2種程序的基於寫時複製方式的訪問管理,而對第I虛擬計算機601新分配的區域,通過COW處理部663更新由保護設定信息保持部661存儲的訪問許可信息1000來進行設定。
第2種程序的第2虛擬計算機用分配區域1112是區域ID310為「N + I」的規定的存儲區域,與圖5中的區域N+ I (512)對應。該區域是通過由COW處理部663進行第2種程序的基於寫時複製方式的訪問管理,而對第2虛擬計算機602新分配的區域,通過COW處理部663更新由保護設定信息保持部661存儲的訪問許可信息1000來進行設定。第3種程序的第I虛擬計算機用分配區域1113是區域ID310為「N + 2」的規定的存儲區域,與圖5中的區域N+2 (513)對應。該區域是通過由COW處理部663進行第3種程序的基於寫時複製方式的訪問管理,而對第I虛擬計算機601新分配的區域,通過COW處理部663更新由保護設定信息保持部661存儲的訪問許可信息1000而進行設定。第3種程序的第3虛擬計算機用分配區域1114是區域ID310為「N + 3」的規定的存儲區域,與圖5中的區域N + 3 (514)對應。該區域是通過由COW處理部663進行第3種程序的基於寫時複製方式的訪問管理,而對第3虛擬計算機603新分配的區域,通過COW處理部663更新由保護設定信息保持部661存儲的訪問許可信息1000而進行設定。以下,參照
虛擬計算機系統100所進行的動作。 在此,說明虛擬計算機系統100所進行的動作中的、作為特徵性動作的虛擬計算機切換處理、存儲器訪問處理、應用程式執行處理。虛擬計算機切換處理是切換使處理器101執行的虛擬計算機的處理。圖12是虛擬計算機切換處理的流程圖。在進行虛擬計算機的分時執行處理的VM執行部652使用計時器108計測的時間經過了規定時間的情況下,或處理器101從處理器101的外部受理了向當前未執行的虛擬計算機的中斷請求的情況下等,由VM執行部652開始虛擬計算機切換處理。虛擬計算機切換處理開始後,VM執行部652確定成為切換目標的虛擬計算機(步驟 S1200)。步驟S1200的處理結束後,VM執行部652將處理器101的寄存器值保存到與當前執行中的虛擬計算機建立了對應的規定的存儲區域中,並使當前執行中的虛擬計算機中斷(步驟S1220)。在此,該規定的存儲區域設置在存儲器102的存儲區域中的、僅能夠由管理器102訪問的管理器分配區域1101中。步驟S1220的處理結束後,VM執行部652對於存儲在高速緩衝存儲器105中的數據,在回寫(write back)處理之後進行快閃記憶體(步驟S1230)。另外,為了避免高速緩衝快閃記憶體導致的執行速度的降低,也可以限制每個虛擬計算機能夠利用的高速緩衝區域,並省略步驟S1230。步驟S1230的處理結束後,保護設定部662在步驟S1200的處理中,讀出與由VM執行部652確定的成為切換目標的虛擬計算機的VMID1020 (參照圖10)有關的、分別與區域ID1010建立了對應的訪問信息,生成存儲器保護信息400 (參照圖4),並以生成的存儲器保護信息400來更新存儲器保護單元107所存儲的存儲器保護信息400 (步驟S1240)。步驟S1240的處理結束後,VM執行部652將保存在與成為切換目標的虛擬計算機建立了對應的規定的存儲區域中的、處理器101的寄存器值恢復到處理器101的寄存器中(步驟S1250),並啟動該虛擬計算機(步驟S1260)。另外,限制每個虛擬計算機能夠利用的高速緩衝區域並省略步驟S1230的情況下,在本步驟S1260中切換高速緩衝區域。VM執行部652結束步驟S1260的處理後,虛擬計算機系統100結束該虛擬計算機切換處理。存儲器訪問處理是存儲器保護單元107進行的向存儲器102的存儲區域的訪問控制動作。圖13是存儲器訪問處理的流程圖。通過由存儲器保護單元107經由內部總線120受理從處理器101向存儲器102的存儲區域的訪問請求,開始存儲器訪問處理。
存儲器訪問處理開始後,存儲器保護單元107參照存儲的存儲器保護表300(參照圖3),確定所接受的訪問請求的地址包含在由區域ID310識別的規定的區域中的哪個規定的區域中(步驟S1300)。步驟S1300的處理結束後,存儲器保護單元107參照存儲的存儲器保護信息400(參照圖4),比較所接受的訪問請求的訪問種類(寫入和讀出的哪ー個)和與識別確定的區域的區域ID410建立了對應的訪問信息420 (步驟S1310),調查所接受的訪問請求的訪問種類是否滿足與識別確定的區域的區域ID410建立了對應的訪問信息420 (步驟S1320)。在步驟S1320的處理中,所接受的訪問請求的訪問種類滿足與識別確定的區域的區域ID410建立了對應的訪問信息420的情況下(步驟S1320 :是),存儲器保護單元107執行所接受的訪問請求(步驟S1330)。在步驟S1320的處理中,所接受的訪問請求的訪問種類不滿足與識別確定的區域的區域ID410建立了對應的訪問信息420的情況下(步驟S1320 :否),存儲器保護單元107不執行所接受的訪問請求,對處理器101進行不能執行向存儲器區域的訪問的意思的例外通知(步驟S1340)。存儲器保護單元107結束步驟S1330的處理的情況下,或結束步驟S1340的處理的情況下,虛擬計算機系統100結束該存儲器訪問處理。應用程式執行處理是如下的處理在請求受理部654從執行中的虛擬計算機的作業系統受理了新的應用程式的啟動請求的情況下,VM啟動部651確定執行該新的應用程式的虛擬計算機,並對確定的虛擬計算機指示該新的應用程式的執行。作為虛擬計算機的作業系統對請求受理部654進行新的應用程式的啟動請求的情況的例子,例如有如下情況等通過由利用虛擬計算機系統100的用戶對輸入裝置131進行操作,被作業系統進行執行控制的任務向作業系統委託新的應用程式的啟動的請求。圖14是應用程式執行處通的流程圖。通過由請求受理部654從執行中的虛擬計算機的作業系統受理新的應用程式的啟動請求,開始應用程式執行處理。請求受理部654受理新的應用程式的啟動請求後,將受理了啟動請求的意思的信號發送給VM啟動部651。VM啟動部651接受到受理了啟動請求的意思的信號後,參照由VM管理表保持部640存儲的應用組管理表700(參照圖7),確定該應用程式所屬的應用程式組(步驟S1400),並且參照由VM管理表保持部640存儲的虛擬計算機管理表800 (參照圖8),確定用於執行屬於確定的應用組的應用程式的虛擬計算機(步驟S1410)。步驟S1410的處理結束後,VM啟動部651參照由VM管理表保持部640存儲的虛擬計算機狀態表900 (參照圖9),調查確定的虛擬計算機是否處於執行中(步驟S1420)。在步驟S1420的處理中,確定的虛擬計算機不是執行中的情況下(步驟S1420 否),VM啟動部651進ー步參照由VM管理表保持部640存儲的虛擬計算機狀態表900,調查確定的虛擬計算機是否處於結束處理中(步驟S1430)。在步驟S1430的處理中,確定的虛擬計算機是結束處理中的情況下(步驟S1430 是),VM啟動部651待機,直到確定的虛擬計算機不再處於結束處理中(步驟S1430 :重複「是」的處理)。
在步驟S1430的處理中,確定的虛擬計算機不是結束處理中的情況下(步驟S1430 :否),VM啟動部651以分叉方式生成確定的虛擬計算機(步驟S1440)。在步驟S1420的處理中,在確定的虛擬計算機為執行中的情況下(步驟S1420 是),或步驟S1440的處理已結束的情況下,VM啟動部651向確定的虛擬計算機的作業系統發送開始執行成為對象的應用的意思的信號(步驟S1450)。VM啟動部651結束步驟S1450的處理後,虛擬計算機系統100結束該應用程式執行處理。以下,使用具體例考察虛擬計算機系統100的動作。作為具體例,考察在應用程式名720 (參照圖7)為「記事薄」的應用程式(以下簡稱為「記事薄」)及由記事簿利用的數據容納在區域ID1010 (參照圖10)為「3」的規定的區域中、應用程式名720為「郵箱」的應用程式(以下簡稱為「郵箱」)及由郵箱利用的數據榮楠在區域ID1010為「5」的規定的區域中的情況下,在記事簿中包含有將郵箱啟動並將記錄在地址簿中的個人信息向外部流出的惡意軟體的情況。在虛擬計算機系統100中,記事簿屬於應用組ID710為「I」的應用程式組(參照應用組管理表700 (參照圖7)),所以被VMID810為「I」的虛擬計算機(以下稱為「虛擬計算機I」)執行(參照虛擬計算機管理表800 (參照圖8))。在執行記事簿的虛擬計算機I中,記事簿中包含的惡意軟體被執行時,該惡意軟體嘗試使郵箱啟動。但是,郵箱及由郵箱利用的數據容納在區域ID1010為「5」的規定的區域中,來自虛擬計算機I的訪問被存儲器保護單元107禁止(參照圖10的訪問許可信息1000)。因此,惡意軟體無法使郵箱啟動,或將郵箱篡改,或訪問由郵箱利用的數據。因此,惡意軟體不會使記錄在地址簿中的個人信息向外部流出。這樣,本實施方式I的虛擬計算機系統100,即使在作為虛擬計算機的執行對象的應用程式中包含惡意軟體,也能夠比以往更低地抑制由該惡意軟體攻擊不想被惡意軟體攻擊的應用程式的危險性。以下,作為本發明的虛擬計算機系統的ー個實施方式,說明將實施方式I中的虛擬計算機系統100的一部分變形後的虛擬計算機系統1500。實施方式2的虛擬計算機系統1500的 硬體構成從實施方式I的虛擬計算機系統100部分變形,此外,執行的軟體的一部分從實施方式I的虛擬計算機系統100部分變形。實施方式I的虛擬計算機系統100是具備對向存儲器102的存儲區域的訪問進行控制的存儲器保護單元107的構成的例子,但是實施方式2是以下情況的例子虛擬計算機系統1500不具備作為硬體的存儲器保護單元,由處理器執行的管理器具有對向存儲器102的存儲區域的訪問進行控制的功能。以下,參照
本實施方式2的虛擬計算機系統1500的構成,重點說明與實施方式I的虛擬計算機系統100的構成的不同點。圖15是表示虛擬計算機系統1500的主要的硬體構成的框圖。如該圖所示,虛擬計算機系統1500與虛擬計算機系統100同樣,作為硬體是計算機裝置,從實施方式I的虛擬計算機系統100將集成電路110變形為集成電路1510。圖16是表示在某時刻t0在處理器101上成為執行對象的模塊的框圖。在該圖中,模塊群1600是在處理器101中成為執行對象的模塊的集合,模塊群1600所包含的模塊分別為對應的程序容納在存儲器102的存儲區域中。虛擬計算機系統1500中的模塊群1600從實施方式I的虛擬計算機系統100中的模塊群600將管理器630變更為管理器1630。管理器1630從實施方式I的管理器630將VM存儲器管理部660變更為VM存儲器管理部1660。VM存儲器管理部1660相對於實施方式I的VM存儲器管理部660,變形為追加了虛擬MMU1670和存儲器保護部1680。虛擬MMU1670與MMU106協作,具有用於指定存儲器102的物理存儲區域的地址的物理地址與用於指定處理器101所利用的邏輯存儲區域的地址的邏輯地址的變換功能。虛擬計算機系統1500設定為,對每個虛擬計算機単獨分配邏輯存儲區域而使虛擬計算機執行(以下,將對每個虛擬計算機単獨分配的邏輯存儲區域稱為「一次邏輯存儲區域」,將一次邏輯存儲區域的地址稱為「一次邏輯地址」),並且設定為,由MMU106將該一次邏輯地址變換為存儲器102所利用的物理地址。該虛擬MMU1670所具有的功能是指,將各虛擬計算機在本虛擬計算機內利用的邏輯存儲地址(以下將該虛擬計算機在本虛擬計算機內利用的邏輯存儲區域稱為「二次邏輯存儲區域」,將二次邏輯存儲區域的地址稱為「二次邏輯地址」)變換為上述一次邏輯地址。存儲器保護部1680具有在內部存儲存儲器保護表300 (參照圖3)和存儲器保護信息400 (參照圖4)的功能;以及參照存儲的存儲器保護表300和存儲器保護信息400,對虛擬計算機使用一次邏輯地址進行的向存儲器102的物理存儲區域的訪問進行控制的功倉^:。在此,存儲器保護部1680的、參照存儲器保護表300和存儲器保護信息400進行的向存儲器102的存儲區域的訪問控制,與實施方式I的存儲器保護單元107所進行的向存儲器102的存儲區域的訪問的控制(參照實施方式I中的項目)相同,將存儲器保護單元107置換為存儲器保護部1680而成。因此,在此省略其說明。上述構成的虛擬計算機系統1500與實施方式I的虛擬計算機系統100同樣,即使在成為虛擬計算機的執行對象的應用程式中包含有惡意軟體,與以往相比,能夠更加抑制原本不想執行的應用程式被執行的危險性。以下,作為本發明的虛擬計算機系統的ー個實施方式,說明將實施方式I中的虛擬計算機系統100的一部分變形後的變形虛擬計算機系統。實施方式3的變形虛擬計算機系統的硬體構成與實施方式I的虛擬計算機系統100相同,但是執行的軟體的一部分從實施方式I的虛擬計算機系統100部分變形。
該變形虛擬計算機系統是如下構成的虛擬計算機系統的例子在執行多個虛擬計算機的情況下,也僅由執行的虛擬計算機中的I個虛擬計算機(在此為第I虛擬計算機)直接控制顯示器、鍵盤等器件,其以外的虛擬計算機通過向第I虛擬計算機委託器件的控制,間接地對器件進行控制。以下,參照
本實施方式3的變形虛擬計算機系統的構成,重點說明與實施方式I的虛擬計算機系統100的構成的不同點。圖17是表示在某時刻t0在處理器101上成為執行對象的模塊的框圖。在該圖中,模塊群1700是在處理器101中成為執行對象的模塊的集合,模塊群1700所包含的模塊分別為對應的程序容納在存儲器102的存儲區域中。變形虛擬計算機系統中的模塊群1700從實施方式I的虛擬計算機系統100中的模塊群600將第I虛擬計算機601變更為第I虛擬計算機1701,將第2虛擬計算機602變更為第2虛擬計算機1702,將第3虛擬計算機603變更為第3虛擬計算機1703。第I虛擬計算機1701是VMID1020為「O」的、其他所有虛擬計算機的母虛擬計算機,從實施方式I中的第I虛擬計算機601將0S1A621變形為包含器件驅動器1731的0S1A1721。第2虛擬計算機1702是為了執行任務2B614,由VM啟動部651以第I虛擬計算機1701為母虛擬計算機通過分叉方式生成的虛擬計算機,從實施方式I中的第2虛擬計算機602將0S1B622變更為包含器件驅動器1732的0S1B1722。第3虛擬計算機1703是為了執行任務3C615,由VM啟動部651以第I虛擬計算機1701為母虛擬計算機通過分叉方式生成的虛擬計算機,從實施方式I中的第3虛擬計算機603將0S1C623變更為包含器件驅動器1733的0S1C1723。器件驅動器1731由前端部1741、後端部1742、本地(native)部1743構成。另外,器件驅動器是指所謂的對器件進行控制的程序,但是在此還包含器件控制處理、文件系統處理、進程間通信處理、虛擬計算機間通信處理等實現虛擬計算機的輸入輸出功能的程序。本地部1743由用於直接控制成為對象的器件的命令代碼等構成,具有對器件進行控制的功能。容納有該程序的存儲器102的存儲區域通過由保護設定信息保持部661存儲的訪問許可信息1000(參照圖10),而設定為僅對第I虛擬計算機1701來說訪問信息為R/W,對其他虛擬計算機來說訪問信息為NA。由此,本地部1743不會被第I虛擬計算機1701以外的虛擬計算機執行。後端部1742具有在包含自身的虛擬計算機所包含的前端部及包含自身的虛擬計算機以外的虛擬計算機所包含的前端部與伺服器客戶端模型(server client model)之間進行通信的功能;從通信的前端部受理本地部1743的操作指令,並將受理的本地部1743的操作指令輸出至本地部1743的功能;以及受理從本地部1743輸出的數據,井向通信的前端部輸出受理的數據的功能。容納有該程序的存儲器102的存儲區域通過由保護設定信息保持部661存儲的訪問許可信息1000,而設定為僅對第I虛擬計算機1701來說訪問信息為R/W,對其他虛擬計算機來說訪問信息為NA。由此,後端部1742不會被第I虛擬計算機1701以外的虛擬計算機執行。前端部1741具有在後端部1742和伺服器客戶端模型之間進行通信的功能;向通信的後端部1742發送本地部1743的操作指令的功能;受理從通信的後端部輸出的數據的功能。 容納有該程序的存儲器102的存儲區域通過由保護設定信息保持部661存儲的訪問許可信息1000,設定為僅對第I虛擬計算機1701來說訪問信息為R/W,對其他虛擬計算機來說訪問信息為R0。由此,前端部能夠被所有虛擬計算機執行(與圖17中的前端部1741、前端部1744、前端部1745對應)。此外,前端部被多個虛擬計算機執行的情況下,容納有前端部的存儲器102的存儲區域由COW處理部663以寫時複製方式管理。器件驅動器1732是伴隨著第2虛擬計算機1702的生成而基於器件驅動器1731生成的,包含基於前端部1741生成的前端部1744。器件驅動器1732不包含本地部和後端部,這是因為,容納有本地部1743的存儲器102的存儲區域和容納有後端部1742的存儲器102的存儲區域既不能從第2虛擬計算機1702讀出也不能寫入,所以器件驅動器1732無法執行本地部和後端部。器件驅動器1733是伴隨著第3虛擬計算機1703的生成而基於器件驅動器1731生成的,包含基於前端部1741生成的前端部1745。器件驅動器1733不包含本地部和後端部,這是因為,容納有本地部1743的存儲器102的存儲區域和容納有後端部1742的存儲器102的存儲區域既不能從第3虛擬計算機1703讀出也不能寫入,所以器件驅動器1733無法執行本地部和後端部。在此,說明不包含本地部1743的虛擬計算機、例如第2虛擬計算機1702間接地對器件進行控制的情況。第2虛擬計算機1702間接地對器件進行控制的情況下,首先向前端部1744輸出本地部1743的操作指令。前端部1744接受到本地部1743的操作指令後,通過伺服器客戶端模型與後端部1742進行通信,並將本地部1743的操作指令發送給後端部1742。後端部1742接受到本地部1743的操作指令後,向本地部1743輸出本地部1743的操作指令。由此,第2虛擬計算機對器件進行操作。這樣,根據本實施方式3的變形虛擬計算機系統,即使在多個虛擬計算機成為執行對象的情況下,僅第I虛擬計算機1701的本地部1743對器件進行直接控制,能夠排他性地進行器件控制。
以上,作為本發明的虛擬計算機系統的ー實施方式,在實施方式I、實施方式2、實施方式3中說明了 3個虛擬計算機系統的例子,但是也可以如以下那樣變形,本發明當然不限於上述實施方式所示的虛擬計算機系統。(I)在實施方式I中,說明了虛擬計算機系統100具備I個處理器的情況的例子,但是只要管理器能夠進行多個虛擬計算機的執行控制,則處理器的數量並不限於I個,例如也可以是2個、3個等多個。處理器的數量為多個的情況下,管理器並不是必須以分時來執行虛擬計算機,也可以是並行地執行多個虛擬計算機的結構。(2)在實施方式I中,說明了將處理器101、存儲器102、高速緩衝存儲器105、MMU106、存儲器保護單元107、計時器108、DMAC109、內部總線120、第I接ロ 121、第2接ロ122、第3接ロ 123集成在I個集成電路110中的情況的例子,但是這些電路並不是必須集成在I個集成電路中。例如,也可以將處理器101和高速緩衝存儲器105集成在第I集成電路中,將其他電路集成在第2集成電路中,例如還可以是將各電路集成在相互不同的集 成電路中的結構。(3)在實施方式I中,以處理器101具備2個動作模式的構成的情況為例進行了說明,但是只要構成為能夠以比執行應用程式的模式和執行作業系統的模式更高的特權模式來執行管理器,動作模式的數並不限於2個,例如也可以是3個以上。這種情況下,能夠將執行管理器的動作模式設為比執行作業系統更高的特權模式,能夠大幅減輕管理器中的虛擬MMU處理、I/O仿真處理的系統開銷。(4)在實施方式I中,以第I虛擬計算機601成為其他所有虛擬計算機的母虛擬機的構成的情況為例進行了說明,對於生成的各個子虛擬計算機,只要能夠實現向存儲器102的存儲區域的訪問限制,成為母虛擬機的虛擬計算機並不限於第I虛擬計算機601,例如成為某虛擬計算機的子虛擬計算機的虛擬計算機也可以成為其他虛擬計算機的母虛擬機。(5)在實施方式I中,舉出了以分叉方式生成虛擬計算機的構成的情況來進行說明。這是因為,通過以分叉方式來生成虛擬計算機,能夠有效地利用存儲器102的存儲區域。但是,如果允許存儲器102的存儲區域的利用效率的非效率性,則基於成為母虛擬機的虛擬計算機來生成子虛擬計算機的情況下,並不限於以分叉形式進行。作為一例,可以想到以對成為母虛擬機的虛擬計算機分配的所有存儲區域和對新
生成的虛擬計算機分配的所有存儲區域--對應的方式,將對成為母虛擬機的虛擬計算機
分配的存儲區域拷貝到新生成的虛擬計算機的存儲區域,從而生產新的虛擬計算機的形式
坐寸ο此外,這樣,在子虛擬計算機的存儲區域是從母虛擬計算機的存儲區域拷貝而來的情況下等,這些存儲區域並不需要以寫時複製方式來管理。(6)在實施方式2中,以具有進行二次邏輯地址與一次邏輯地址的變換的功能的虛擬MMU1670包含在管理器1630的內部的情況為例進行了說明,但是只要能夠實現二次邏輯地址與一次邏輯地址的變換的功能,虛擬MMU1670並不一定要包含在管理器1630的內部,例如也可以構成為在集成電路1510內具備具有進行二次邏輯地址與一次邏輯地址的變換的功能的硬體。
(7)以下,進ー步說明本發明的ー實施方式的虛擬計算機系統的構成及其變形例和各效果。(a)本發明的ー實施方式的虛擬計算機系統的特徵在於具備存儲裝置;處理器,與該存儲裝置連接;以及管理器(hypervisor ),在該處理器上執行,使該處理器進行多個虛擬計算機的執行控制;該虛擬計算機系統具備訪問控制部,對從虛擬計算機向所述存儲裝置的存儲區域的訪問進行控制;所述存儲裝置包括容納第I種程序的第I存儲區域和容納第2種程序的第2存儲區域;所述管理器包括啟動請求受理部,用於從虛擬計算機受理第I種程序或第2種程序的啟動請求;以及虛擬計算機生成部,在由所述處理器執行的所述啟動請求受理部受理了第I種程序的啟動請求時,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在受理了第2種程序的啟動請求吋,生成用於執行該第2種程序的虛擬計算機,並將該生成的虛擬計算機作為第2種虛擬計算機來管理;所述訪問控制部以如下方式進行所述訪問的控制禁止從由所述處理器執行的所述虛擬計算機生成部作為所述第I種虛擬計算機來管理的虛擬計算機向所述第2存儲區域的訪問。根據具備上述構成的本實施方式的虛擬計算機系統,將未認證應用程式作為第I 種程序容納在第I存儲區域中,將已認證應用程式作為第2種程序容納在第2存儲區域中,從而執行未認證應用程式的虛擬計算機無法訪問已認證應用程式。因此,在成為虛擬計算機的執行對象的應用程式中,即使同時存在已認證應用程式和未認證應用程式,與以往相比,也能夠抑制由於未認證應用程式所包含的惡意軟體被執行而已認證應用程式被攻擊的危險性。圖18是上述變形例中的虛擬計算機系統1800的概略構成圖。如該圖所示,虛擬計算機系統1800由處理器1801、訪問控制部1802、存儲裝置1803構成。並且,存儲裝置1803包含第I存儲區域1811、第2存儲區域1812,加載有管理器1813。此外,管理器1813包含啟動請求受理部1822和虛擬計算機生成部1822。處理器1801是經由訪問控制部1802與存儲裝置1803連接的處理器。作為一例,作為實施方式I中的處理器101 (參照圖I)實現。存儲裝置1803包含第I存儲區域1811和第2存儲區域1812。作為一例,作為實施方式I中的存儲器102 (參照圖I)實現。第I存儲區域1811是容納第I種程序的存儲區域。該第I存儲區域1811作為ー例,作為實施方式I中的區域C503 (參照圖5)實現。此外,第I種程序作為一例,作為實施方式I中的記事簿(參照圖7)實現。第2存儲區域1812是容納第2種程序的存儲區域。該第2存儲區域1812作為ー例,作為實施方式I中的區域E505 (參照圖5)實現。此外,第2種程序作為一例,作為實施方式I中的郵箱(參照圖7)實現。管理器1813在處理器1801上執行,是使處理器1801進行多個虛擬計算機的執行控制的管理器,包含啟動請求受理部1822和虛擬計算機生成部1822。該管理器1813作為一例,作為實施方式I中的管理器630 (參照圖6)實現。啟動請求受理部1822是從虛擬計算機受理第I種程序或第2種程序的啟動請求的代碼群。作為一例,作為實施方式I中的請求受理部654實現。
虛擬計算機生成部1823是用於進行以下處理的代碼群在由1801處理器執行的啟動請求受理部1822受理了第I種程序的啟動請求的情況下,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在受理了第2種程序的啟動請求的情況下,生成用於執行該第2種程序的虛擬計算機,將該生成的虛擬計算機作為第2種虛擬計算機來管理。作為一例,作為實施方式I中的VM啟動部651和VM執行部652來實現。訪問控制部1802具有如下功能將從虛擬計算機向存儲裝置1803的存儲區域的訪問控制為,禁止從由處理器1801執行的虛擬計算機生成部1823作為所述第I種虛擬計算機管理的虛擬計算機向所述第2存儲區域的訪問。作為一例,作為實施方式I中的存儲器保護單元107 (參照圖I)實現。(b)此外,也可以是,所述訪問控制部具有第2區 域確定信息存儲部,用於存儲確定所述第2存儲區域的地址的第2區域確定信息,所述訪問控制部參照存儲在所述第2區域確定信息存儲部中的所述第2區域確定信息,進行所述訪問的控制。 通過採用這樣的構成,訪問控制部不用參照訪問控制部的外部,就能夠確定第2存儲區域的地址。(C)此外,也可以是,所述存儲裝置包含程序對應信息存儲區域,該程序對應信息存儲區域用於存儲程序對應信息,該程序對應信息將確定程序的信息和確定程序的種類的信息建立對應,所述虛擬計算機生成部包含程序種類確定部,該程序種類確定部在由所述處理器執行的所述啟動請求受理部從虛擬計算機受理了程序的啟動請求的情況下,基於存儲在所述程序對應信息存儲區域中的程序對應信息,確定該程序是哪個種類的程序,該虛擬計算機生成部基於由所述程序種類確定部確定的程序的種類,在由所述處理器執行的所述啟動請求受理部受理了第I種程序的啟動請求的情況下,對所述生成的虛擬計算機進行作為第I種虛擬計算機的管理,在由所述處理器執行的所述啟動請求受理部受理了第2種程序的啟動請求的情況下,對所述生成的虛擬計算機進行作為第2種虛擬計算機的管理。通過採用這樣的構成,虛擬計算機生成部能夠基於存儲在程序對應信息存儲區域中的程序對應信息,進行虛擬計算機的種類管理。(d)此外,也可以是,所述虛擬計算機生成部在由所述處理器執行的所述啟動請求受理部從虛擬計算機受理了第I種程序或第2種程序的啟動請求的情況下,在生成虛擬計算機時,以基於對所述啟動請求的請求源虛擬計算機分配的所述存儲裝置中的存儲區域的分叉方式,對該生成的虛擬計算機進行所述存儲裝置中的存儲區域的分配。通過採用這樣的構成,以分叉方式進行新的虛擬計算機的生成,所以能夠提高存儲裝置的存儲區域的利用效率。(e)此外,也可以是,在所述管理器包含寫時複製執行控制部,該寫時複製執行控制部在由所述處理器執行的所述虛擬計算機生成部以基於對第2虛擬計算機分配的所述存儲裝置中的存儲區域的分叉方式對第I虛擬計算機進行存儲區域的分配的情況下,以通過寫時複製方式進行由所述第I虛擬計算機和所述第2虛擬計算機進行的向所述存儲裝置中的存儲區域的訪問的方式,控制從虛擬計算機向所述存儲裝置中的存儲區域的訪問。通過採用這樣的構成,以寫時複製方式進行母虛擬計算機向存儲區域的訪問和基於母虛擬計算機以分叉方式生成的子虛擬計算機向存儲區域的管理,所以能夠提高存儲裝置的存儲區域的利用效率。(f)此外,也可以是,所述第I存儲區域還包含存儲由虛擬計算機執行所述第I種程序而利用的數據的存儲區域,所述第2存儲區域還包含由虛擬計算機執行所述第2種程序而利用的數據的存儲區域。通過採用這樣的構成,能夠使執行第I種程序的虛擬計算機無法利用執行第2種程序的虛擬計算機所利用的數據。(g)此外,也可以是,所述存儲裝置還包含器件驅動器存儲區域,存儲器件驅動器;以及器件控制程序存儲區域,存儲器件控制程序,通過由執行存儲在所述器件驅動器存儲區域中的所述器件驅動器的虛擬計算機以外的虛擬計算機執行該器件控制程序,與執行所述器件驅動器的虛擬計算機進行通信,使執行所述器件驅動器的虛擬計算機進行器件的控制;所述訪問控制部以如下方式進行所述訪問的控制僅限作為執行控制對象的虛擬計算機中的I個虛擬計算機,許可向所述器件驅動器存儲區域的訪問。 通過採用這樣的構成,能夠排他性地進行由多個虛擬計算機進行的器件控制。エ業實用性本發明能夠廣泛應用於虛擬計算機系統。標記說明100虛擬計算機系統110集成電路101處理器102存儲器103R0M104RAM105高速緩衝存儲器106MMU107存儲器保護單元108計時器109DMAC120內部總線600模塊群601第I虛擬計算機602第2虛擬計算機603第3虛擬計算機630管理器640VM管理表保持部650VM執行控制部65IVM 啟動部652VM 執行部653VM 結束部654請求受理部
660VM存儲器管理部661保護設定信息保持部662保護設定部 663C0W 處理部。
權利要求
1.一種虛擬計算機系統,其特徵在於,具備 存儲裝置; 處理器,與該存儲裝置連接;以及 管理器,在該處理器上執行,使該處理器進行多個虛擬計算機的執行控制; 該虛擬計算機系統具備訪問控制部,該訪問控制部對從虛擬計算機向所述存儲裝置的存儲區域的訪問進行控制; 所述存儲裝置包括容納第I種程序的第I存儲區域和容納第2種程序的第2存儲區域; 所述管理器包括 啟動請求受理部,用於從虛擬計算機受理第I種程序或第2種程序的啟動請求;以及 虛擬計算機生成部,在由所述處理器執行的所述啟動請求受理部受理了第I種程序的啟動請求時,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在由所述處理器執行的所述啟動請求受理部受理了第2種程序的啟動請求時,生成用於執行該第2種程序的虛擬計算機,並將該生成的虛擬計算機作為第2種虛擬計算機來管理; 所述訪問控制部以如下方式進行所述訪問的控制禁止從由所述處理器執行的所述虛擬計算機生成部作為所述第I種虛擬計算機來管理的虛擬計算機向所述第2存儲區域的訪問。
2.如權利要求I所述的虛擬計算機系統,其特徵在於, 所述訪問控制部具有第2區域確定信息存儲部,該第2區域確定信息存儲部用於存儲第2區域確定信息,該第2區域確定信息用於確定所述第2存儲區域的地址,所述訪問控制部參照存儲在所述第2區域確定信息存儲部中的所述第2區域確定信息,進行所述訪問的控制。
3.如權利要求2所述的虛擬計算機系統,其特徵在於, 所述存儲裝置包含程序對應信息存儲區域,該程序對應信息存儲區域用於存儲程序對應信息,該程序對應信息將用於確定程序的信息與用於確定程序的種類的信息建立對應, 所述虛擬計算機生成部包含程序種類確定部,該程序種類確定部在由所述處理器執行的所述啟動請求受理部從虛擬計算機受理了程序的啟動請求的情況下,基於存儲在所述程序對應信息存儲區域中的程序對應信息,確定該程序是哪個種類的程序, 所述虛擬計算機生成部基於由所述程序種類確定部確定的程序的種類,在由所述處理器執行的所述啟動請求受理部受理了第I種程序的啟動請求的情況下將所述生成的虛擬計算機作為第I種虛擬計算機來管理,在由所述處理器執行的所述啟動請求受理部受理了第2種程序的啟動請求的情況下,將所述生成的虛擬計算機作為第2種虛擬計算機來管理。
4.如權利要求3所述的虛擬計算機系統,其特徵在於, 所述虛擬計算機生成部在由所述處理器執行的所述啟動請求受理部從虛擬計算機受理了第I種程序或第2種程序的啟動請求的情況下,在生成虛擬計算機時,以基於對所述啟動請求的請求源虛擬計算機分配的所述存儲裝置中的存儲區域的分叉方式,對該生成的虛擬計算機進行所述存儲裝置中的存儲區域的分配。
5.如權利要求4所述的虛擬計算機系統,其特徵在於,所述管理器包括寫時複製執行控制部,該寫時複製執行控制部在由所述處理器執行的所述虛擬計算機生成部以基於對第2虛擬計算機分配的所述存儲裝置中的存儲區域的分叉方式對第I虛擬計算機進行存儲區域的分配的情況下,以通過寫時複製方式進行由所述第I虛擬計算機和所述第2虛擬計算機進行的向所述存儲裝置中的存儲區域的訪問的方式,對從虛擬計算機向所述存儲裝置中的存儲區域的訪問進行控制。
6.如權利要求5所述的虛擬計算機系統,其特徵在於, 所述第I存儲區域還包含存儲由虛擬計算機執行所述第I種程序而利用的數據的存儲區域, 所述第2存儲區域還包含由虛擬計算機執行所述第2種程序而利用的數據的存儲區域。
7.如權利要求5所述的虛擬計算機系統,其特徵在於, 所述存儲裝置還包含 器件驅動器存儲區域,存儲器件驅動器;以及 器件控制程序存儲區域,存儲器件控制程序,由除了執行存儲在所述器件驅動器存儲區域中的所述器件驅動器的虛擬計算機以外的虛擬計算機執行該器件控制程序,從而與執行所述器件驅動器的虛擬計算機進行通信,使執行所述器件驅動器的虛擬計算機進行器件的控制; 所述訪問控制部以如下方式進行所述訪問的控制僅許可作為執行控制對象的虛擬計算機中的I個虛擬計算機向所述器件驅動器存儲區域訪問。
8.—種虛擬計算機控制方法,對虛擬計算機系統進行控制,其特徵在於,該虛擬計算機系統具備 存儲裝置; 處理器,與該存儲裝置連接;以及 管理器,在該處理器上執行,使該處理器進行多個虛擬計算機的執行控制; 該虛擬計算機系統具備訪問控制部,該訪問控制部對從虛擬計算機向所述存儲裝置的存儲區域的訪問進行控制; 所述存儲裝置包括容納第I種程序的第I存儲區域和容納第2種程序的第2存儲區域; 所述虛擬計算機控制方法包括 啟動請求受理步驟,所述管理器受理第I種程序或第2種程序的啟動請求; 虛擬計算機生成步驟,在所述管理器在所述啟動請求受理步驟中受理了第I種程序的啟動請求時,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在所述管理器在所述啟動請求受理步驟中受理了第2種程序的啟動請求時,生成用於執行該第2種程序的虛擬計算機,並將該生成的虛擬計算機作為第2種虛擬計算機來管理;以及 訪問控制步驟,所述訪問控制部以如下方式進行所述訪問的控制禁止從由所述處理器執行的所述虛擬計算機生成部作為所述第I種虛擬計算機來管理的虛擬計算機向所述第2存儲區域的訪問。
9.一種虛擬計算機控制程序,用於對虛擬計算機系統進行控制,其特徵在於,該虛擬計算機系統具備 存儲裝置; 處理器,與該存儲裝置連接;以及 管理器,在該處理器上執行,使該處理器進行多個虛擬計算機的執行控制; 該虛擬計算機系統具備訪問控制部,該訪問控制部對從虛擬計算機向所述存儲裝置的存儲區域的訪問進行控制; 所述存儲裝置包括容納第I種程序的第I存儲區域和容納第2種程序的第2存儲區域; 所述虛擬計算機控制程序包括 啟動請求受理步驟,所述管理器受理第I種程序或第2種程序的啟動請求;以及虛擬計算機生成步驟,在所述管理器在所述啟動請求受理步驟中受理了第I種程序的啟動請求時,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在所述管理器在所述啟動請求受理步驟中受理了第2種程序的啟動請求時,生成用於執行該第2種程序的虛擬計算機,並將該生成的虛擬計算機作為第2種虛擬計算機來管理;以及 訪問控制步驟,所述訪問控制部以如下方式進行所述訪問的控制禁止從由所述處理器執行的所述虛擬計算機生成部作為所述第I種虛擬計算機來管理的虛擬計算機向所述第2存儲區域的訪問。
10.一種半導體集成電路,其特徵在於,具備 存儲裝置; 處理器,與該存儲裝置連接;以及 管理器,在該處理器上執行,使該處理器進行多個虛擬計算機的執行控制; 該半導體集成電路具備訪問控制部,該訪問控制部對從虛擬計算機向所述存儲裝置的存儲區域的訪問進行控制; 所述存儲裝置包括容納第I種程序的第I存儲區域和容納第2種程序的第2存儲區域; 所述管理器包括 啟動請求受理部,用於從虛擬計算機受理第I種程序或第2種程序的啟動請求;以及虛擬計算機生成部,在由所述處理器執行的所述啟動請求受理部受理了第I種程序的啟動請求時,生成用於執行該第I種程序的虛擬計算機,並將該生成的虛擬計算機作為第I種虛擬計算機來管理,在由所述處理器執行的所述啟動請求受理部受理了第2種程序的啟動請求時,生成用於執行該第2種程序的虛擬計算機,並將該生成的虛擬計算機作為第2種虛擬計算機來管理; 所述訪問控制部以如下方式進行所述訪問的控制禁止從由所述處理器執行的所述虛擬計算機生成部作為所述第I種虛擬計算機來管理的虛擬計算機向所述第2存儲區域的訪問。
全文摘要
具備存儲器保護單元,該存儲器保護單元進行從虛擬計算機向存儲器區域的訪問控制,通過由處理器執行的管理器和存儲器保護單元協同動作,對於各個虛擬計算機,將向存儲器的存儲區域的訪問控制為,分別禁止向規定的區域的訪問。由此,各個虛擬計算機無法訪問容納在被禁止訪問的區域中的程序、數據等。
文檔編號G06F12/14GK102859502SQ20118002049
公開日2013年1月2日 申請日期2011年9月12日 優先權日2011年3月2日
發明者谷川忠雄 申請人:松下電器產業株式會社