本發(fā)明實(shí)施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種進(jìn)程管理方法及其裝置。
背景技術(shù):
CORBA(公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu),Common Object Request Broker Architecture)是對(duì)象管理組織為解決分布式處理環(huán)境中硬件和軟件系統(tǒng)的互連而提出的一種解決方案,具有模型完整、先進(jìn)、獨(dú)立于系統(tǒng)平臺(tái)和開發(fā)語言、被廣泛支持的特點(diǎn)。CORBA技術(shù)將各種對(duì)象的操作和屬性封裝在不同的接口之中,通過對(duì)象請(qǐng)求代理來調(diào)用接口中的操作,完成指定的功能,這種體系結(jié)構(gòu)為開發(fā)大型的分布式異構(gòu)應(yīng)用軟件系統(tǒng)提供了與硬件平臺(tái)、編程語言、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議無關(guān)的平臺(tái)。另外,它還提供了許多通用服務(wù)如命名服務(wù)、通知服務(wù)、時(shí)間服務(wù)等。由于這些優(yōu)勢(shì),CORBA作為主流的北向接口已廣泛應(yīng)用于電信網(wǎng)絡(luò)管理中,并且無線接口的第三代技術(shù)規(guī)范中也將CORBA作為一種主要的解決方案提出。
由于運(yùn)營(yíng)商規(guī)范中只規(guī)定了CORBA接口協(xié)議的格式和相互需要交互的內(nèi)容和消息,并未規(guī)定具體實(shí)現(xiàn)的細(xì)節(jié),不同廠商會(huì)根據(jù)自家廠商設(shè)備實(shí)現(xiàn)方法選擇使用單線程或者多線程方式實(shí)現(xiàn)CORBA接口,絕大多數(shù)廠商出于提高處理效率的角度都按照多線程方法來實(shí)現(xiàn)。
但是由于多個(gè)線程并行處理存在共享資源沖突,即同時(shí)調(diào)用相同的共享資源的情形,進(jìn)而造成死鎖狀態(tài)或者待執(zhí)行進(jìn)程處于長(zhǎng)時(shí)間等待狀態(tài)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種進(jìn)程管理方法及其裝置,用于解決現(xiàn)有技術(shù)中多個(gè) 線程并行處理時(shí)的資源沖突的問題。
本發(fā)明實(shí)施例提供的進(jìn)程管理方法,包括:
獲取待執(zhí)行進(jìn)程;
根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,并確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間;其中,同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突;
根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程;其中,一個(gè)進(jìn)程組內(nèi)的進(jìn)程被并行執(zhí)行。
本發(fā)明實(shí)施例提供的進(jìn)程管理裝置,包括:
獲取單元,用于獲取待執(zhí)行進(jìn)程;
分組單元,用于根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,并確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間;其中,同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突;
執(zhí)行單元,用于根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程;其中,一個(gè)進(jìn)程組內(nèi)的進(jìn)程被并行執(zhí)行。
本發(fā)明實(shí)施例中,一方面獲取待執(zhí)行進(jìn)程,根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,分組后形成的進(jìn)程組具有同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突的特點(diǎn),另一方面確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間,并根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程,這樣可以有效解決現(xiàn)有技術(shù)多個(gè)線程并行處理時(shí)的共享資源沖突問題,避免了死鎖狀態(tài)或者待執(zhí)行進(jìn)程處于長(zhǎng)時(shí)間等待狀態(tài),從而進(jìn)一步提高了進(jìn)程的處理效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所 需要使用的附圖作簡(jiǎn)要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)提供的NMA系統(tǒng)架構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例提供的進(jìn)程管理流程示意圖;
圖3為本發(fā)明實(shí)施例提供的進(jìn)程管理裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1示例性地示出了NMA(Network management application,網(wǎng)絡(luò)管理應(yīng)用)系統(tǒng)架構(gòu),該NMA系統(tǒng)架構(gòu)中包括共享資源管理模塊、配置管理模塊、告警模塊、性能管理模塊等。CORBA技術(shù)提供了不同的接口,將對(duì)各種對(duì)象的操作和屬性封裝在不同的接口中,共享資源管理模塊通過調(diào)用相關(guān)接口完成與配置管理、告警管理和性能管理各模塊之間的交互,以實(shí)現(xiàn)性能文件和配置文件的上傳以及告警信息向上層網(wǎng)管的上報(bào)。
CORBA技術(shù)提供的不同的接口實(shí)現(xiàn)方法有兩種:多線程實(shí)現(xiàn)的CORBA接口和單線程實(shí)現(xiàn)的CORBA接口。其中,單線程實(shí)現(xiàn)的CORBA接口具有如下特點(diǎn):共享資源管理模塊會(huì)按照FIFO(First in first out,先進(jìn)先出的)原則對(duì)各個(gè)模塊進(jìn)行運(yùn)算、調(diào)度和傳遞;多線程實(shí)現(xiàn)的CORBA接口具有如下特點(diǎn):共享資源管理模塊同時(shí)對(duì)各個(gè)模塊進(jìn)行運(yùn)算、調(diào)度和傳遞。每個(gè)模塊運(yùn)算自己的數(shù)據(jù),到了固定的時(shí)間去上傳。如果網(wǎng)絡(luò)中有某個(gè)網(wǎng)元運(yùn)行不正常、閃斷或者其他異常情況,告警模塊長(zhǎng)期占用性能文件需要的共享資源,或者性能文件突發(fā)了大業(yè)務(wù),導(dǎo)致配置文件修改的參數(shù)遲遲無法入庫(kù),都會(huì)導(dǎo)致進(jìn)程死鎖, 無法正常生成或者向上級(jí)網(wǎng)管傳遞對(duì)應(yīng)的數(shù)據(jù),所述共享資源包括公共內(nèi)存和公共變量等。
基于單線程實(shí)現(xiàn)的CORBA接口并發(fā)處理不足的缺點(diǎn)和多線程實(shí)現(xiàn)的CORBA接口存在進(jìn)程鎖死的危險(xiǎn),本發(fā)明實(shí)施例提供一種進(jìn)程管理方案,通過對(duì)進(jìn)程進(jìn)行分組,從而有效解決現(xiàn)有技術(shù)多個(gè)線程并行處理時(shí)共享資源沖突問題,既提高了并發(fā)處理的能力,又避免了死鎖狀態(tài)或者待執(zhí)行進(jìn)程處于長(zhǎng)時(shí)間等待狀態(tài),從而進(jìn)一步提高了進(jìn)程的處理效率。
參見圖2所示,為本發(fā)明實(shí)施例提供的進(jìn)程管理流程示意圖,該流程可包括:
步驟S101、獲取待執(zhí)行進(jìn)程。
步驟S102、根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,并確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間;其中,同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突。
步驟S103、根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程;其中,一個(gè)進(jìn)程組內(nèi)的進(jìn)程被并行執(zhí)行。
狹義上來說,進(jìn)程(英文為Process)是正在運(yùn)行的程序的實(shí)例(英文為instance)。廣義上來說,進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng),它可以申請(qǐng)和擁有系統(tǒng)資源,它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。也就是說,進(jìn)程既是資源的基本分配單元,也是程序的基本執(zhí)行單元。
為進(jìn)程分配的資源可包括內(nèi)存資源和變量。其中,對(duì)于一個(gè)進(jìn)程來說,內(nèi)存資源可包括該進(jìn)程私有的內(nèi)存資源以及與其他進(jìn)程共享的公共內(nèi)存資源,變量也可包括該進(jìn)程的私有變量以及與其他進(jìn)程共享的公共變量。本發(fā)明實(shí)施例中所述的“進(jìn)程所使用的共享資源”是指多個(gè)進(jìn)程所共享的公共資源,比如可包括公共內(nèi)存資源和/或公共變量。
步驟S101中所獲取到的進(jìn)程通常包括定時(shí)或周期執(zhí)行的任務(wù)所對(duì)應(yīng)的進(jìn)程。在NMA系統(tǒng)中,這些周期執(zhí)行的任務(wù)可包括以下中的一種或任意組合:
-性能文件上報(bào)任務(wù),所述性能文件上報(bào)任務(wù)為周期執(zhí)行的任務(wù);
-配置文件上報(bào)任務(wù),所述配置文件上報(bào)任務(wù)為周期執(zhí)行的任務(wù);
-測(cè)試文件上報(bào)任務(wù),所述測(cè)試文件上報(bào)任務(wù)為周期執(zhí)行的任務(wù)。
步驟S101中所獲取到的進(jìn)程也可以包括突發(fā)進(jìn)程,也可以在上述定時(shí)或周期執(zhí)行的任務(wù)所對(duì)應(yīng)的進(jìn)程的基礎(chǔ)上,進(jìn)一步包括突發(fā)進(jìn)程。所述突發(fā)進(jìn)程是指由事件觸發(fā)的進(jìn)程,通常無法通過設(shè)置定時(shí)任務(wù)的方式預(yù)先進(jìn)行設(shè)置,比如,所述突發(fā)進(jìn)程可包括告警任務(wù)所對(duì)應(yīng)的進(jìn)程。
步驟S102中,對(duì)進(jìn)程進(jìn)行分組的依據(jù)可包括進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源。其中,若多個(gè)進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且這些進(jìn)程中有部分或全部進(jìn)程之間均存在共享資源沖突,則根據(jù)這些進(jìn)程中存在資源沖突的進(jìn)程的優(yōu)先級(jí),將存在資源沖突的進(jìn)程劃分到不同的進(jìn)程組,且包含高優(yōu)先級(jí)進(jìn)程的進(jìn)程組的執(zhí)行時(shí)間在包含低優(yōu)先級(jí)進(jìn)程的進(jìn)程組之前。其中,“共享資源沖突”是指多個(gè)進(jìn)程所使用的共享資源相同,比如所使用的公共內(nèi)存資源相同,或者使用的公共變量相同。
這樣,同一進(jìn)程組內(nèi)的進(jìn)程不會(huì)存在共享資源沖突,可以并行執(zhí)行,并且存在共享資源沖突的進(jìn)程中,優(yōu)先級(jí)高的進(jìn)程比優(yōu)先級(jí)低的進(jìn)程優(yōu)先執(zhí)行,使得進(jìn)程執(zhí)行順序更加合理,進(jìn)而提高了進(jìn)程的處理效率。
進(jìn)一步地,若執(zhí)行時(shí)間在同一時(shí)間段內(nèi)的多個(gè)進(jìn)程中,發(fā)生資源沖突的進(jìn)程的優(yōu)先級(jí)相同,則將存在資源沖突的進(jìn)程劃分到不同的進(jìn)程組,并根據(jù)進(jìn)程使用共享資源的時(shí)間長(zhǎng)度確定進(jìn)程組的執(zhí)行順序,其中,執(zhí)行時(shí)間在前的進(jìn)程組使用共享資源的時(shí)間長(zhǎng)度小于執(zhí)行時(shí)間在后的進(jìn)程組。
這樣,可以避免某些進(jìn)程組長(zhǎng)時(shí)間占用共享資源,導(dǎo)致其他進(jìn)程組都處于排隊(duì)等候的情況,有效地的解決進(jìn)程積壓卡死的問題。
本發(fā)明實(shí)施例中,進(jìn)程的優(yōu)先級(jí)可以是默認(rèn)設(shè)置的;也可以是根據(jù)接收到 的優(yōu)先級(jí)設(shè)置命令設(shè)置的,比如,管理員通過管理界面提交優(yōu)先級(jí)設(shè)置命令,從而可根據(jù)該優(yōu)先級(jí)設(shè)置命令為指定的進(jìn)程設(shè)置優(yōu)先級(jí);進(jìn)程的優(yōu)先級(jí)還可以是根據(jù)進(jìn)程所對(duì)應(yīng)的任務(wù)的類型或級(jí)別設(shè)置的,比如,配置文件上傳任務(wù)為:在凌晨3:00進(jìn)行前一天所有配置文件的上傳,性能文件上傳的任務(wù)為:在凌晨3:00進(jìn)行前一天所有性能文件的上傳,由于配置文件上傳任務(wù)比性能文件上傳任務(wù)更為重要,此時(shí)將配置文件任務(wù)所對(duì)應(yīng)的進(jìn)程設(shè)置為最高優(yōu)先級(jí);又比如,告警分為普通告警和嚴(yán)重告警等不同級(jí)別,當(dāng)發(fā)生嚴(yán)重告警時(shí),設(shè)置嚴(yán)重告警任務(wù)對(duì)應(yīng)的進(jìn)程為高優(yōu)先級(jí)。
下面以具體場(chǎng)景為例,對(duì)本發(fā)明實(shí)施例提供的進(jìn)程分組方法進(jìn)行描述。
場(chǎng)景一
在該場(chǎng)景中包括4個(gè)進(jìn)程:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4。該4個(gè)進(jìn)程的執(zhí)行時(shí)間相同,且均使用相同的共享資源,進(jìn)程1的優(yōu)先級(jí)最高,進(jìn)程4的優(yōu)先級(jí)最低,進(jìn)程2的優(yōu)先級(jí)高于進(jìn)程3的優(yōu)先級(jí)。
進(jìn)程分組時(shí),由于該4個(gè)進(jìn)程均使用相同的共享資源,因此分為4個(gè)進(jìn)程組,該4個(gè)進(jìn)程組分別是進(jìn)程組A、進(jìn)程組B、進(jìn)程組C、進(jìn)程組D,其中,進(jìn)程組A包括進(jìn)程1,進(jìn)程組B包括進(jìn)程2,進(jìn)程組C包括進(jìn)程3,進(jìn)程組D包括進(jìn)程4。由于該4個(gè)進(jìn)程的優(yōu)先級(jí)從高到低排列為:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4,因此各進(jìn)程組的執(zhí)行順序按照時(shí)間從前到后排列為進(jìn)程組A、進(jìn)程組B、進(jìn)程組C、進(jìn)程組D。
場(chǎng)景二
在該場(chǎng)景中包括4個(gè)進(jìn)程:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4,該4個(gè)進(jìn)程的執(zhí)行時(shí)間相同,進(jìn)程1與進(jìn)程3發(fā)生共享資源沖突,進(jìn)程1的優(yōu)先級(jí)最高,進(jìn)行4的優(yōu)先級(jí)最低,進(jìn)程2的優(yōu)先級(jí)高于進(jìn)程3的優(yōu)先級(jí)。
進(jìn)程分組時(shí),由于進(jìn)程1和進(jìn)程3不能分為一組,進(jìn)程2和進(jìn)程4不能分為一組,則一種分組結(jié)果是將4個(gè)進(jìn)程劃分為2個(gè)進(jìn)程組,該2個(gè)進(jìn)程組分別是進(jìn)程組A和進(jìn)程組B、其中,進(jìn)程組A包括進(jìn)程1、進(jìn)程2,進(jìn)程組B中包 含進(jìn)程3、進(jìn)程4。由于該4個(gè)進(jìn)程的優(yōu)先級(jí)從高到低排列為:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4,因此各進(jìn)程組的執(zhí)行順序按照時(shí)間從前到后排列為進(jìn)程組A、進(jìn)程組B。
場(chǎng)景三
在該場(chǎng)景中包括4個(gè)進(jìn)程:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4。該4個(gè)進(jìn)程的執(zhí)行時(shí)間相同,進(jìn)程1與進(jìn)程3發(fā)生共享資源沖突,進(jìn)程3較為復(fù)雜,使用共享資源的時(shí)間長(zhǎng)度比其余進(jìn)程要長(zhǎng),進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4的優(yōu)先級(jí)相同。
進(jìn)程分組時(shí),由于進(jìn)程1和進(jìn)程3不能分為一組,因此可將4個(gè)進(jìn)程劃分為2個(gè)進(jìn)程組,該2個(gè)進(jìn)程組分別是進(jìn)程組A和進(jìn)程組B、其中,進(jìn)程組A包括進(jìn)程1、進(jìn)程2,進(jìn)程組B中包含進(jìn)程3、進(jìn)程4。又由于進(jìn)程3使用共享資源的時(shí)間較長(zhǎng),因此各進(jìn)程組的順序按照時(shí)間從前到后排列為進(jìn)程組A、進(jìn)程組B。
本發(fā)明實(shí)施例中,對(duì)進(jìn)程進(jìn)行分組的依據(jù)除了包括進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源外還可以包括進(jìn)程的讀寫屬性。若多個(gè)進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi)且使用相同的共享資源,但有一個(gè)進(jìn)程對(duì)該共享資源的使用方式為讀寫,其余進(jìn)程對(duì)該共享資源的使用方式為只讀,則可以將所述多個(gè)進(jìn)程劃分到同一進(jìn)程組。
進(jìn)一步地,將上述進(jìn)程分到同一個(gè)進(jìn)程組之后,在執(zhí)行該進(jìn)程組內(nèi)的進(jìn)程時(shí),可按照以下執(zhí)行方法進(jìn)行執(zhí)行:
一個(gè)進(jìn)程組內(nèi),對(duì)于使用相同共享資源但讀寫屬性不同的進(jìn)程,在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),禁止對(duì)該共享資源的使用方式為只讀的進(jìn)程對(duì)該公共變量進(jìn)行讀取,在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該公共變量讀寫完成后,允許對(duì)該共享資源的使用方式為只讀的進(jìn)程對(duì)該公共變量進(jìn)行讀??;或者,在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),允許對(duì)該共享資源的 使用方式為只讀的進(jìn)程對(duì)該公共變量進(jìn)行讀取,并在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該公共變量讀寫完成后,將該公共變量更新后的值通知該對(duì)該共享資源的使用方式為只讀的進(jìn)程,這樣,可以有效利用共享資源,降低了共享資源中的公共變量被同時(shí)讀寫的風(fēng)險(xiǎn)。
下面以具體場(chǎng)景為例,針對(duì)一個(gè)進(jìn)程組內(nèi)包含使用相同共享資源但讀寫屬性不同的進(jìn)程,描述進(jìn)程執(zhí)行過程。
在該場(chǎng)景中包括4個(gè)進(jìn)程:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4,該4個(gè)進(jìn)程的執(zhí)行時(shí)間相同,進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4的優(yōu)先級(jí)相同,且均使用相同的共享資源,進(jìn)程1的讀寫方式為讀寫,其余進(jìn)程的讀寫方式為只讀,則可以將該4個(gè)進(jìn)程分到同一個(gè)進(jìn)程組中。
該進(jìn)程組在執(zhí)行時(shí),可以有兩種執(zhí)行的方式:
第一種方式是:進(jìn)程1對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),禁止進(jìn)程2、進(jìn)程3和進(jìn)程4對(duì)該公共變量進(jìn)行讀取,進(jìn)程1對(duì)該公共變量讀寫完成后,才允許進(jìn)程2、進(jìn)程3和進(jìn)程4對(duì)該公共變量進(jìn)行讀取。
比如,進(jìn)程1對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),對(duì)進(jìn)程2、進(jìn)程3和進(jìn)程4進(jìn)行加鎖,待進(jìn)程1對(duì)該公共變量讀寫完成后,對(duì)進(jìn)程2、進(jìn)程3和進(jìn)程4進(jìn)行解鎖,從而允許進(jìn)程2、進(jìn)程3和進(jìn)程4對(duì)該公共變量進(jìn)行讀取。
再比如,進(jìn)程1對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),將正在運(yùn)行的進(jìn)程2、進(jìn)程3和進(jìn)程4收回處理器,然后再使進(jìn)程1來占用處理器,待進(jìn)程1對(duì)該公共變量讀寫完成后,再允許進(jìn)程2、進(jìn)程3和進(jìn)程4使用處理器。
第二種方式是:進(jìn)程1對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),可以允許進(jìn)程2、進(jìn)程3和進(jìn)程4對(duì)該公共變量進(jìn)行讀取,并在進(jìn)程1對(duì)該公共變量讀寫完成后,將該公共變量更新后的值通知進(jìn)程2、進(jìn)程3和進(jìn)程4??梢娺@樣相當(dāng)于增加對(duì)以上分組方法的容錯(cuò)處理,4個(gè)使用相同的共享資源的進(jìn)程即使被分到一個(gè)進(jìn)程組,也可以實(shí)現(xiàn)并行執(zhí)行,同樣提高了進(jìn)程的處理效率。
考慮到待執(zhí)行進(jìn)程是突發(fā)進(jìn)程時(shí),則無法對(duì)這些待執(zhí)行進(jìn)程進(jìn)行預(yù)先采集 和分組,這時(shí)采取的進(jìn)程管理方法是:如果接收到突發(fā)進(jìn)程,則根據(jù)該突發(fā)進(jìn)程使用的共享資源,將該突發(fā)進(jìn)程加入到進(jìn)程組中,或者為該突發(fā)進(jìn)程創(chuàng)建進(jìn)程組并為創(chuàng)建的進(jìn)程組確定執(zhí)行時(shí)間。
將該突發(fā)進(jìn)程加入到進(jìn)程組中的方式是:若所述突發(fā)進(jìn)程所使用的共享資源與正在執(zhí)行或即將執(zhí)行的進(jìn)程組內(nèi)的進(jìn)程不存在共享資源沖突,則將所述突發(fā)進(jìn)程劃分到正在執(zhí)行或即將執(zhí)行的進(jìn)程組中;若所述突發(fā)進(jìn)程使用的共享資源與正在執(zhí)行的進(jìn)程組內(nèi)的進(jìn)程存在共享資源沖突,且所述突發(fā)進(jìn)程的優(yōu)先級(jí)高于正在執(zhí)行的進(jìn)程組內(nèi)的進(jìn)程的優(yōu)先級(jí),則停止執(zhí)行正在執(zhí)行的進(jìn)程組,執(zhí)行所述突發(fā)進(jìn)程。這樣做充分考慮到了突發(fā)進(jìn)程的特點(diǎn),對(duì)突發(fā)進(jìn)程采取區(qū)別于周期發(fā)生的進(jìn)程地處理方式,使得本發(fā)明實(shí)施例中的進(jìn)程分組執(zhí)行方法更加合理。
下面以具體場(chǎng)景為例,描述接收到突發(fā)進(jìn)程時(shí)的處理過程。
在該場(chǎng)景中包括4個(gè)進(jìn)程:進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4,該4個(gè)進(jìn)程的執(zhí)行時(shí)間相同,進(jìn)程1、進(jìn)程2、進(jìn)程3、進(jìn)程4的優(yōu)先級(jí)相同,且均使用不相同的共享資源,將4個(gè)進(jìn)程劃分到一個(gè)進(jìn)程組A中。
在進(jìn)程組A執(zhí)行過程中發(fā)生告警,該告警對(duì)應(yīng)的進(jìn)程為進(jìn)程5,進(jìn)程5的優(yōu)先級(jí)高于進(jìn)程1、進(jìn)程2、進(jìn)程3和進(jìn)程4。
-若進(jìn)程5與其它4個(gè)進(jìn)程使用的共享資源均不相同,則將進(jìn)程5劃分到進(jìn)程組A中;此種情況下,進(jìn)程5可以被立即執(zhí)行,且與其它4個(gè)進(jìn)程并行執(zhí)行;
-若進(jìn)程5與其它進(jìn)程使用的共享資源相同,則將進(jìn)程5單獨(dú)劃分到一個(gè)進(jìn)程組B中,停止進(jìn)組A的執(zhí)行,執(zhí)行進(jìn)程組B,當(dāng)進(jìn)程組B執(zhí)行完成后再繼續(xù)進(jìn)程組A的執(zhí)行。
本發(fā)明實(shí)施例中,采用進(jìn)程分組方式執(zhí)行進(jìn)程,可以不依賴于接口狀態(tài),也可以在接口處于繁忙狀態(tài)時(shí)才采用上述進(jìn)程分組方式。
具體來說,在執(zhí)行步驟S102之前,可根據(jù)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和執(zhí)行 周期,以及待執(zhí)行進(jìn)程對(duì)應(yīng)的任務(wù)所傳輸?shù)奈募拇笮『皖愋椭械囊环N或多種,判斷待執(zhí)行進(jìn)程所調(diào)用的北向接口是否處于繁忙狀態(tài);若判斷為是,則將待執(zhí)行進(jìn)程進(jìn)行分組;若判斷為否,則將待執(zhí)行進(jìn)程按照多進(jìn)程方式傳送。其中,所述“北向接口”是指上行接口,比如在NMA系統(tǒng)中,是指采用CORBA技術(shù)的接口,可以用來向上級(jí)網(wǎng)管系統(tǒng)傳輸性能文件、配置文件等。
例如,配置文件上傳任務(wù)被預(yù)設(shè)為凌晨3:00進(jìn)行前一天配置文件的上傳,考慮到配置文件的數(shù)據(jù)量較大,進(jìn)而可以推斷凌晨3:00北向接口處于繁忙狀態(tài),基于這種判斷結(jié)果,則將配置文件上傳認(rèn)為對(duì)應(yīng)的進(jìn)程在當(dāng)晚22:00進(jìn)行預(yù)先分組。當(dāng)北向接口執(zhí)行完配置文件上傳認(rèn)為對(duì)應(yīng)的進(jìn)程恢復(fù)到空閑狀態(tài)時(shí),則可按照現(xiàn)有技術(shù)中的多進(jìn)程方式傳送其它進(jìn)程。
可以看出,預(yù)先判斷北向接口的狀態(tài)是為了更加合理的選擇進(jìn)程的傳送方法,因?yàn)楫?dāng)北向接口處于空閑狀態(tài)時(shí),北向接口沒有進(jìn)程傳送的壓力,采用現(xiàn)有的多線程方式傳送進(jìn)程可以有效提高共享資源的利用率,而當(dāng)北向接口處于繁忙狀態(tài)時(shí),共享資源存在被頻繁調(diào)用的壓力,此時(shí)需要采用本發(fā)明實(shí)施例的分組方法進(jìn)行緩解,以避免出現(xiàn)共享資源調(diào)用沖突的情形。
綜上所述,本發(fā)明實(shí)施例中,一方面獲取待執(zhí)行進(jìn)程,根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,分組后形成的進(jìn)程組具有同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突的特點(diǎn),另一方面確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間,并根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程,這樣可以有效解決現(xiàn)有技術(shù)多個(gè)線程并行處理時(shí)的共享資源沖突問題,避免了死鎖狀態(tài)或者待執(zhí)行進(jìn)程處于長(zhǎng)時(shí)間等待狀態(tài),從而進(jìn)一步提高了進(jìn)程的處理效率。
基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供了進(jìn)程管理裝置,該裝置可實(shí)施上述實(shí)施例描述的進(jìn)程管理流程。
如圖3所示,該裝置可包括:獲取單元201,分組單元202,執(zhí)行單元203, 其中:
獲取單元201,用于獲取待執(zhí)行進(jìn)程;
分組單元202,用于根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,并確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間;其中,同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突;
執(zhí)行單元203,用于根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程;其中,一個(gè)進(jìn)程組內(nèi)的進(jìn)程被并行執(zhí)行;
所述待執(zhí)行進(jìn)程對(duì)應(yīng)的任務(wù),與進(jìn)程管理流程介紹的一致,也是包括周期執(zhí)行的任務(wù)和突發(fā)任務(wù)兩種類型的任務(wù)對(duì)應(yīng)的進(jìn)程或任意組合,在此不再贅述。
在分組單元202執(zhí)行之前一般先要執(zhí)行判斷單元204,所述判斷單元204,用于根據(jù)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和執(zhí)行周期,以及待執(zhí)行進(jìn)程對(duì)應(yīng)的任務(wù)所傳輸?shù)奈募拇笮『皖愋椭械囊环N或多種,判斷待執(zhí)行進(jìn)程所調(diào)用的北向接口是否處于繁忙狀態(tài);若判斷為是,則指示所述分組單元將待執(zhí)行進(jìn)程進(jìn)行分組。
這樣做充分考慮到了北向接口的執(zhí)行壓力,當(dāng)壓力小時(shí)采用多線程方式傳送,提高了共享資源的利用率,當(dāng)壓力大時(shí),增加了分組的處理,有效解決共享資源調(diào)用沖突的問題。
其中,所述分組單元202具體用于:若多個(gè)進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且所述多個(gè)進(jìn)程中有部分或全部進(jìn)程之間均存在共享資源沖突,則根據(jù)所述多個(gè)進(jìn)程中存在資源沖突的進(jìn)程的優(yōu)先級(jí),將存在資源沖突的進(jìn)程劃分到不同的進(jìn)程組,且包含高優(yōu)先級(jí)進(jìn)程的進(jìn)程組的執(zhí)行時(shí)間在包含低優(yōu)先級(jí)進(jìn)程的進(jìn)程組之前。
這樣,同一進(jìn)程組內(nèi)的進(jìn)程不會(huì)存在共享資源沖突,可以并行執(zhí)行,并且存在共享資源沖突的進(jìn)程中,優(yōu)先級(jí)高的進(jìn)程比優(yōu)先級(jí)低的進(jìn)程優(yōu)先執(zhí)行,使得進(jìn)程執(zhí)行順序更加合理,進(jìn)而提高了進(jìn)程的處理效率。
進(jìn)一步地,進(jìn)程的優(yōu)先級(jí)可以是默認(rèn)設(shè)置的;也可以是根據(jù)設(shè)置優(yōu)先級(jí)單元205接收到的優(yōu)先級(jí)設(shè)置命令設(shè)置的,所述設(shè)置優(yōu)先級(jí)單元205還用于根據(jù)進(jìn)程所對(duì)應(yīng)的任務(wù)的類型或級(jí)別,為待執(zhí)行進(jìn)程設(shè)置優(yōu)先級(jí),具體優(yōu)先級(jí)設(shè)置方法與進(jìn)程管理流程相同,不再贅述。
進(jìn)一步地,分組單元202還用于:若執(zhí)行時(shí)間在同一時(shí)間段內(nèi)的多個(gè)進(jìn)程中,發(fā)生資源沖突的進(jìn)程的優(yōu)先級(jí)相同,則將存在資源沖突的進(jìn)程劃分到不同的進(jìn)程組,并根據(jù)進(jìn)程使用共享資源的時(shí)間長(zhǎng)度確定進(jìn)程組的執(zhí)行順序,其中,執(zhí)行時(shí)間在前的進(jìn)程組使用共享資源的時(shí)間長(zhǎng)度小于執(zhí)行時(shí)間在后的進(jìn)程組。
這樣做的效果是可以避免某些進(jìn)程組長(zhǎng)時(shí)間占用共享資源,導(dǎo)致其他進(jìn)程組都處于排隊(duì)等候的情況,有效地的解決進(jìn)程積壓卡死的問題。
具體地,所述分組單元202還具體用于:若多個(gè)進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi)且使用相同的共享資源,但有一個(gè)進(jìn)程對(duì)該共享資源的使用方式為讀寫,其余進(jìn)程對(duì)該共享資源的使用方式為只讀,則將所述多個(gè)進(jìn)程劃分到同一進(jìn)程組。
進(jìn)一步地,將上述進(jìn)程分到同一個(gè)進(jìn)程組之后,需要由執(zhí)行單元203具行執(zhí)行,所述執(zhí)行單元203具體用于:若待執(zhí)行的進(jìn)程組中包含有使用相同的共享資源的進(jìn)程,且有一個(gè)進(jìn)程對(duì)該共享資源的使用方式為讀寫,其余進(jìn)程對(duì)該共享資源的使用方式為只讀,則在執(zhí)行該進(jìn)程組內(nèi)的進(jìn)程時(shí):
在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),禁止對(duì)該共享資源的使用方式為只讀的進(jìn)程對(duì)該公共變量進(jìn)行讀取,在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該公共變量讀寫完成后,允許對(duì)該共享資源的使用方式為只讀的進(jìn)程對(duì)該公共變量進(jìn)行讀??;或者
在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該共享資源中的公共變量進(jìn)行讀寫時(shí),允許對(duì)該共享資源的使用方式為只讀的進(jìn)程對(duì)該公共變量進(jìn)行讀取,并在對(duì)該共享資源的使用方式為讀寫的進(jìn)程對(duì)該公共變量讀寫完成后,將該公共變量更新后的值通知該對(duì)該共享資源的使用方式為只讀的進(jìn)程。這樣, 可以有效利用共享資源,降低了共享資源中的公共變量被同時(shí)讀寫的風(fēng)險(xiǎn)。
考慮到待執(zhí)行進(jìn)程是突發(fā)進(jìn)程時(shí),則無法對(duì)這些待執(zhí)行進(jìn)程進(jìn)行預(yù)先采集和分組,這時(shí)進(jìn)程管理裝置中所述獲取單元201還用于用于接收突發(fā)進(jìn)程;所述分組單元202還用于,用于根據(jù)所述突發(fā)進(jìn)程使用的共享資源,將所述突發(fā)進(jìn)程加入到進(jìn)程組中,或者為所述突發(fā)進(jìn)程創(chuàng)建進(jìn)程組并為創(chuàng)建的進(jìn)程組確定執(zhí)行時(shí)間。
進(jìn)一步地,所述分組單元202具體用于:若所述突發(fā)進(jìn)程所使用的共享資源與正在執(zhí)行或即將執(zhí)行的進(jìn)程組內(nèi)的進(jìn)程不存在共享資源沖突,則將所述突發(fā)進(jìn)程劃分到正在執(zhí)行或即將執(zhí)行的進(jìn)程組中。
進(jìn)一步地,所述分組單元202還具體用于:若所述突發(fā)進(jìn)程使用的共享資源與正在執(zhí)行的進(jìn)程組內(nèi)的進(jìn)程存在共享資源沖突,且所述突發(fā)進(jìn)程的優(yōu)先級(jí)高于正在執(zhí)行的進(jìn)程組內(nèi)的進(jìn)程的優(yōu)先級(jí),則停止執(zhí)行正在執(zhí)行的進(jìn)程組,執(zhí)行所述突發(fā)進(jìn)程。這樣做充分考慮到了突發(fā)進(jìn)程的特點(diǎn),對(duì)突發(fā)進(jìn)程采取區(qū)別于周期發(fā)生的進(jìn)程地處理方式,使得本發(fā)明實(shí)施例中的進(jìn)程分組執(zhí)行方法更加合理。
綜上所述,本發(fā)明實(shí)施例一方面獲取待執(zhí)行進(jìn)程,根據(jù)每個(gè)待執(zhí)行進(jìn)程的執(zhí)行時(shí)間和所使用的共享資源,將待執(zhí)行進(jìn)程進(jìn)行分組,分組后形成的進(jìn)程組具有同一進(jìn)程組內(nèi)的進(jìn)程的執(zhí)行時(shí)間在同一時(shí)間段內(nèi),且同一進(jìn)程組內(nèi)的進(jìn)程之間不存在共享資源沖突的特點(diǎn),另一方面確定每個(gè)進(jìn)程組的執(zhí)行時(shí)間,并根據(jù)每個(gè)進(jìn)程組的執(zhí)行時(shí)間以進(jìn)程組為單位執(zhí)行每個(gè)進(jìn)程組內(nèi)的待執(zhí)行進(jìn)程,這樣可以有效解決現(xiàn)有技術(shù)多個(gè)線程并行處理時(shí)同時(shí)調(diào)用相同的共享資源的情形,避免了死鎖狀態(tài)或者待執(zhí)行進(jìn)程處于長(zhǎng)時(shí)間等待狀態(tài),從而進(jìn)一步提高了進(jìn)程處理效率。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/ 或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。