專利名稱:一種應(yīng)用程序的加載方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)技術(shù),特別涉及一種應(yīng)用程序的加載方法及裝置。
背景技術(shù):
隨著微處理器技術(shù)的不斷發(fā)展,出現(xiàn)了多核處理器。簡單說來,多核處 理器就是在同一個硅晶片上集成了多個獨(dú)立物理核心,在實(shí)際工作中,多顆 核心能夠分別獨(dú)立完成工作,從而達(dá)到了性能倍增的目的。
目前采用的多核處理器系統(tǒng)中,大多選用處理器中的一個核為主核,其 承擔(dān)主要的資源管理和復(fù)雜邏輯運(yùn)算,其余的核作為從核,其承擔(dān)邏輯簡單 但數(shù)據(jù)量大的工作。通常,主核的位置是關(guān)鍵的,當(dāng)主核被復(fù)位時,所有的 從核也會相應(yīng)地被復(fù)位,而當(dāng)其中的一個或多個從核被復(fù)位時,主核可以不 被復(fù)位,如此,可以使主核運(yùn)行一些不需要經(jīng)常重啟的應(yīng)用程序,而從核運(yùn) 行一些需要經(jīng)常重啟的應(yīng)用程序,比如一些與業(yè)務(wù)相關(guān)的應(yīng)用程序。
對于多核處理器來說,需要實(shí)現(xiàn)各個核的應(yīng)用程序的加載。由于多核處 理器上電后,只有主核處于激活狀態(tài),因此,各個核并不是獨(dú)立地加載各自
的應(yīng)用程序?,F(xiàn)有的多核處理器中實(shí)現(xiàn)應(yīng)用程序的加載方法主要包括主核 從復(fù)位異常向量所指向的地址空間中讀取啟動程序(BootRom: Boot Read only memory),該啟動程序適用于主核的啟動,根據(jù)讀取的啟動程序?qū)Ρ?要的硬件進(jìn)行初始化;之后,主核加載自身的應(yīng)用程序,并為所有的從核加 載對應(yīng)的應(yīng)用程序,與此同時,所有的從核都處于睡眠狀態(tài);當(dāng)主核加載完 自身和所有的從核的應(yīng)用程序之后,并在引導(dǎo)自身的應(yīng)用程序之前,主核喚 醒其他處于睡眠狀態(tài)的從核。從核在被喚醒后,根據(jù)預(yù)設(shè)的應(yīng)用程序入口和 主核、從核的對應(yīng)關(guān)系跳轉(zhuǎn)到其對應(yīng)的應(yīng)用程序入口。如此,實(shí)現(xiàn)了多核系統(tǒng)中應(yīng)用程序的加載操作。
可見,現(xiàn)有技術(shù)的上述方法中,所有從核的應(yīng)用程序都是由主核加載的, 這大大增加了主核的負(fù)荷。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種應(yīng)用程序的加載方法和裝置,有利于降低 主核的負(fù)荷。
一種應(yīng)用程序的加載方法,包括
主核將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動程序的地址信
自
主核喚醒從核,并將啟動程序的地址信息通知/人核;
從核才艮據(jù)所述啟動程序的地址信息執(zhí)行所述啟動程序,并加載對應(yīng)的應(yīng)
用程序。
一種應(yīng)用程序的加載裝置,該裝置應(yīng)用于包含存儲介質(zhì)和內(nèi)存的多核系統(tǒng) 中,包括搬移單元、喚醒單元、通知單元、執(zhí)行單元和從核加載單元;其中,
所述搬移單元用于將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動 程序的地址信息;
所述喚醒單元用于喚醒多核系統(tǒng)中的從核,在執(zhí)行喚醒操作后發(fā)送喚醒通 ^F^合-斤iiit^口,iL;
所述通知單元用于接收所述喚醒通知后,將所述搬移單元獲得的啟動程序 的地址信息通知所述執(zhí)行單元;
所述執(zhí)行單元用于根據(jù)所述通知單元通知的啟動程序的地址信息執(zhí)行啟動 程序,在執(zhí)行啟動程序后,發(fā)送加載通知給所述從核加載單元;
所述從核加載單元用于接收所述加載通知后,為所述喚醒單元喚醒的從 核加載對應(yīng)的應(yīng)用程序。
由上述方案可知,本發(fā)明提供的應(yīng)用程序的加載方法和加載裝置中,主 核將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動程序的地址信息;主核喚醒從核,并將啟動程序的地址信息通知給從核;從核根據(jù)所述啟動程
序的地址信息執(zhí)行所述啟動程序,并加載自身對應(yīng)的應(yīng)用程序,從而實(shí)現(xiàn)了 從核不依賴于主核為其加載其對應(yīng)的應(yīng)用程序,而是自身自由、獨(dú)立加載其 對應(yīng)的應(yīng)用程序,進(jìn)而避免了現(xiàn)有技術(shù)中需要主核為所有的從核加載應(yīng)用程 序的操作,大大降低了主核的負(fù)荷。
圖r為本發(fā)明實(shí)施例提供的 一 種應(yīng)用程序的加載流程圖; 圖2為本發(fā)明實(shí)施例提供的應(yīng)用程序的加載方法的詳細(xì)流程圖; 圖3為本發(fā)明實(shí)施例提供的應(yīng)用程序的加載方法的另一詳細(xì)流程圖; 圖4為本發(fā)明實(shí)施例提供的多核系統(tǒng)中應(yīng)用程序的加載方法的詳細(xì)流 程圖5為本發(fā)明實(shí)施例提供的應(yīng)用程序的加載裝置的結(jié)構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明 進(jìn)4亍詳細(xì)4苗述。
啟動程序適用于硬件的啟動,其通常存儲在存儲容量相對小的存儲介質(zhì) 中,其中,該存儲介質(zhì)為閃存(Flash),本發(fā)明實(shí)施例對多核處理器的特點(diǎn) 進(jìn)行分析,提出了一種新型的加載應(yīng)用程序的方法,該方法適用于多核系統(tǒng) 中,具體可參見圖1所示。
參見圖1,圖1為本發(fā)明實(shí)施例提供的一種應(yīng)用程序的加載流程圖。如 圖l所示,該流程可包括以下步驟
步驟IOI,主核將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動 程序的地址信息。
通常,針對多核處理器,主核的個數(shù)一般只有一個。
這里,啟動程序是存放在存儲介質(zhì)上的,其中,該存儲介質(zhì)可為Flash。
8針對每一個核,當(dāng)其復(fù)位時,都需要獲取啟動程序。本領(lǐng)域技術(shù)人員知道, 在多核處理器上電后,只有主核處于激活狀態(tài),而其余的從核都處于睡眠狀
態(tài),因此,當(dāng)多核處理器上電后,主核會主動將Flash存儲的啟動程序搬移
到內(nèi)存中,獲得該啟動程序的地址信息。
步驟102,主核喚醒從核,并將啟動程序的地址信息通知從核。
這里,由于當(dāng)多核處理器上電后,主核已將Flash存儲的啟動程序搬移
到內(nèi)存中,因此,當(dāng)從核被主核喚醒后,只需要知道主核將啟動程序搬移到
內(nèi)存上的地址信息即可,無需搬移啟動程序了,因此,通過本步驟,可以使
從核獲知啟動程序的地址信息。
步驟103,從核根據(jù)所述啟動程序的地址信息執(zhí)行啟動程序,并加載對
應(yīng)的應(yīng)用程序。
這里,步驟103的操作可以是在該從核被主核喚醒之后執(zhí)行的,也可以
是在該從核復(fù)位后所執(zhí)行的,本實(shí)施例對此并未限定。
如此,實(shí)現(xiàn)了從核獨(dú)立獲取自身對應(yīng)的應(yīng)用程序的操作。 為使本實(shí)施例更加清楚,下面對本實(shí)施例提出的應(yīng)用程序的加載方法進(jìn)
4亍i羊細(xì)4^述。
參見圖2,圖2為本實(shí)施例提供的應(yīng)用程序的加載方法的詳細(xì)流程圖。 該方法適用于雙核系統(tǒng)或者多核系統(tǒng)中,為簡單描述,本實(shí)施例以雙核系統(tǒng) 比如雙核處理器為例,即主核、從核的個數(shù)各為l個,其中,主核的身份編 號為0,用于運(yùn)行不需要經(jīng)常重啟的應(yīng)用程序,如監(jiān)控網(wǎng)絡(luò)故障(OAM: Operation Administration Maintenance ),從核的身份編號為1,用于運(yùn)行需 要經(jīng)常重啟的應(yīng)用程序,如業(yè)務(wù)處理相關(guān)任務(wù),如圖2所示,該流程可包括 以下步驟
步驟201,雙核處理器上電或整機(jī)復(fù)位。
需要說明的是,由于主核、從核是用戶預(yù)先約定好的,但核本身并不知 道其身份,即不知道其是主核還是從核,進(jìn)而也不知道應(yīng)該執(zhí)行什么操作, 因此,在步驟201中,可進(jìn)一步執(zhí)行身份的確定,即雙核處理器上電或整機(jī)復(fù)位后,確定當(dāng)前處于激活狀態(tài)的核為主核還是從核,具體如何確定可與現(xiàn) 有技術(shù)的操作類似,這里不再贅述。通常,當(dāng)雙核處理器上電或整機(jī)復(fù)位后, 只有主核處于激活狀態(tài),因此,本實(shí)施例中,當(dāng)前處于激活狀態(tài)的核為主核,
該主核執(zhí)行下述步驟202。
步驟202,主核將存儲介質(zhì)上存儲的啟動程序搬移到內(nèi)存上,獲得該啟 動程序的啟動程序入口點(diǎn)。
本實(shí)施例中,主核將啟動程序搬移到內(nèi)存上,可以方便其他從核共享該 啟動程序,進(jìn)而執(zhí)行該啟動程序。另外,啟動程序入口點(diǎn)為啟動程序在內(nèi)存 中的具體地址信息。
步驟203 ,主核執(zhí)行該啟動程序,并對自身內(nèi)部硬件和除從核內(nèi)部的硬 件之外的外圍設(shè)備進(jìn)行初始化。
步驟204,主核加載對應(yīng)的應(yīng)用程序。
這里,由于所有核的啟動程序都存放在內(nèi)存中,為防止多核同時訪問該 啟動程序而造成核與核之間的互斥,因此,針對每一個核,當(dāng)其不需要執(zhí)行 啟動程序之后,可主動放棄對該啟動程序的執(zhí)行權(quán)。本領(lǐng)域技術(shù)人員知道, 主核在加載對應(yīng)的應(yīng)用程序之后,就不再需要繼續(xù)執(zhí)行啟動程序了,因此, 在步驟204中,當(dāng)主核完成加載對應(yīng)的應(yīng)用程序后,可進(jìn)一步包括放棄對 啟動程序的拭J亍權(quán)。
步驟205,判斷當(dāng)前是否需要喚醒從核,如果是,執(zhí)行步驟206,否則, 執(zhí)行步驟213。
這里,由于雙核處理器上電或整機(jī)復(fù)位后,只有主核處于激活狀態(tài),所 有的從核處于睡眠狀態(tài),因此,需要判斷當(dāng)前是否需要喚醒從核,其中,判 斷當(dāng)前是否需要喚醒從核的具體操作可與現(xiàn)有技術(shù)類似,這里不再贅述。
步驟206,主核喚醒從核,將步驟202獲得的啟動程序入口點(diǎn)寫入到共 享內(nèi)存中。
步驟207 ,從核對自身內(nèi)部的硬件進(jìn)行初始化。 這里,上述從核為被主核喚醒的從核。
10由于主核、從核是用戶預(yù)先約定好的,因此,從核自身并不知道其身份,
進(jìn)而也不知道應(yīng)該執(zhí)行什么操作,因此,在步驟207中,當(dāng)從核被主核喚醒 后,該從核還需要確定自身的身份是否為從核,在是的情況下,才執(zhí)行對自 身內(nèi)部的硬件進(jìn)行初始化的操作。
步驟208, 乂人核/人上述共享內(nèi)存中讀取啟動程序入口點(diǎn),并跳轉(zhuǎn)到該啟 動程序入口點(diǎn),執(zhí)行該啟動程序。
通常,可預(yù)先在內(nèi)存中劃分各個核對應(yīng)的訪問位置信息,即設(shè)置各個核與 訪問位置信息的對應(yīng)關(guān)系,其中,該訪問位置信息為經(jīng)過內(nèi)存映射之后的位置 信息,如此,從核根據(jù)設(shè)置各個核與訪問位置信息的對應(yīng)關(guān)系確定其對應(yīng)的訪 問位置信息,之后,通過確定出的訪問位置信息訪問內(nèi)存,并在內(nèi)存中查找啟 動程序的入口點(diǎn),當(dāng)查找到時,跳轉(zhuǎn)到該啟動程序入口點(diǎn),并執(zhí)行該啟動程序 入口點(diǎn)下的啟動程序。
步驟209, /人核加載對應(yīng)的應(yīng)用程序。 如此,實(shí)現(xiàn)了從核獨(dú)立加載其對應(yīng)的應(yīng)用程序的操作。 本領(lǐng)域技術(shù)人員知道,從核在加載自身對應(yīng)的應(yīng)用程序之后,也不再需 要繼續(xù)執(zhí)行啟動程序了,因此,步驟209中,當(dāng)從核完成加載自身對應(yīng)的應(yīng) 用程序之后,還可進(jìn)一步包括放棄對啟動程序的執(zhí)行權(quán)。
需要說明的是,在從核加載應(yīng)用程序后,如果從核一直處于使能狀態(tài), 則該從核還可繼續(xù)執(zhí)行下述步驟210至步驟212。 步驟210,從核引導(dǎo)上述加載的應(yīng)用程序。 步驟211,從核在從核應(yīng)用程序平臺上執(zhí)行相應(yīng)的命令。 步驟212,若從核需要復(fù)位,則返回步驟207,否則,返回步驟211。 如此,實(shí)現(xiàn)了從核在復(fù)位后不需要主核為其加載相應(yīng)的應(yīng)用程序,而是 自己獨(dú)立加載自身的應(yīng)用程序的操作,進(jìn)而大大減輕了主核的負(fù)荷。 步驟213,主核引導(dǎo)應(yīng)用程序。
步驟214,主核在主核應(yīng)用程序平臺上執(zhí)行相應(yīng)的命令。
步驟215,若主核需要復(fù)位,則返回步驟201,否則,返回步驟214。需要說明的是,當(dāng)主核在上電后,若主核一直處于激活狀態(tài),因此,在
喚醒從核之后,并不影響主核后續(xù)的工作,主核還可同時執(zhí)行上述步驟213 至步驟215。
至此,結(jié)束了本實(shí)施例中在多核處理器上電或整機(jī)復(fù)位后所執(zhí)行的完整流程。
需要說明的是,上述實(shí)施例中,主核是采用共享內(nèi)存的形式將啟動程序 入口點(diǎn)通知給從核的。本發(fā)明實(shí)施例中,主核也可采用消息機(jī)制的方式將啟 動程序入口點(diǎn)通知給從核,具體可參見圖3所示。
參見圖3,圖3為本實(shí)施例提供的應(yīng)用程序的加載方法的另一詳細(xì)流程 圖,本實(shí)施例仍以雙核處理器為例,主核的身份編號為O,從核的身份編號 為1,如圖3所示,該流程可包括以下步驟
步驟301與步驟302分別與圖2所示的步驟201和步驟202類似,這里 不再贅述。
步驟303,主核喚醒從核。
步驟304,主核執(zhí)行該啟動程序,并對自身內(nèi)部硬件和除從核內(nèi)部的硬 件之外的外圍設(shè)備進(jìn)行初始化;而從核被主核喚醒后,對自身內(nèi)部的硬件進(jìn) 行初始化,在完成初始化操作后,處于等待狀態(tài)之中。
步驟305,主核加栽對應(yīng)的應(yīng)用程序。
步驟306,主核將啟動程序入口點(diǎn)攜帶在消息中發(fā)送給從核。 需要說明的是,當(dāng)主核在上電后,若主核一直處于激活狀態(tài),因此,在 喚醒從核、并將啟動程序入口點(diǎn)攜帶在消息中發(fā)送給從核之后,并不影響主 核后續(xù)的工作,主核還可同時執(zhí)行下述步驟312至步驟314。
步驟307,從核接收該消息,跳轉(zhuǎn)到該消息攜帶的啟動程序入口點(diǎn),執(zhí) 行該啟動程序。
這里,從核在完成步驟304中的初始化操作后,處于等待的狀態(tài)之中, 直至接收到主核發(fā)送的攜帶啟動程序入口點(diǎn)的消息。
步驟308至步驟310分別與圖2所示的步驟209至步驟210類似,這里不再贅述。
步驟311,判斷從核是否需要復(fù)位,如果是,執(zhí)行步驟312,否則,返
回執(zhí)行步驟310。
步驟312,從核對自身內(nèi)部的硬件進(jìn)行初始化,在完成初始化操作后, 處于等待狀態(tài)之中,直至接收到步驟307中的攜帶啟動程序入口點(diǎn)的消息, 并繼續(xù)執(zhí)行步驟307。
步驟313至步驟315分別與圖2所示的步驟213至步驟215類似,這里 不再贅述。
如此,實(shí)現(xiàn)了本實(shí)施例提供的應(yīng)用程序加載方法的另 一詳細(xì)流程。
需要說明的是,上述圖2和圖3所示的流程都是以雙核系統(tǒng)為例的,即 主核、從核的個數(shù)各為l個。但通常,針對多核處理器,從核的個數(shù)一般為 一個或一個以上。因此,下面對本實(shí)施例提供的多核系統(tǒng)中應(yīng)用程序加載方 法的流程進(jìn)行詳細(xì)描述。
參見圖4,圖4為本發(fā)明實(shí)施例提供的多核系統(tǒng)中應(yīng)用程序加載方法的 詳細(xì)流程圖。本實(shí)施例以多核系統(tǒng)為多核處理器、主核采用共享內(nèi)存的形式 將啟動程序入口點(diǎn)通知給從核為例,則如圖4所示,該流程可包括以下步驟
步驟401,多核處理器上電或整機(jī)復(fù)位。
步驟402至步驟405分別與圖2所示的步驟202和步驟205類似,這里 不再贅述。
步驟406,主核沖艮據(jù)預(yù)設(shè)的次序喚醒從核,并將啟動程序入口點(diǎn)寫入到 共享內(nèi)存中。
這里,預(yù)設(shè)的次序可存在于所有的核中。當(dāng)主核在上述步驟405中確定 出需要喚醒從核時,則本步驟中,主核根據(jù)預(yù)設(shè)的次序確定其要喚醒的從核, 之后,喚醒該確定出的從核,其中,該預(yù)設(shè)的次序是為了避免多個從核同時 i方問啟動禾呈序。
步驟407至步驟408分別與圖2所示的步驟207至步驟208類似,這里 不再贅述。步驟409, /Mv核加載對應(yīng)的應(yīng)用程序,并^4居預(yù)^沒的次序喚醒另一個乂人 核,并將啟動程序的地址信息通知給該另一個從核,該另一個從核在按照上 述從核的操作加載對應(yīng)的應(yīng)用程序后,繼續(xù)按照預(yù)設(shè)的次序執(zhí)行喚醒從核的 操作,直至所有的從核加載對應(yīng)的應(yīng)用程序。
若上述從核在加載對應(yīng)的應(yīng)用程序之后, 一直處于使能狀態(tài),則該從核
還可繼續(xù)執(zhí)行步驟410至步驟412,其具體分別與圖2所示的步驟210至步 驟212類似,這里不再贅述。
若主核一直處于激活狀態(tài),在步驟406中執(zhí)行喚醒從核的操作后,并不 影響主核后續(xù)的工作,主核還可同時執(zhí)行步驟413至步驟415,其具體分別 與圖2所示的步驟213至步驟215類似,這里不再贅述。
可見,上述實(shí)施例中,當(dāng)主核加栽對應(yīng)的應(yīng)用程序之后,便放棄了啟動 程序的執(zhí)行權(quán),然后交給從核去執(zhí)行,這樣就創(chuàng)造了各個核共享同一份代碼 的先決條件,也理智的避開了多個核同時執(zhí)行啟動程序所帶來的互斥問題。
進(jìn)一步地,還可以看出,主核和從核共享同一份啟動程序,并且從核依 賴于主核將啟動程序搬移到內(nèi)存空間,搭建代碼運(yùn)行的環(huán)境,進(jìn)而可以說明 主核和從核共享同 一個運(yùn)行環(huán)境。并且,從核在訪問存儲啟動程序的內(nèi)存時, 是根據(jù)預(yù)先在內(nèi)存中劃分的各個核對應(yīng)的訪問位置信息中確定其對應(yīng)的訪 問位置信息,其中,該訪問位置信息為經(jīng)過內(nèi)存映射之后的位置信息,這樣, 從核無須做內(nèi)存映射,就可以跳轉(zhuǎn)到啟動程序入口點(diǎn),執(zhí)行該啟動程序,如 此,更容易使得從核能夠運(yùn)行于主核所搭建的運(yùn)行環(huán)境中。
以上是對本發(fā)明所提供的方法進(jìn)行的詳細(xì)描述,下面對本發(fā)明所提供的 應(yīng)用程序的加栽裝置進(jìn)行詳細(xì)描述。
參見圖5,圖5為本發(fā)明實(shí)施例提供的應(yīng)用程序的加載裝置的結(jié)構(gòu)圖。本 實(shí)施例中,該應(yīng)用程序的加載裝置可為多核處理器或其他多核裝置,本實(shí)施例 對此并未限定。
優(yōu)選地,如圖5所示,該裝置應(yīng)用于包含存儲介質(zhì)和內(nèi)存的多核系統(tǒng)中, 其中,該多核系統(tǒng)包含主核和從核,則如圖5所示,該裝置可包括搬移單元501、喚醒單元502、通知單元503、執(zhí)行單元504和從核加載單元505。
其中,搬移單元501用于將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得 該啟動程序的地址信息。
喚醒單元502用于喚醒多核系統(tǒng)中的從核,在執(zhí)行喚醒操作后發(fā)送喚醒通 知給通知單元503。
通知單元503用于接收上述喚醒通知,將^:移單元501獲得的啟動程序的 地址信息通知執(zhí)行單元504;
執(zhí)行單元504用于根據(jù)通知單元503通知的啟動程序的地址信息執(zhí)行啟動 程序,在執(zhí)行啟動程序后,發(fā)送加載通知給/人核加載單元505。
從核加載單元505用于接收所述加載通知,為喚醒單元502喚醒的從核加 載對應(yīng)的應(yīng)用程序。
優(yōu)選地,通知單元503將搬移單元501獲得的啟動程序的地址信息通知執(zhí) 行單元504可有多種實(shí)現(xiàn)形式,如采用共享內(nèi)存的形式將啟動程序的地址信息 通知給執(zhí)行單元504;或者采用消息機(jī)制將啟動程序的地址信息通知給執(zhí)行單 元504等。
其中,若通知單元503采用共享內(nèi)存的形式將啟動程序的地址信息通知給 執(zhí)行單元504,則優(yōu)選地,如圖5中的虛線所示,該裝置還可包括主核加載 單元506。
其中,主核加載單元506用于讀取搬移單元501搬移到內(nèi)存中的啟動程序, 并為多核系統(tǒng)中的主核加載對應(yīng)的應(yīng)用程序。
通知單元503將所述搬移單元501獲得的啟動程序的地址信息寫入到所述 多核系統(tǒng)的共享內(nèi)存中;其中,該共享內(nèi)存可為預(yù)先在多核系統(tǒng)的內(nèi)存中劃分 出來的一小塊內(nèi)存信息。
執(zhí)行單元504在完成從核內(nèi)部硬件的初始化后,從所述共享內(nèi)存中讀取所 述啟動程序的地址信息。
若通知單元503采用共享內(nèi)存的形式將啟動程序的地址信息通知給執(zhí)行單 元504,主核加載單元506用于讀取搬移單元501搬移到內(nèi)存中的啟動程序,
15并為多核系統(tǒng)中的主核加載對應(yīng)的應(yīng)用程序。
執(zhí)行單元504對從核內(nèi)部硬件進(jìn)行初始化,在完成初始化后,處于等待之 中,直至接收到通知單元503發(fā)送的攜帶啟動程序的地址信息的消息;并根據(jù) 接收的消息所攜帶的啟動程序的地址信息來執(zhí)^"該啟動程序。
通知單元503將搬移單元501獲得的啟動程序的地址信息攜帶在消息中發(fā) 送給執(zhí)行單元504。
優(yōu)選地,若多核系統(tǒng)當(dāng)前存在多個從核,則喚醒單元502根據(jù)預(yù)設(shè)的喚醒 從核的次序喚醒從核;
從核加載單元505可包括從核加載子單元5051、從核喚醒子單元5052 和從核通知子單元5053。
其中,從核加載子單元5051用于接收執(zhí)行單元504發(fā)送的加載通知,并為 喚醒單元502喚醒的從核加載對應(yīng)的應(yīng)用程序。
從核喚醒子單元5052用于在獲知從核加載子單元5051加載應(yīng)用程序之后, 根據(jù)預(yù)設(shè)的喚醒從核的次序喚醒另 一個從核。
從核通知子單元5053用于在獲知從核喚醒子單元5052喚醒另 一個從核后, 將啟動程序的地址信息通知該另 一個從核。
由上述方案可知,本發(fā)明實(shí)施例提供的應(yīng)用程序的加載方法和加載裝置 中,主核將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動程序的地址 信息;當(dāng)主核加載自身對應(yīng)的應(yīng)用程序后,主核喚醒從核,并將啟動程序的 地址信息通知給該從核;這樣,從核根據(jù)所述啟動程序的地址信息執(zhí)行啟動 程序,并加載自身對應(yīng)的應(yīng)用程序,從而實(shí)現(xiàn)了從核自由、獨(dú)立加載其對應(yīng) 的應(yīng)用程序,不依賴于主核,避免了現(xiàn)有技術(shù)中需要主核為所有的從核加載 應(yīng)用程序的操作,大大降低了主核的負(fù)荷。
進(jìn)一步地,本實(shí)施例中,當(dāng)主核加載自身對應(yīng)的應(yīng)用程序之后,可放棄 啟動程序的執(zhí)行權(quán),然后交給從核去執(zhí)行,這樣就創(chuàng)造了各個核共享同一份 代碼的先決條件,也理智的避開了多個核同時執(zhí)行啟動程序所帶來的互斥問 題。更進(jìn)一步地,還可以看出,主核和從核共享同一份啟動程序,并且從核 依賴于主核將啟動程序搬移到內(nèi)存空間,搭建代碼運(yùn)行的環(huán)境,進(jìn)而可以說 明主核和從核共享同一個運(yùn)行環(huán)境。并且,從核在訪問存儲啟動程序的內(nèi)存 時,是根據(jù)預(yù)先在內(nèi)存中劃分的各個核對應(yīng)的訪問位置信息中確定其對應(yīng)的 訪問位置信息,其中,該訪問位置信息為經(jīng)過內(nèi)存映射之后的位置信息,這 樣,從核無須做內(nèi)存映射,就可以跳轉(zhuǎn)到啟動程序入口點(diǎn),執(zhí)行該啟動程序, 如此,更容易使得從核能夠運(yùn)行于主核所搭建的運(yùn)行環(huán)境中。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本 發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在 本發(fā)明保護(hù)的范圍之內(nèi)。
1權(quán)利要求
1、一種應(yīng)用程序的加載方法,其特征在于,包括主核將存儲介質(zhì)存儲的啟動程序BootRom搬移到內(nèi)存中,獲得該啟動程序的地址信息;主核喚醒從核,并將啟動程序的地址信息通知從核;從核根據(jù)所述啟動程序的地址信息執(zhí)行所述啟動程序,并加載對應(yīng)的應(yīng)用程序。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主核獲得啟動程序的地址信息的操作進(jìn)一步包括主核加載對應(yīng)的應(yīng)用程序;所述將啟動程序的地址信息通知從核包括將啟動程序的地址信息寫入到預(yù)設(shè)的共享內(nèi)存中,從核在完成自身內(nèi)部硬件的初始化后,從預(yù)設(shè)的共享內(nèi)存中讀取所述啟動程序的地址信息。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從核在加載對應(yīng)的應(yīng)用程序之后,若需要復(fù)位,則進(jìn)一步包括從核對自身內(nèi)部硬件進(jìn)行初始化,當(dāng)完成初始化時,繼續(xù)執(zhí)行所述從預(yù)設(shè)的共享內(nèi)存中讀取所述啟動程序的地址信息的操作。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主核將啟動程序的地址信息通知從核包括主核加載對應(yīng)的應(yīng)用程序,從核在完成自身內(nèi)部硬件的初始化后,處于等待之中,直至接收到主核發(fā)送的攜帶啟動程序的地址信息的消息;所述從核根據(jù)啟動程序的地址信息執(zhí)行啟動程序包括從核根據(jù)接收的消息所攜帶的啟動程序的地址信息來執(zhí)行啟動程序。
5、 根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述啟動程序的地址信息為啟動程序在內(nèi)存中的入口點(diǎn);所述從核根據(jù)啟動程序的地址信息執(zhí)行啟動程序包括從核根據(jù)預(yù)先在內(nèi)存中劃分的核與訪問位置信息的對應(yīng)關(guān)系確定其對應(yīng)的訪問位置信息;從核通過確定出的訪問位置信息訪問內(nèi)存,并在內(nèi)存中查找所述啟動程序的入口點(diǎn),當(dāng)查找到時,執(zhí)行所述啟動程序。
6、 根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述主核加載對應(yīng)的應(yīng)用程序的操作進(jìn)一步包括當(dāng)主核完成加載對應(yīng)的應(yīng)用程序后,主核放棄對啟動程序的執(zhí)行權(quán);所述從核加載對應(yīng)的應(yīng)用程序的操作進(jìn)一步包括當(dāng)從核完成加載對應(yīng)的應(yīng)用程序后,從核放棄對啟動程序的執(zhí)行權(quán)。
7、 根據(jù)權(quán)利要求1所述的方法,其特征在于,若當(dāng)前存在多個從核,貝'J所述主核喚醒從核包括主核根據(jù)預(yù)設(shè)的喚醒從核的次序喚醒從核;所述從核加載對應(yīng)的應(yīng)用程序之后,進(jìn)一步包括從核根據(jù)預(yù)設(shè)的喚醒從核的次序喚醒另一個從核,并將啟動程序的地址信息通知另一個從核,該另一個從核在加載對應(yīng)的應(yīng)用程序后,繼續(xù)按照預(yù)設(shè)的喚醒從核的次序執(zhí)行喚醒從核的操作,直至所有的從核都加載完對應(yīng)的應(yīng)用程序。
8、 才艮據(jù)權(quán)利要求1所述的方法,其特征在于,所述從核根據(jù)啟動程序的地址信息執(zhí)行所述啟動程序的操作是在該從核被主核喚醒之后執(zhí)行的,或者在該從核復(fù)位后所執(zhí)行的。
9、 一種應(yīng)用程序的加載裝置,其特征在于,該裝置應(yīng)用于包含存儲介質(zhì)和內(nèi)存的多核系統(tǒng)中,包括搬移單元、喚醒單元、通知單元、執(zhí)行單元和從核力口載單元;其中,所述搬移單元用于將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動程序的地址信息;所述喚醒單元用于喚醒多核系統(tǒng)中的從核,在執(zhí)行喚醒操作后發(fā)送喚醒通知給所述通知單元;所述通知單元用于接收所述喚醒通知,將所述搬移單元獲得的啟動程序的地址信息通知所述執(zhí)行單元;所述執(zhí)行單元用于根據(jù)所述通知單元通知的啟動程序的地址信息執(zhí)行啟動程序,在執(zhí)行啟動程序后,發(fā)送加載通知給所述從核加載單元;所述從核加載單元用于接收所述加載通知,為所述喚醒單元喚醒的從核加 載對應(yīng)的應(yīng)用程序。
10、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,該裝置還包含主核加載 單元;其中,所述主核加載單元用于讀取所述搬移單元搬移到內(nèi)存中的啟動程 序,并為多核系統(tǒng)中的主核加載對應(yīng)的應(yīng)用程序;所述通知單元將所述搬移單元獲得的啟動程序的地址信息寫入到所述多核 系統(tǒng)的共享內(nèi)存中;所述執(zhí)行單元在完成從核內(nèi)部硬件的初始化后,從所述共享內(nèi)存中讀取所 述啟動程序的地址信息。
11、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,該裝置還包含主核加載 單元;其中,主核加載單元用于讀取所述搬移單元搬移到內(nèi)存中的啟動程序,并為多核 系統(tǒng)中的主核加載對應(yīng)的應(yīng)用程序;所述執(zhí)行單元在完成從核內(nèi)部硬件的初始化后,處于等待之中,直至接收 到所述通知單元發(fā)送的攜帶啟動程序的地址信息的消息;并根據(jù)接收的消息所 攜帶的啟動程序的地址信息來執(zhí)行啟動程序;所述通知單元將所述搬移單元獲得的啟動程序的地址信息攜帶在消息中發(fā) 送給所述執(zhí)行單元。
12、 根據(jù)權(quán)利要求9至11任一所述的裝置,其特征在于,若多核系統(tǒng)當(dāng)前 存在多個從核,則所述喚醒單元根據(jù)預(yù)設(shè)的喚醒從核的次序喚醒從核;所述從核加載單元包括從核加載子單元、從核喚醒子單元和從核通知子 單元;其中,所述從核加載子單元用于接收所述執(zhí)行單元發(fā)送的加載通知,并為所述喚 醒單元喚醒的乂人核加載對應(yīng)的應(yīng)用程序;所述從核喚醒子單元用于在獲知所述從核加載子單元加載應(yīng)用程序之后, 根據(jù)預(yù)設(shè)的喚醒從核的次序喚醒另 一個從核;所述/人核通知子單元用于在獲知所述/人核喚醒子單元喚醒另 一個>^人核后, 將啟動程序的地址信息通知該另 一個從核。
全文摘要
本發(fā)明提供了一種應(yīng)用程序的加載方法及裝置,其中,該方法包括主核將存儲介質(zhì)存儲的啟動程序搬移到內(nèi)存中,獲得該啟動程序的地址信息;主核喚醒從核,并將啟動程序的地址信息通知從核;從核根據(jù)所述啟動程序的地址信息執(zhí)行所述啟動程序,并加載對應(yīng)的應(yīng)用程序。采用本發(fā)明,實(shí)現(xiàn)了從核自由、獨(dú)立加載其對應(yīng)的應(yīng)用程序,不依賴于主核,避免了現(xiàn)有技術(shù)中需要主核為從核加載應(yīng)用程序的操作,大大降低了主核的負(fù)荷。
文檔編號G06F9/445GK101464807SQ20091007627
公開日2009年6月24日 申請日期2009年1月8日 優(yōu)先權(quán)日2009年1月8日
發(fā)明者濤 余, 吳華平 申請人:杭州華三通信技術(shù)有限公司