例三的結(jié)構(gòu)圖;
[0046]圖7為本發(fā)明多內(nèi)核操作系統(tǒng)實例支持多處理器裝置實施例四的結(jié)構(gòu)圖。
【具體實施方式】
[0047]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0048]圖1為本發(fā)明多內(nèi)核操作系統(tǒng)實例支持多處理器方法實施例一的流程圖,本方法的執(zhí)行主體是操作系統(tǒng)實例創(chuàng)建裝置,該裝置可以置于多核操作系統(tǒng)中,如Linux等操作系統(tǒng)。如圖1所示,該方法具體包括:
[0049]步驟101、主操作系統(tǒng)實例根據(jù)獲取到的硬件資源需求描述信息,分配至少兩個處理器資源給從操作系統(tǒng)實例;
[0050]硬件資源可以包括:處理器資源,存儲資源,輸入/輸出I/O資源、網(wǎng)絡(luò)資源等。
[0051]可選地,本步驟中的處理器資源也可以替換為處理器核資源或處理器硬件線程資源,即若一個處理器資源中存在多個核或或處理器硬件線程資源,則主操作系統(tǒng)實例也可以根據(jù)獲取到的硬件資源需求描述信息,分配至少兩個核資源或處理器硬件線程資源給從操作系統(tǒng)。
[0052]主操作系統(tǒng)實例可以定義成重量級操作系統(tǒng)實例Heavy OS實例,一般具有資源分配、回收、虛擬化及協(xié)調(diào)等功能的通用操作系統(tǒng),它是硬件上第一個啟動的操作系統(tǒng)實例,也稱primary操作系統(tǒng)實例;從操作系統(tǒng)實例也可以定義成輕量級操作系統(tǒng)實例Light OS實例,是指后續(xù)啟動的操作系統(tǒng)實例,也稱Secondary操作系統(tǒng)實例。
[0053]需要說明的是,本步驟中,主操作系統(tǒng)實例在為從操作系統(tǒng)實例分配處理器資源時,也同時為從操作系統(tǒng)實例分配相應(yīng)地指定大小的物理內(nèi)存。
[0054]步驟102、所述主操作系統(tǒng)實例從各所述處理器資源上選擇一個處理器以執(zhí)行從操作系統(tǒng)實例的內(nèi)核啟動代碼;
[0055]在所述主操作系統(tǒng)實例分配好多個處理器資源后,比如以N為例,N>1,則從N中處理器資源中選擇其中一個執(zhí)行從操作系統(tǒng)實例的內(nèi)核代碼,可以是選擇N中的第一個,也可以選擇最后一個,也可以根據(jù)一定排序算法選擇其中一個。
[0056]步驟103、選擇的所述處理器在執(zhí)行所述從操作系統(tǒng)實例的內(nèi)核代碼到設(shè)定的多處理器初始化階段時,向分配給從操作系統(tǒng)實例的其他處理器發(fā)送處理器中斷IPI指令;
[0057]本步驟中,處理器中斷(Inter-Processor Interrupt,簡稱IPI)是一種特別的中斷。在對稱多處理器環(huán)境下,它可以被任意一個處理器用來對另一個處理器產(chǎn)生中斷。
[0058]步驟104、分配的其他處理器接收到所述IPI指令后跳轉(zhuǎn)到從操作系統(tǒng)實例設(shè)定的入口代碼地址繼續(xù)執(zhí)行,直到完成全部分配給從操作系統(tǒng)實例的多處理器初始化。
[0059]本步驟中,分配的其他處理器中其中一個接收到所述IPI指令后,跳轉(zhuǎn)到從操作系統(tǒng)實例設(shè)定的入口代碼地址繼續(xù)執(zhí)行完成自身的初始化,完成后,再向其他的處理器發(fā)送IPI指令,依次進(jìn)行,直到主操作系統(tǒng)實例完成所有的處理器資源的初始化。
[0060]本實施例通過主操作系統(tǒng)實例根據(jù)獲取到的硬件資源需求描述信息,在分配的多個處理器資源上創(chuàng)建從操作系統(tǒng),實現(xiàn)在多內(nèi)核操作系統(tǒng)中基于主操作系統(tǒng)動態(tài)創(chuàng)建支持多處理器的從操作系統(tǒng),提高多個操作系統(tǒng)實施例的處理效率和處理器資源的利用率。
[0061]進(jìn)一步地,主操作系統(tǒng)可以根據(jù)實際的用戶程序需求,創(chuàng)建不同的從操作系統(tǒng),t匕如根據(jù)實時性的要求,對并行計算的要求等。需要說明的是,主操作系統(tǒng)和從操作系統(tǒng)可以屬于不同的操作系統(tǒng)。上述技術(shù)方案,使得創(chuàng)建和運(yùn)用從操作系統(tǒng)更加靈活,使得操作系統(tǒng)的處理效率盡可能的最優(yōu)化。
[0062]圖2為本發(fā)明多內(nèi)核操作系統(tǒng)實例支持多處理器方法實施例二的流程圖,本實施例在上一實施例的基礎(chǔ)上增加主操作系統(tǒng)如何獲取硬件資源需求描述信息以及增加構(gòu)建多處理器表現(xiàn)的步驟,如圖2所示,該方法具體包括:
[0063]步驟201、主操作系統(tǒng)實例在運(yùn)行當(dāng)前應(yīng)用程序時,接收所述當(dāng)前應(yīng)用程序發(fā)送的硬件資源需求描述信息;
[0064]可選地,本步驟中,還可以主操作系統(tǒng)實例根據(jù)運(yùn)行的當(dāng)前應(yīng)用程序所需的硬件資源,為所述當(dāng)前應(yīng)用程序生成所述硬件資源需求描述信息。
[0065]需要說明的是,主操作系統(tǒng)實例獲取硬件資源需求描述信息的方式不限于上述兩種,還可以用戶根據(jù)特殊需求情況直接輸入所需資源請求。
[0066]步驟202、所述主操作系統(tǒng)實例根據(jù)所述硬件資源需求描述信息,從可用的處理器資源中選擇至少兩個處理器資源以分配給從操作系統(tǒng)實例;
[0067]可選地,本步驟中,還可以所述主操作系統(tǒng)實例根據(jù)所述硬件資源需求描述信息,釋放當(dāng)前使用的處理器資源,并從釋放的處理器資源中選擇至少兩個處理器資源以分配給從操作系統(tǒng)實例。
[0068]分配給從操作系統(tǒng)實例的處理器資源的獲取也可以有很多種,除上述兩種外,還可以先在可用的處理器資源中選擇,如果還不滿足資源需求,再從當(dāng)前使用的處理器資源中進(jìn)行釋放。釋放的策略也可以根據(jù)優(yōu)先級,也可以根據(jù)滿足需求的匹配度等因素。
[0069]步驟203、所述主操作系統(tǒng)實例在為從操作系統(tǒng)實例分配的物理地址空間里構(gòu)建多處理器表項MP Table,所述MP Table用于描述為所述從操作系統(tǒng)實例分配的處理器資源信息;
[0070]本步驟中,MP Table描述了分配給從操作系統(tǒng)實例的處理器的相關(guān)信息,比如acpi id等,具體可參見intel的多處理器規(guī)范(mp spec)。
[0071]通過將分配給從操作系統(tǒng)實例的處理器相關(guān)信息存儲在MP Table中,以使各從操作系統(tǒng)實例在初始化時,可以讀取MP Table中分配給自身的處理器信息,以便于各從操作系統(tǒng)實例快速初始化,也有利于主操作系統(tǒng)實例對多個從操作系統(tǒng)實例進(jìn)行統(tǒng)一管理和調(diào)度。
[0072]步驟204、所述主操作系統(tǒng)實例從各所述處理器資源上選擇一個處理器以執(zhí)行從操作系統(tǒng)實例的內(nèi)核啟動代碼;
[0073]步驟205、所述主操作系統(tǒng)實例向分配給從操作系統(tǒng)實例的其他處理器配置處理器暫停指令HLT代碼,并使所述其他處理器執(zhí)行所述HLT指令代碼后處于等待接收IPI指令的暫停狀態(tài);
[0074]本步驟中,除步驟204選擇的一個處理器以外的其他處理器將主操作系統(tǒng)實例配置的處理器暫停指令HLT (halt)代碼存放在各個處理器的低地址處,執(zhí)行后使得處理器處于暫停狀態(tài),以等待其他處理器發(fā)送的IPI指令。
[0075]步驟206、選擇的所述處理器在執(zhí)行所述從操作系統(tǒng)實例的內(nèi)核代碼到設(shè)定的多處理器初始化階段時,向分配給從操作系統(tǒng)實例的其他處理器發(fā)送處理器中斷IPI指令;
[0076]步驟207、分配的其他處理器接收到所述IPI指令后跳轉(zhuǎn)到從操作系統(tǒng)實例設(shè)定的入口代碼地址繼續(xù)執(zhí)行,直到完成全部分配給從操作系統(tǒng)實例的多處理器初始化。
[0077]本實施例主操作系統(tǒng)通過多種方式獲取硬件資源需求描述信息,以及增加標(biāo)準(zhǔn)的MP Table用于描述為所述從操作系統(tǒng)實例分配的處理器資源信息,以實現(xiàn)在多內(nèi)核操作系統(tǒng)中,根據(jù)硬件資源需求動態(tài)的創(chuàng)建多操作系統(tǒng)實例,提高系統(tǒng)處理效率。
[0078]圖3為本發(fā)明多內(nèi)核操作系統(tǒng)實例支持多處理器方法實施例三的流程圖,本實施例基于Linux操作系統(tǒng),詳細(xì)描述如何具體實現(xiàn)在主操作系統(tǒng)上動態(tài)創(chuàng)建從操作系統(tǒng),假設(shè)定義主操作系統(tǒng)為Heavy OS,從操作系統(tǒng)為LightOS,處理器資源定義成CPU/Core,如圖3所示,具體步驟包括:
[0079]步驟301、根據(jù)應(yīng)用對運(yùn)算能力及并行性的需求,用戶提供Light OS所需的CPU/Core 數(shù)量 η 給