国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種多核CPU加載Linux操作系統(tǒng)的方法及系統(tǒng)的制作方法

      文檔序號(hào):6607177閱讀:277來(lái)源:國(guó)知局
      專利名稱:一種多核CPU加載Linux操作系統(tǒng)的方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及采用Linux操作系統(tǒng)的多核CPU領(lǐng)域,特別涉及一種多核CPU加載 Linux操作系統(tǒng)的方法及系統(tǒng)。
      背景技術(shù)
      目前多核CPU的應(yīng)用越來(lái)越廣泛,與傳統(tǒng)的單核CPU相比,多核CPU具有更強(qiáng)的并 行處理能力、更高的計(jì)算密度和更低的功耗。在這種架構(gòu)中,多核CPU運(yùn)行操作系統(tǒng)的單一 副本,共享高速緩存、內(nèi)存、I/O總線等資源。目前Linux操作系統(tǒng)的運(yùn)轉(zhuǎn)方式主要有三種非對(duì)稱多處理(AMP,Asymmetric multiprocessing)、胃禾爾 $(SMP, Symmetric multiprocessing) > M^n ^ ^hS (BMP, Bound multiprocessing)。非對(duì)稱多處理的方式中,每個(gè)CPU內(nèi)核運(yùn)行一個(gè)獨(dú)立的操作系 統(tǒng)或同一操作系統(tǒng)的拷貝。對(duì)稱多處理的方式中,由一個(gè)操作系統(tǒng)統(tǒng)一管理所有的CPU內(nèi) 核,進(jìn)程并不與某一個(gè)特定內(nèi)核相綁定。混合多處理的方式基于對(duì)稱多處理,由一個(gè)操作系 統(tǒng)統(tǒng)一管理所有的CPU內(nèi)核,但是進(jìn)程可以與某一個(gè)特定內(nèi)核相綁定。這三種方式各有優(yōu)缺點(diǎn)。非對(duì)稱多處理主要用于傳統(tǒng)的單核CPU運(yùn)行環(huán)境,一個(gè) 進(jìn)程總是運(yùn)行在同一個(gè)內(nèi)核中,在多核CPU上,容易導(dǎo)致一個(gè)內(nèi)核要么沒(méi)有被充分利用,要 么被利用過(guò)度。對(duì)稱多處理由操作系統(tǒng)實(shí)時(shí)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài),在多核之間合理分配資 源,使負(fù)載能夠均勻地分配到所有內(nèi)核之上,但可能導(dǎo)致一部分系統(tǒng)資源浪費(fèi)在頻繁的進(jìn) 程切換之上。混合多處理吸取了前兩種方式的優(yōu)點(diǎn),在以對(duì)稱多處理方式運(yùn)行的Linux操 作系統(tǒng)上,通過(guò)進(jìn)程綁定可以使進(jìn)程只能運(yùn)行在同一個(gè)內(nèi)核中。本發(fā)明的發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn)在采用多核CPU的領(lǐng)域,通常將多 核劃分為控制CPU和數(shù)據(jù)CPU??刂艭PU是在多個(gè)CPU以SMP或BMP方式運(yùn)行Linux操作 系統(tǒng)時(shí),用于處理較復(fù)雜的業(yè)務(wù),并控制、維護(hù)、管理整個(gè)操作系統(tǒng)的CPU??刂艭PU運(yùn)行有 關(guān)系統(tǒng)管理方面的進(jìn)程,支持完整的Linux操作系統(tǒng),能夠處理所有復(fù)雜的業(yè)務(wù),但性能較 差。數(shù)據(jù)CPU只專注于數(shù)據(jù)處理,注重的是處理的性能,要求一定時(shí)間內(nèi)處理盡可能多的業(yè) 務(wù),往往只運(yùn)行一個(gè)任務(wù)。故而對(duì)于某些注重性能的數(shù)據(jù)處理,需要放到數(shù)據(jù)核上去執(zhí)行。 這就對(duì)Linux操作系統(tǒng)在多核CPU上的加載提出了兩點(diǎn)要求1)所有內(nèi)核之間共享內(nèi)存、全局?jǐn)?shù)據(jù)結(jié)構(gòu)、API等資源;2)控制CPU、數(shù)據(jù)CPU之間不能相互干擾。上述要求1)可通過(guò)SMP方式實(shí)現(xiàn)。上述要求2)理論上可通過(guò)BMP方式實(shí)現(xiàn),即 采用進(jìn)程與CPU綁定的方式,但利用這種BMP的方式實(shí)現(xiàn)時(shí)需要將所有的進(jìn)程一一和CPU 進(jìn)行綁定,這樣操作起來(lái)十分繁瑣、復(fù)雜,維護(hù)起來(lái)也十分困難,且降低了系統(tǒng)的可維護(hù)性、 可移植性、和可用性。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種改進(jìn)的多核CPU加載Linux操作系統(tǒng)的方法,該方法使
      4得控制核和數(shù)據(jù)核之間不會(huì)相互影響,且無(wú)需將所有的進(jìn)程一一與CPU進(jìn)行綁定。為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種多核CPU加載Linux操作系統(tǒng)的方法,所述 多核CPU包括至少一個(gè)控制核和至少一個(gè)數(shù)據(jù)核,其中,包括如下步驟步驟A,所述至少一個(gè)控制核中的一個(gè)作為主核加載Linux操作系統(tǒng),并在初始化 過(guò)程中,喚醒所有從核,使所有從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);步驟B,所述主核設(shè)置CPU位圖,所述CPU位圖中只包括控制核;步驟C,所述主核執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)所述CPU位圖中 包括除所述主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)所述除主核外的其它控制核 進(jìn)行二次喚醒;步驟D,所述主核使所述至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。優(yōu)選地,所述的方法,其中,所述步驟C之后,所述步驟D之前還包括所述主核分配內(nèi)存空間,所述內(nèi)存空間用于作為所述至少一個(gè)數(shù)據(jù)核的堆棧和全 局?jǐn)?shù)據(jù)區(qū);所述主核分別配置所述至少一個(gè)數(shù)據(jù)核中每個(gè)數(shù)據(jù)核的堆棧指針、全局?jǐn)?shù)據(jù)指針 和入口函數(shù)。優(yōu)選地,所述的方法,其中,所述步驟D之后,還包括步驟E,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)數(shù)據(jù)核加載預(yù)定的業(yè)務(wù)處理進(jìn)程。優(yōu)選地,所述的方法,其中,所述步驟D之后,所述步驟E之前,還包括所述至少一個(gè)數(shù)據(jù)核中的每個(gè)數(shù)據(jù)核分別進(jìn)入各自的入口函數(shù),并在進(jìn)入各自的 入口函數(shù)后,配置本核的中斷、快速重編址緩沖器、和/或異常處理函數(shù)。另一方面,提供一種多核CPU系統(tǒng),其中,包括至少一個(gè)控制核和至少一個(gè)數(shù)據(jù) 核,其中,作為主核的控制核包括第一處理模塊,用于加載Linux操作系統(tǒng),并在初始化過(guò)程中,喚醒所有從核,使 所有從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);位圖設(shè)置模塊,用于設(shè)置CPU位圖,使所述CPU位圖中只包括控制核;第二處理模塊,用于執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)所述CPU位圖 中包括除所述主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)所述除主核外的其它控制 核進(jìn)行二次喚醒;第三處理模塊,用于使所述至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。優(yōu)選地,所述的多核CPU系統(tǒng),其中,所述第三處理模塊還包括分配模塊,用于分配內(nèi)存空間,所述內(nèi)存空間用于作為所述至少一個(gè)數(shù)據(jù)核CPU 的堆棧和全局?jǐn)?shù)據(jù)區(qū);第一配置模塊,用于配置所述至少一個(gè)數(shù)據(jù)核中每個(gè)數(shù)據(jù)核的堆棧指針、全局?jǐn)?shù) 據(jù)指針和入口函數(shù)。優(yōu)選地,所述的多核CPU系統(tǒng),其中,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)包括第四處理模塊,用于加載預(yù)定的業(yè)務(wù)處理進(jìn)程。優(yōu)選地,所述的多核CPU系統(tǒng),其中,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)還包括第二配置模塊,用于在進(jìn)入各自的入口函數(shù)后,加載預(yù)定的業(yè)務(wù)處理進(jìn)程前,配置 本核的中斷、快速重編址緩沖器、和/或異常處理函數(shù)。
      本發(fā)明的技術(shù)效果在于通過(guò)在主核加載Linux操作系統(tǒng)、并首次喚醒所有從核進(jìn)入死循環(huán)狀態(tài)后,設(shè)置 CPU位圖,使得CPU位圖中只包括控制核,這樣在主核執(zhí)行SMP初始化時(shí),只會(huì)以SMP的方式 二次喚醒其它控制核,而不會(huì)影響到數(shù)據(jù)核;對(duì)于數(shù)據(jù)核,主核通過(guò)使每個(gè)數(shù)據(jù)核進(jìn)行各自 的入口函數(shù)實(shí)現(xiàn)二次喚醒。這樣,所有的CPU啟動(dòng)完畢后,所有的CPU只需加載一個(gè)Linux 操作系統(tǒng)內(nèi)核,且控制核和數(shù)據(jù)核之間不會(huì)相互影響,數(shù)據(jù)核能不受Linux操作系統(tǒng)的統(tǒng) 一管理,而是只運(yùn)行自身的數(shù)據(jù)處理流程。與現(xiàn)有的BMP技術(shù)相比,本發(fā)明的方法及系統(tǒng)無(wú) 需將所有的進(jìn)程一一和CPU進(jìn)行綁定,提高了 Linux系統(tǒng)的靈活性、易用性和可維護(hù)性,且 使得多核之間的劃分也更加清晰明了。


      圖1為本發(fā)明一實(shí)施例的多核CPU加載Linux操作系統(tǒng)的方法的流程示意圖;圖2為本發(fā)明另一實(shí)施例的多核CPU加載Linux操作系統(tǒng)的方法中,多核CPU的 劃分示意圖;圖3為本發(fā)明另一實(shí)施例的多核CPU加載Linux操作系統(tǒng)的方法的流程示意圖。
      具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對(duì) 本發(fā)明進(jìn)行詳細(xì)描述。圖1為本發(fā)明實(shí)施例的多核CPU加載Linux操作系統(tǒng)的方法的流程示意圖。其中, 多核CPU包括至少一個(gè)控制核和至少一個(gè)數(shù)據(jù)核;數(shù)據(jù)核,可以包括多個(gè)CPU,每個(gè)CPU可 設(shè)定只運(yùn)行一個(gè)任務(wù),用于快速的處理預(yù)定的某項(xiàng)業(yè)務(wù)。加載Linux操作系統(tǒng)的過(guò)程中,主 核即主CPU,是第一個(gè)加載Linux操作系統(tǒng)的CPU,完成主要的系統(tǒng)配置、初始化動(dòng)作,負(fù)責(zé) 喚醒其他CPU。從核即從CPU,包括除主核之外的CPU。如圖1,該實(shí)施例的多核CPU加載 Linux操作系統(tǒng)的方法包括如下步驟步驟101,至少一個(gè)控制核中的一個(gè)作為主核加載Linux操作系統(tǒng),并在初始化過(guò) 程中,喚醒所有從核、使所有從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);步驟102,主核設(shè)置CPU位圖,CPU位圖中只包括控制核;CPU位圖為通過(guò)一個(gè)變量 表示多核CPU的在位情況,此變量的一個(gè)比特(bit)對(duì)應(yīng)一個(gè)CPU ;步驟103,主核執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)CPU位圖中包括除 主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)除主核外的其它控制核進(jìn)行二次喚醒;該步驟中,主核將按照SMP的方式對(duì)CPU位圖中包含的CPU加載Linux操作系統(tǒng), 由于CPU位圖中只包含控制核,則主核只對(duì)控制核按照SMP的方式記載Linux操作系統(tǒng),而 數(shù)據(jù)核仍保持原來(lái)的死循環(huán)狀態(tài);步驟104,主核使至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。本發(fā)明實(shí)施例的方法,在主核加載Linux操作系統(tǒng)、并喚醒從核進(jìn)入死循環(huán)狀態(tài) 后,通過(guò)設(shè)置CPU位圖,使CPU位圖中只包含控制核而不包含數(shù)據(jù)核,這樣主核在執(zhí)行Linux 系統(tǒng)的SMP初始化后,并對(duì)CPU位圖中的CPU按照SMP的方式加載Linux時(shí),由于CPU位圖 中只包含控制核,所以CPU只會(huì)對(duì)控制核加載Linux操作系統(tǒng),Linux操作系統(tǒng)只能統(tǒng)一管理所有的控制核,而無(wú)法對(duì)數(shù)據(jù)核進(jìn)行管理。而對(duì)于數(shù)據(jù)核,則通過(guò)使其進(jìn)入對(duì)應(yīng)的入口函 數(shù),進(jìn)而進(jìn)行二次喚醒,數(shù)據(jù)核進(jìn)入對(duì)應(yīng)的入口函數(shù)后,即可啟動(dòng)預(yù)定的業(yè)務(wù)進(jìn)程了。這樣, 保證了數(shù)據(jù)核能夠?qū)崿F(xiàn)數(shù)據(jù)核只運(yùn)行一個(gè)任務(wù),快速處理某項(xiàng)業(yè)務(wù)。與現(xiàn)有的BMP技術(shù)相 比,本發(fā)明的方法數(shù)據(jù)核不受Linux的統(tǒng)一管理,從而無(wú)需將所有的進(jìn)程一一和CPU進(jìn)行綁 定,提高了 Linux系統(tǒng)的靈活性、易用性和可維護(hù)性,且使得多核之間的劃分也更加清晰明 了。優(yōu)選地,本發(fā)明實(shí)施例的方法中,步驟103之后,步驟104之前還包括所述主核分配內(nèi)存空間,所述內(nèi)存空間用于作為所述至少一個(gè)數(shù)據(jù)核的堆棧和全 局?jǐn)?shù)據(jù)區(qū);所述主核分別配置所述至少一個(gè)數(shù)據(jù)核中每個(gè)數(shù)據(jù)核的堆棧指針、全局?jǐn)?shù)據(jù)指針 和入口函數(shù)。優(yōu)選地,本發(fā)明實(shí)施例的方法中,步驟104之后,還包括步驟105,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)數(shù)據(jù)核加載預(yù)定的業(yè)務(wù)處理進(jìn)程。優(yōu)選地,本發(fā)明實(shí)施例的方法中,步驟104之后,步驟105之前,還包括所述至少一個(gè)數(shù)據(jù)核中的每個(gè)數(shù)據(jù)核分別進(jìn)入各自的入口函數(shù),并在進(jìn)入各自的 入口函數(shù)后,配置本核的中斷、快速重編址緩沖器、和/或異常處理函數(shù)。下面以一具體例子來(lái)對(duì)本發(fā)明實(shí)施例的方法進(jìn)行說(shuō)明。該例中,以圖2所示的4 核CPU為例。如圖2,該例中,CPUO和CPUl為控制核;CPU2和CPU3為數(shù)據(jù)核。需要說(shuō)明 是,本發(fā)明的方法不僅限于該例所示的4核CPU,本發(fā)明中描述的原理和方法同樣可以實(shí)現(xiàn) 在其他核數(shù)的多核CPU上,同樣適用于以其他方法分配的多核CPU上。如圖3,該實(shí)施例的 多核CPU加載Linux操作系統(tǒng)的方法包括如下步驟步驟301,作為主核的控制核CPU加載Linux操作系統(tǒng),首次喚醒從核。具體地,控制核CPUO作為主核即主CPU,加載Linux操作系統(tǒng),示例性地,CPUO按 照現(xiàn)有正常流程加載Linux操作系統(tǒng),在初始化過(guò)程中,首次喚醒其他作為從核的CPU以使 從核進(jìn)入預(yù)定的死循環(huán)的狀態(tài),這些從核等待主核在后續(xù)的啟動(dòng)過(guò)程中對(duì)它們進(jìn)行二次喚 醒。然后,主核設(shè)置CPU位圖,使位圖中只包含控制核即控制CPU,該本例中為只包含CPUO 和CPU1。示例性地,主核通過(guò)加載的Linux操作系統(tǒng)設(shè)置CPU位圖。CPU位圖可不包含全 部的控制核,具體地CPU位圖中具體包含哪些控制核由Linux操作系統(tǒng)設(shè)置。CPU位圖用于 通過(guò)一個(gè)變量表示多核CPU的在位情況,此變量的一個(gè)比特(bit)對(duì)應(yīng)一個(gè)CPU。CPU位圖 的比特位用于標(biāo)識(shí)出CPU的屬性。示例性地,CPU位圖為二進(jìn)制變量,變量的每一比特與一 CPU對(duì)應(yīng),該比特的取值標(biāo)識(shí)出對(duì)應(yīng)CPU的一個(gè)屬性。本發(fā)明實(shí)施例通過(guò)以該方式設(shè)置CPU 位圖,確保了 Linux進(jìn)程調(diào)度時(shí),不會(huì)將控制CPU的進(jìn)程調(diào)度到數(shù)據(jù)CPU上。示例性地,CPU位圖cpu_possible_map中的每一比特用于標(biāo)識(shí)對(duì)應(yīng)的CPU是否支 持熱插拔,如某一 CPU支持熱插拔,則該CPU對(duì)應(yīng)的比特位取值為1,否則,取值為0,CPU位 圖cpu_possible_map示出了系統(tǒng)中支持熱插拔的CPU的在位情況;CPU位圖cpu_present_ map中的每一比特用于標(biāo)識(shí)對(duì)應(yīng)的CPU當(dāng)前是否已插入,如某一 CPU已插入,則cpu_ present_map中該CPU對(duì)應(yīng)的比特位取值為1,否則,取值為0,該CPU位圖cpu_present_ map示出了當(dāng)前已插入的CPU的在位情況,已插入的CPU可以處于在線狀態(tài)也可以處于離線 狀態(tài);CPU位圖Cpu_oneline_map中的每一比特用于標(biāo)識(shí)對(duì)應(yīng)的已插入的CPU是否處于在線狀態(tài),如某一已插入的CPU處于在線狀態(tài),則cpu_oneline_map中該CPU對(duì)應(yīng)的比特位取 值為1,否則,為0,cpu_oneline_map為cpu_present_map的子集,示出了當(dāng)前已插入的CPU 中、在線的CPU的在位情況。該例中,上述三個(gè)CPU位圖中均不包含數(shù)據(jù)核。CPU位圖中具 體包含哪些控制核由Linux操作系統(tǒng)設(shè)置。對(duì)于正常的SMP流程,不發(fā)生熱插拔,啟動(dòng)完成 后,這三個(gè)位圖變量標(biāo)識(shí)的CPU位圖相等。上述三個(gè)CPU位圖只是示例性地,并不用于限制 本發(fā)明。本發(fā)明的其它實(shí)施例中,當(dāng)存在其它CPU位圖時(shí),主核設(shè)置的CPU位圖包括存在的 所有CPU位圖。步驟302,在主核上啟動(dòng)SMP Linux。具體地,控制核CPUO執(zhí)行到SMP初始化時(shí),因?yàn)椴襟E301中已經(jīng)改變了 CPU位圖, 所以主核只能看到除主核外的其它控制核,該例中,CPUO只能看到CPU1,這樣CPUO將按照 標(biāo)準(zhǔn)的SMP方式喚醒CPU1,即打破第一步中CPUl的死循環(huán)等待狀態(tài),使之完成SMP的初始 化。這樣CPUl啟動(dòng)完成后,將和CPUO—起以SMP方式運(yùn)行Linux。而此時(shí),數(shù)據(jù)核CPU2和 CPU3仍處于死循環(huán)等待的狀態(tài)。步驟303,主核二次喚醒數(shù)據(jù)核。具體地,主核CPUO分配內(nèi)存空間,該內(nèi)存空間用于作為數(shù)據(jù)核CPU2和CPU3的堆 棧和全局?jǐn)?shù)據(jù)區(qū)。分別配置各數(shù)據(jù)核CPU2和CPU3的堆棧指針、全局?jǐn)?shù)據(jù)指針和入口函數(shù)。 這樣做的目的是使數(shù)據(jù)核和控制核的堆棧分離,不再受Linux的統(tǒng)一管理。從而,主核打破 了數(shù)據(jù)核CPU2和CPU3的死循環(huán),使它們進(jìn)入各自的入口函數(shù),實(shí)現(xiàn)了對(duì)數(shù)據(jù)核的二次喚醒。步驟304,數(shù)據(jù)核啟動(dòng)單進(jìn)程;具體地,數(shù)據(jù)核CPU2和CPU3分別進(jìn)入各自的入口函數(shù),配置本核的中斷、快速 重編址緩沖器TLB、異常處理函數(shù)等;最后啟動(dòng)單進(jìn)程即加載預(yù)定的業(yè)務(wù)處理進(jìn)程,示例性 地,通過(guò)進(jìn)入預(yù)定的數(shù)據(jù)處理函數(shù)來(lái)啟動(dòng)單進(jìn)程,該數(shù)據(jù)處理函數(shù)往往是一個(gè)死循環(huán)流程。至此,所有CPU啟動(dòng)完畢,完全滿足如下目標(biāo)多核CPU加載同一個(gè)Linux操作系 統(tǒng)內(nèi)核;控制CPU =CPUO和CPUl以SMP方式運(yùn)行Linux ;數(shù)據(jù)CPU :CPU2和CPU3分別運(yùn)行一 個(gè)業(yè)務(wù)進(jìn)程;多核CPU之間能夠共享API、數(shù)據(jù)結(jié)構(gòu)、內(nèi)存等資源;控制CPU上的進(jìn)程不會(huì)調(diào) 度到數(shù)據(jù)CPU上。綜上所述,多核CPU利用本發(fā)明實(shí)施例的方法加載Linux操作系統(tǒng)后,所有的CPU 只需加載一個(gè)Linux操作系統(tǒng)內(nèi)核,CPUO和CPUl作為控制核以SMP方式運(yùn)行Linux,CPU2 和CPU3作為數(shù)據(jù)核只運(yùn)行各自對(duì)應(yīng)的一個(gè)數(shù)據(jù)處理進(jìn)程。由于數(shù)據(jù)核只運(yùn)行一個(gè)簡(jiǎn)單的 任務(wù),不會(huì)發(fā)生進(jìn)程上下文切換,從而能夠顯著的增加數(shù)據(jù)CPU的處理能量;控制核、數(shù)據(jù) 核之間不會(huì)相互影響,分別有自己獨(dú)立的中斷和異常處理流程;同時(shí),由于軟件層面控制 核、數(shù)據(jù)核的代碼鏈接在一起,從而能夠共享全局?jǐn)?shù)據(jù)、內(nèi)存、API等資源,極大地提高了代 碼開發(fā)的效率。本發(fā)明實(shí)施例還提供了一種多核CPU系統(tǒng),包括至少一個(gè)控制核和至少一個(gè)數(shù) 據(jù)核,其中,作為主核的控制核包括第一處理模塊,用于加載Linux操作系統(tǒng),并在初始化過(guò)程中,喚醒所有從核、使 所有從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);位圖設(shè)置模塊,用于設(shè)置CPU位圖,使所述CPU位圖中只包括控制核;
      第二處理模塊,用于執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)所述CPU位圖 中包括除所述主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)所述除主核外的其它控制 核進(jìn)行二次喚醒;第三處理模塊,用于使所述至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。優(yōu)選地,所述的多核CPU系統(tǒng),其中,所述第三處理模塊還包括分配模塊,用于分配內(nèi)存空間,所述內(nèi)存空間用于作為所述至少一個(gè)數(shù)據(jù)核CPU 的堆棧和全局?jǐn)?shù)據(jù)區(qū);第一配置模塊,用于配置所述至少一個(gè)數(shù)據(jù)核中每個(gè)數(shù)據(jù)核的堆棧指針、全局?jǐn)?shù) 據(jù)指針和入口函數(shù)。優(yōu)選地,所述的多核CPU系統(tǒng),其中,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)包括第四處理模塊,用于加載預(yù)定的業(yè)務(wù)處理進(jìn)程。優(yōu)選地,所述的多核CPU系統(tǒng),其中,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)還包括第二配置模塊,用于在進(jìn)入各自的入口函數(shù)后,加載預(yù)定的業(yè)務(wù)處理進(jìn)程前,配置 本核的中斷、快速重編址緩沖器、和/或異常處理函數(shù)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人 員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng) 視為本發(fā)明的保護(hù)范圍。
      權(quán)利要求
      一種多核CPU加載Linux操作系統(tǒng)的方法,所述多核CPU包括至少一個(gè)控制核和至少一個(gè)數(shù)據(jù)核,其特征在于,包括如下步驟步驟A,所述至少一個(gè)控制核中的一個(gè)作為主核加載Linux操作系統(tǒng),并在初始化過(guò)程中,喚醒所有從核,使所有從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);步驟B,所述主核設(shè)置CPU位圖,所述CPU位圖中只包括控制核;步驟C,所述主核執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)所述CPU位圖中包括除所述主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)所述除主核外的其它控制核進(jìn)行二次喚醒;步驟D,所述主核使所述至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C之后,所述步驟D之前還包括 所述主核分配內(nèi)存空間,所述內(nèi)存空間用于作為所述至少一個(gè)數(shù)據(jù)核的堆棧和全局?jǐn)?shù)據(jù)區(qū);所述主核分別配置所述至少一個(gè)數(shù)據(jù)核中每個(gè)數(shù)據(jù)核的堆棧指針、全局?jǐn)?shù)據(jù)指針和入 口函數(shù)。
      3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述步驟D之后,還包括 步驟E,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)數(shù)據(jù)核加載預(yù)定的業(yè)務(wù)處理進(jìn)程。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟D之后,所述步驟E之前,還包括所述至少一個(gè)數(shù)據(jù)核中的每個(gè)數(shù)據(jù)核分別進(jìn)入各自的入口函數(shù),并在進(jìn)入各自的入口 函數(shù)后,配置本核的中斷、快速重編址緩沖器、和/或異常處理函數(shù)。
      5. 一種多核CPU系統(tǒng),其特征在于,包括至少一個(gè)控制核和至少一個(gè)數(shù)據(jù)核,其中,作 為主核的控制核包括第一處理模塊,用于加載Linux操作系統(tǒng),并在初始化過(guò)程中,喚醒所有從核,使所有 從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);位圖設(shè)置模塊,用于設(shè)置CPU位圖,使所述CPU位圖中只包括控制核; 第二處理模塊,用于執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)所述CPU位圖中包 括除所述主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)所述除主核外的其它控制核進(jìn) 行二次喚醒;第三處理模塊,用于使所述至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。
      6.根據(jù)權(quán)利要求5所述的多核CPU系統(tǒng),其特征在于,所述第三處理模塊還包括 分配模塊,用于分配內(nèi)存空間,所述內(nèi)存空間用于作為所述至少一個(gè)數(shù)據(jù)核CPU的堆棧和全局?jǐn)?shù)據(jù)區(qū);第一配置模塊,用于配置所述至少一個(gè)數(shù)據(jù)核中每個(gè)數(shù)據(jù)核的堆棧指針、全局?jǐn)?shù)據(jù)指 針和入口函數(shù)。
      7.根據(jù)權(quán)利要求5或6所述的多核CPU系統(tǒng),其特征在于,所述至少一個(gè)數(shù)據(jù)核中的每 個(gè)包括第四處理模塊,用于加載預(yù)定的業(yè)務(wù)處理進(jìn)程。
      8.根據(jù)權(quán)利要求7所述的多核CPU系統(tǒng),其特征在于,所述至少一個(gè)數(shù)據(jù)核中的每個(gè)還 包括第二配置模塊,用于在進(jìn)入各自的入口函數(shù)后,加載預(yù)定的業(yè)務(wù)處理進(jìn)程前,配置本核 的中斷、快速重編址緩沖器、和/或異常處理函數(shù)。
      全文摘要
      本發(fā)明提供一種多核CPU加載Linux操作系統(tǒng)的方法及系統(tǒng),多核CPU包括至少一個(gè)控制核和至少一個(gè)數(shù)據(jù)核,該方法包括至少一個(gè)控制核中的一個(gè)作為主核加載Linux操作系統(tǒng),并在初始化過(guò)程中,喚醒所有從核、使所有從核進(jìn)入預(yù)定的死循環(huán)狀態(tài);主核設(shè)置CPU位圖,CPU位圖中只包括控制核;主核執(zhí)行Linux操作系統(tǒng)的對(duì)稱多處理初始化,并當(dāng)CPU位圖中包括除主核外的其它控制核時(shí),按照對(duì)稱多處理的方式對(duì)除主核外的其它控制核進(jìn)行二次喚醒;主核使至少一個(gè)數(shù)據(jù)核中的每個(gè)進(jìn)入各自的入口函數(shù)。利用本發(fā)明進(jìn)行多核CPU的Linux操作系統(tǒng)加載,在所有CPU啟動(dòng)完畢后,控制核和數(shù)據(jù)核之間不會(huì)相互影響。
      文檔編號(hào)G06F15/16GK101901159SQ201010244460
      公開日2010年12月1日 申請(qǐng)日期2010年8月3日 優(yōu)先權(quán)日2010年8月3日
      發(fā)明者李弘博 申請(qǐng)人:中興通訊股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1