操作系統(tǒng),也是在硬件上第一個啟動的操作系統(tǒng)實例,負責系統(tǒng)資源的管理,例如,控制多處理器操作系統(tǒng)中的CPU資源、物理內(nèi)存分區(qū)資源、物理設備或虛擬設備等資源。Secondary操作系統(tǒng)實例也可稱之為輕量級操作系統(tǒng)(Light OS),是基于Heavy OS所管理的資源而創(chuàng)建定制的操作系統(tǒng),只能管理自身的資源,從Heavy OS申請資源,或?qū)①Y源釋放后返還給Heavy OS。本步驟中,當需要發(fā)起某種應用服務時,用戶在Primary操作系統(tǒng)實例的環(huán)境或接口中提出創(chuàng)建啟動Secondary操作系統(tǒng)實例的創(chuàng)建請求,同時提供該應用服務所需的資源需求信息,例如,需求的CPU的個數(shù)、物理內(nèi)存分區(qū)的大小等。
[0050]102、主操作系統(tǒng)實例根據(jù)資源需求信息,為從操作系統(tǒng)實例分配獨占的系統(tǒng)資源,系統(tǒng)資源至少包括:處理器資源、物理內(nèi)存分區(qū)資源。
[0051]在接收到Secondary操作系統(tǒng)實例生成所需的資源需求信息后,Primary操作系統(tǒng)從資源池中為Secondary操作系統(tǒng)實例分配獨占的系統(tǒng)資源,例如,獨占的CPU,獨占的物理內(nèi)存分區(qū)、獨占的虛擬設備或物理設備等設備資源。
[0052]103、主操作系統(tǒng)實例根據(jù)資源需求信息,生成從操作系統(tǒng)的資源描述信息。
[0053]Primary操作系統(tǒng)根據(jù)接收到的Secondary操作系統(tǒng)實例創(chuàng)建請求中的資源需求信息,為從操作系統(tǒng)實例生成特定數(shù)據(jù)結構的資源描述信息,例如,對于華為資助下,中科院開發(fā)出的多內(nèi)核操作系統(tǒng):Rainforest操作系統(tǒng)而言,生成啟動參數(shù)數(shù)據(jù)結構Kernbootparams的資源描述信息。
[0054]可選的,Primary操作系統(tǒng)可采用如下幾種方式為Secondary操作系統(tǒng)實例生成資源描述信息:
[0055]方式一、主操作系統(tǒng)實例根據(jù)資源需求信息,在用戶層生成描述系統(tǒng)資源的數(shù)量信息的第一資源描述信息,并在內(nèi)核空間,根據(jù)數(shù)量信息,生成從操作系統(tǒng)完整的資源描述信息,以使從操作系統(tǒng)實例將資源描述信息加載與系統(tǒng)資源中的物理內(nèi)存分區(qū)中。
[0056]具體的,主操作系統(tǒng)可先根據(jù)資源需求信息,在用戶層構造出描述系統(tǒng)資源的數(shù)量信息的第一資源描述信息,將所需的系統(tǒng)資源的相關信息,如CPU的個數(shù)、Core的個數(shù)、物理內(nèi)存分區(qū)的大小、與應用服務對應的系統(tǒng)映像文件的信息等填充在資源描述信息中形成描述數(shù)量信息的第一資源描述信息。然后,通過函數(shù)調(diào)用等將用戶層生成的第一資源描述信息傳輸至內(nèi)核空間,在內(nèi)核空間繼續(xù)對第一資源描述信息進行填充,例如,與所需的CPU個數(shù)對應的具體CPU的信息、與所需的物理內(nèi)存分區(qū)的大小對應的具體的物理內(nèi)存分區(qū)的信息補充到第一資源描述信息中,從而生成最終完整的資源描述信息,然后使從操作系統(tǒng)實例將資源描述信息加載與系統(tǒng)資源中的物理內(nèi)存分區(qū)中。
[0057]方式二、主操作系統(tǒng)實例在內(nèi)核空間,生成從操作系統(tǒng)實例的資源描述信息,以使從操作系統(tǒng)實例將資源描述信息加載與系統(tǒng)資源中的物理內(nèi)存分區(qū)中。具體的,Primary操作系統(tǒng)在內(nèi)核空間,直接根據(jù)資源需求信息,生成Secondary操作系統(tǒng)實例完整的資源描述信息。
[0058]方式三、構建從操作系統(tǒng)實例的資源描述信息,直接加載于為從操作系統(tǒng)實例分配的物理內(nèi)存分區(qū)上,由從操作系統(tǒng)從內(nèi)存空間讀取。
[0059]104、主操作系統(tǒng)實例初始化系統(tǒng)資源,得到初始化系統(tǒng)資源;
[0060]本步驟中,Primary操作系統(tǒng)實例初始化系統(tǒng)資源,并準備Secondary操作系統(tǒng)實例啟動的相關資源,如x86架構CPU從實模式轉換到保護模式的跳板(Trampoline)代碼等。
[0061]需要說明的是,上述103與104沒有嚴格的先后順序,即實際的實施過程中,可先生成資源描述信息,再初始化系統(tǒng)資源;或者,也可以先初始化系統(tǒng)資源,再生成資源描述信息。
[0062]105、主操作系統(tǒng)實例在初始化系統(tǒng)資源上啟動從操作系統(tǒng)實例。
[0063]對系統(tǒng)資源初始化后,Primary操作系統(tǒng)實例在初始化系統(tǒng)資源上運行Secondary操作系統(tǒng)內(nèi)核代碼等,從而創(chuàng)建啟動Secondary操作系統(tǒng)實例。
[0064]本發(fā)明實施例提供的操作系統(tǒng)實例創(chuàng)建方法,Primary操作系統(tǒng)根據(jù)資源需求信息,為Secondary操作系統(tǒng)實例分配獨占的系統(tǒng)資源,生成Secondary操作系統(tǒng)實例的資源描述信息后,初始化并啟動Secondary操作系統(tǒng)實例,從而實現(xiàn)根據(jù)用戶提供的資源需求,動態(tài)的創(chuàng)建具有獨占資源的操作系統(tǒng)實例,達到提高系統(tǒng)擴展性能,并滿足用戶的需求的目的。
[0065]進一步的,上述實施例一中,主操作系統(tǒng)實例接收指示創(chuàng)建從操作系統(tǒng)實例的創(chuàng)建請求之后,根據(jù)資源需求信息,分配獨占的系統(tǒng)資源之前,可根據(jù)資源需求信息,判斷資源池中是否存在滿足資源需求信息的系統(tǒng)資源。
[0066]具體的,Primary操作系統(tǒng)實例可根據(jù)資源需求信息,判斷資源池中空閑的資源是否存在滿足資源需求信息的資源,例如,可以根據(jù)CPU分配狀態(tài)位圖(MP Table),判斷當前空閑可用的CPU或Core,或者,通過其他方式釋放,如熱插拔(Hotplug)方式釋放其他Secondary操作系統(tǒng)實例中的CPU,將回收的CPU分配給當前待創(chuàng)建的Secondary操作系統(tǒng)實例。
[0067]進一步的,上述實施例一中,從引導過程標準(multiboot)的角度來講,從操作系統(tǒng)實例的資源描述信息包括兼容的資源描述信息與標準的資源描述信息,符合multiboot的資源描述信息稱之為標準的資源描述信息;反之,不符合multiboot的資源描述信息稱之為兼容的資源描述信息。
[0068]一般來說,多內(nèi)核操作系統(tǒng)可以有多種表現(xiàn)形式,例如,華為資助下,中科院開發(fā)出的Rainforest操作系統(tǒng)、劍橋大學維護的開源虛擬技術的開放源代碼虛擬機監(jiān)視器(XEN)、在XEN虛擬機上具有訪問意見資源權限,并且可以管理其他字操作系統(tǒng)的操作系統(tǒng)(DemainO)。下面,以Rainforest操作系統(tǒng)為例,對本發(fā)明進行詳細闡述。
[0069]具體的,在Rainforest系統(tǒng)是一個由一個(亦可以為多個)Primary操作實例和多個Secondary操作系統(tǒng)實例構成的系統(tǒng),Primary操作系統(tǒng)實例負責系統(tǒng)資源的整合、配置、Secondary操作系統(tǒng)實例的生命周期的管理等,Secondary操作系統(tǒng)實例在隔離的物理內(nèi)存分區(qū)上運行。其中,在對系統(tǒng)資源進行分區(qū)時有以下指導原則:首先,以物理上(PC1-E、內(nèi)部總線)相互隔離的設備劃分,其次,在系統(tǒng)資源無法滿足需求時可以以物理設備的獨立功能單元劃分,最后,才會考慮對單一物理設備進行虛擬化,通過時間復用物理設備向上構造多個虛擬設備。Rainforest系統(tǒng)的Primary操作系統(tǒng)實例包括:操作系統(tǒng)用戶層加載功能(Osloader)模塊、CPU控制(CPU Controller)模塊以及跳板(Trampoline)模塊,Primary操作系統(tǒng)實例用Osloader功能模塊響應用戶發(fā)送的Secondary操作系統(tǒng)實例創(chuàng)建請求,經(jīng)由CPU Controller模塊驅(qū)動創(chuàng)建Secondary操作系統(tǒng)實例,并通過Trampoline模塊完成模式轉換,大致包括如下步驟:
[0070]SU Primary操作系統(tǒng)實例接收創(chuàng)建啟動Secondary操作系統(tǒng)實例的創(chuàng)建請求。
[0071]S2、Primary操作系統(tǒng)實例中的Osloader模塊響應創(chuàng)建請求,在用戶層構造第一資源描述信息,并調(diào)用內(nèi)核空間的CPU Controller模塊。
[0072]本步驟中,在用戶層構造的第一資源描述信息例如啟動Secondary操作系統(tǒng)實例的部分啟動參數(shù)。具體的,Osloader模塊完成如下子步驟:
[0073]S21、根據(jù)應用服務的特性的資源需求信息,準備在用戶層構造第一資源描述信肩、O
[0074]具體的,資源需求信息例如為CPU/core的個數(shù)、物理內(nèi)存分區(qū)的大小以及啟動待創(chuàng)建的Secondary操作系統(tǒng)所需的系統(tǒng)映像文件等。
[0075]S22、驗證資源需求信息中對應資源的合法性,并進行一系列的初始化。
[0076]例如,以CPU為例,若S21中資源描述信息指示的CPU個數(shù)為6個,則Osloader模塊驗證系統(tǒng)資源池中是否存在6個空閑的CPU,或者,是否可以熱插拔(hotplug)其他Secondary操作系統(tǒng)實例的6個CPU,以分配給該待創(chuàng)建的Secondary系統(tǒng)實例。以系統(tǒng)映像文件為例,Osloader模塊驗證系統(tǒng)映像文件的合法性。
[0077]S23、若合法,則根據(jù)資源需求信息在用戶層生成第一資源描述信息。
[0078]若步驟S22驗證出資源需求信息中對應資源的均合法,則在用戶層生成第一資源描述信息,該第一資源描述信息用于描述系統(tǒng)資源的數(shù)量信息等,例如為啟動參數(shù)數(shù)據(jù)結構(kernboootparams),其中包括CPU/Core的個數(shù)、物理內(nèi)存分區(qū)資源大小、系統(tǒng)映像文件的相關信息等。具體的,圖2為本發(fā)明操作系統(tǒng)實例創(chuàng)建方法所適用的啟動參數(shù)數(shù)據(jù)結構示意圖。
[0079]S24、0sloader模塊調(diào)用CPU Controller模塊,分配相關資源