ht OS實(shí)例內(nèi)核代碼,以并行完成所述Light OS實(shí)例的啟動(dòng)。
[0075]步驟207、所述Heavy OS將所述異步處理多隊(duì)列的第三隊(duì)列中完成內(nèi)核代碼的鏡像地址賦值的各Light OS實(shí)例,輸入到所述異步處理多隊(duì)列的第四隊(duì)列中,并對(duì)所述各Light OS實(shí)例的狀態(tài)以及所述各Light OS實(shí)例的標(biāo)識(shí)進(jìn)行賦值。
[0076]本步驟中,將完成內(nèi)核初始化的各Light OS實(shí)例的狀態(tài)以及各Light OS實(shí)例的標(biāo)識(shí)進(jìn)行賦值,用于將這些信息發(fā)送給Heavy OS以使Heavy OS可以統(tǒng)一管理這些創(chuàng)建的Light OS,比如可以根據(jù)標(biāo)識(shí)進(jìn)行刪除,重新分配硬件資源等管理操作。
[0077]需要說明的是,除第四隊(duì)列外,本發(fā)明實(shí)施例中的“第一”、“第二”、“第三”等僅用于區(qū)分各隊(duì)列,并不代表次序,即第一隊(duì)列,第二隊(duì)列以及第三隊(duì)列在具體實(shí)施時(shí),可以進(jìn)行次序的調(diào)整。
[0078]本實(shí)施例,通過將各Light OS實(shí)例進(jìn)行多階段異步資源分配,實(shí)現(xiàn)Heavy OS可以對(duì)多個(gè)Light OS實(shí)例同時(shí)處理,提高部署效率。
[0079]圖3為本發(fā)明Light OS部署方法實(shí)施例三的執(zhí)行示意圖,本實(shí)施例在實(shí)施例1和2的基礎(chǔ)上,以Linux為例對(duì)Light OS部署方法進(jìn)行解釋說明,假設(shè)本實(shí)施例中的Light OS實(shí)例屬性至少包括上述任意實(shí)施例所述的Light OS實(shí)例屬性,具體流程如圖3所示,其中各執(zhí)行步驟以及隊(duì)列解釋如下:
[0080]首先定義Light OS實(shí)例的數(shù)據(jù)結(jié)構(gòu)如下:
[0081]struct light_kernel{
[0082]unsigned short type;/* 類型 */
[0083]unsigned char core_id[max_num_core] ;/* 存儲(chǔ) core ID 的數(shù)組 */
[0084]unsigned long memory [2] ;/* 內(nèi)存物理地址 start、end*/
[0085]unsigned long img_address;/* 鏡像起始地址 */
[0086]unsigned short stats;/* 狀態(tài) */
[0087]unsigned short kernel_id;/*ID*/
[0088] };
[0089]隊(duì)列1:隊(duì)列中Light OS類型被賦值。
[0090]分配資源:Light OS可以有許多類,按照Light OS類型的需求,根據(jù)當(dāng)前資源條件進(jìn)行資源調(diào)整。比如調(diào)整CPU資源:內(nèi)核模塊調(diào)用Iinux內(nèi)核源碼,查看CPU位圖和LightOS占用的CPU,使用cpu_down O、cpu_up O函數(shù)釋放和回收Heavy OS的CPU資源。釋放資源是指原來被系統(tǒng)使用的資源,從系統(tǒng)資源隊(duì)列中移出來。根據(jù)釋放的core,在本地內(nèi)存中釋放物理連續(xù)的內(nèi)存。該模塊根據(jù)頁表信息獲取當(dāng)前分配的內(nèi)存是否有已被使用的頁,如有則遷移到其他位置。
[0091]隊(duì)列2:隊(duì)列中的Light OS類型、core_id、內(nèi)存被賦值。
[0092]加載鏡像:從Light OS鏡像源(硬盤文件系統(tǒng)目錄)選擇對(duì)應(yīng)AP/Light OS第二階段鏡像,加載到被分配內(nèi)存的起始地址。填充實(shí)例鏡像加載地址,并把core_id和第二階段起始地址舔加到跳轉(zhuǎn)表里。
[0093]隊(duì)列3:隊(duì)列中的Light OS類型、core_id、內(nèi)存、鏡像起始地址被賦值。
[0094]觸發(fā)啟動(dòng):傳遞分配的core和內(nèi)存信息,修改實(shí)例狀態(tài)(比如I表示啟動(dòng),O表示未啟動(dòng)),為Light OS實(shí)例產(chǎn)生ID,給分配的core發(fā)送IPI。
[0095]隊(duì)列4:隊(duì)列中的Light OS類型、core_id、內(nèi)存、鏡像起始地址、實(shí)例狀態(tài)、kerne l_id 被賦值。
[0096]確認(rèn)啟動(dòng):從輸入隊(duì)列獲取當(dāng)前正在啟動(dòng)的Light OS,判斷啟動(dòng)結(jié)果,如果啟動(dòng)成功則修改Light OS的狀態(tài),沒有啟動(dòng)成功則發(fā)送資源信息到資源調(diào)整模塊并消除Light OS
信息記錄。
[0097]需要說明的是,整個(gè)異步處理過程中,各步操作之間獨(dú)立。
[0098]其中在圖3中的觸發(fā)啟動(dòng)步驟后,在確認(rèn)啟動(dòng)步驟前,Light OS的啟動(dòng)分兩個(gè)階段,圖4為圖3中Light OS的啟動(dòng)的階段示意圖,如圖4所示,包括:
[0099]第一階段,各Light OS應(yīng)用處理器(Applicat1n Processor,簡稱AP)在保護(hù)模式前,即處于實(shí)模式下,Heavy OS在內(nèi)存的一段固定位置,按照固定結(jié)構(gòu)存儲(chǔ)Light OS的ID和對(duì)應(yīng)鏡像地址,如圖4所示,將Light OSIAP, Light 0S2AP, Light 0S3AP的屬性信息存儲(chǔ)在內(nèi)存中的一個(gè)固定位置上。AP添加查表功能,比如在跳床(trampoline)代碼中添加查表功能。
[0100]第二階段,各Light OS AP轉(zhuǎn)為保護(hù)模式后,用查表的方式找到各自Light OS的內(nèi)核代碼鏡像地址。各Light OS AP找到鏡像地址后跳到鏡像地址處執(zhí)行。比如圖4中所示的,Light OSlAP7Light 0S2AP,Light 0S3AP在表中查到各自對(duì)應(yīng)的鏡像地址Addressl,Address2,Address3后,跳轉(zhuǎn)執(zhí)行對(duì)應(yīng)鏡像地址存儲(chǔ)的ELF文件elf 1,elf2,elf3和elf4,從而實(shí)現(xiàn)Light OS的啟動(dòng)。
[0101]本實(shí)施例,實(shí)現(xiàn)了在Linux上Heavy OS同時(shí)部署多個(gè)Light OS,相對(duì)于現(xiàn)有技術(shù)中,需要采用基于虛擬機(jī)監(jiān)視器(Hypervisor)技術(shù)實(shí)現(xiàn)的創(chuàng)建多個(gè)輕量級(jí)操作系統(tǒng),本實(shí)施例提高了部署效率,節(jié)省了系統(tǒng)需要虛擬化的成本。
[0102]圖5為本發(fā)明Light OS部署裝置實(shí)施例一的結(jié)構(gòu)圖,該裝置設(shè)置在多內(nèi)核操作系統(tǒng)中的Heavy OS上,如圖5所示,該裝置具體包括:
[0103]創(chuàng)建實(shí)例模塊51,用于根據(jù)用戶發(fā)送的至少兩個(gè)Light OS實(shí)例創(chuàng)建申請(qǐng),創(chuàng)建對(duì)應(yīng)的至少兩個(gè)Light OS實(shí)例;
[0104]分階段異步處理模塊52,用于將創(chuàng)建的各Light OS實(shí)例輸入到異步處理多隊(duì)列中,對(duì)所述各Light OS實(shí)例的屬性進(jìn)行分階段異步資源分配;
[0105]存儲(chǔ)模塊53,用于將完成分階段異步資源分配后的各Light OS實(shí)例的屬性信息存儲(chǔ)在管理表項(xiàng)中;
[0106]觸發(fā)啟動(dòng)模塊54,用于觸發(fā)完成分階段異步資源分配后的多個(gè)Light OS實(shí)例啟動(dòng),以使所述多個(gè)Light OS實(shí)例查詢所述管理表項(xiàng)并根據(jù)查詢結(jié)果進(jìn)行并行啟動(dòng)。
[0107]本實(shí)施例的裝置,用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0108]圖6為本發(fā)明Light OS部署裝置實(shí)施例二的結(jié)構(gòu)圖,本實(shí)施例在上一實(shí)施例的基礎(chǔ)上,進(jìn)一步地,所述分階段處理模塊52對(duì)所述Light OS實(shí)例進(jìn)行賦值的屬性至少包括下述信息:
[0109]所述Light OS實(shí)例的類型、分配給所述Light OS實(shí)例的內(nèi)核標(biāo)識(shí)、分配給所述Light OS實(shí)例的內(nèi)存地址、所述Light OS實(shí)例的內(nèi)核代碼鏡像地址、所述Light OS實(shí)例的狀態(tài)以及所述Light OS實(shí)例的標(biāo)識(shí)。
[0110]具體地址,所述分階段處理模塊52,具體包括:
[0111]第一隊(duì)列處理單元61,用于在所述異步處理多隊(duì)列的第一隊(duì)列中,對(duì)所述各LightOS實(shí)例的類型進(jìn)行賦值,并將賦值成功后的各Light OS實(shí)例輸入到所述異步處理多隊(duì)列的第二隊(duì)列;
[0112]第二隊(duì)列處理單元62,用于在所述異步處理多隊(duì)列的第二隊(duì)列中,根據(jù)所述各Light OS實(shí)例的類型對(duì)所述各Light OS實(shí)例的內(nèi)核和內(nèi)存資源進(jìn)行分配,并將資源分配成功后的各Light OS實(shí)例輸入到所述異步處理多隊(duì)列的第三隊(duì)列;
[0113]第三隊(duì)列處理單元63,用于在所述異步處理多隊(duì)列的第三隊(duì)列中,將所述各LightOS實(shí)例對(duì)應(yīng)的內(nèi)核代碼的鏡像地址分配給所述各Light OS實(shí)例。
[0114]該裝置,還包括:
[0115]第四隊(duì)列處理單元64,用于在所述觸發(fā)啟動(dòng)模塊54觸發(fā)完成分階段異步資源分配后的多個(gè)Light OS實(shí)例啟動(dòng)后,將所述異步處理多隊(duì)列的第三隊(duì)列中完成內(nèi)核代碼鏡像地址分配的各Light OS實(shí)例,輸入到所述異步處理多隊(duì)列的第四隊(duì)列中,并對(duì)所述各LightOS實(shí)例的狀態(tài)以及所述各Light OS實(shí)例的標(biāo)識(shí)進(jìn)行賦值。
[0116]具體地,所述觸發(fā)啟動(dòng)模塊54,具體用于:
[0117]向所述多個(gè)Light OS實(shí)例的處理器發(fā)送處理器間中斷IPI以使所述多個(gè)LightOS實(shí)例根據(jù)自身的標(biāo)識(shí)查詢所述管理表項(xiàng)來并行啟動(dòng)從實(shí)模式到保護(hù)模式的轉(zhuǎn)換;或者,
[0118]向所述多個(gè)Light OS實(shí)例中一個(gè)Light OS實(shí)例的處理器發(fā)送IPI以使所述一個(gè)Light OS實(shí)例根據(jù)自身的標(biāo)識(shí)查詢所述管理表項(xiàng)來并行啟動(dòng)從實(shí)模式到保護(hù)模式的轉(zhuǎn)換后,再向所述多個(gè)Light OS實(shí)例中其他的一個(gè)Light OS實(shí)例的處理器發(fā)送IPI。
[0119]進(jìn)一步地,所述Light OS實(shí)例根據(jù)自身的標(biāo)識(shí)查詢