欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法

文檔序號:6421159閱讀:126來源:國知局
專利名稱:遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域中的過程控制方法,尤其涉及遠(yuǎn)程同步調(diào)用過程中的調(diào)用超時(shí)的處理方法。
背景技術(shù)
在多個(gè)處理器(CPU)組成的系統(tǒng)中,CPU之間需要進(jìn)行相互通信。這種通信方式有很多種,例如遠(yuǎn)程數(shù)據(jù)傳送、中斷控制以及程序或函數(shù)的遠(yuǎn)程同步調(diào)用。在上述通信方式中,程序或函數(shù)的遠(yuǎn)程同步調(diào)用是較常用的一種,該通信方式是指一個(gè)CPU的任務(wù)調(diào)用另一個(gè)CPU的函數(shù),并且在調(diào)用過程中調(diào)用CPU阻塞該任務(wù),等待回應(yīng)。如果在預(yù)先設(shè)定的超時(shí)時(shí)間內(nèi),調(diào)用CPU收到執(zhí)行該函數(shù)的執(zhí)行結(jié)果,則調(diào)用成功,否則調(diào)用失敗。對于該通信方式來說,被調(diào)用CPU處理同一個(gè)函數(shù)的時(shí)間可能相差很大,例如,調(diào)用CPU的某個(gè)任務(wù)要求被調(diào)用CPU刪除其管理的某個(gè)文件,由于系統(tǒng)中每個(gè)文件的長度是不確定的,使得具體刪除某個(gè)文件的時(shí)間也不能事先確定。再比如說,調(diào)用CPU的某個(gè)任務(wù)調(diào)用另一個(gè)CPU的刪除函數(shù)-刪除交換芯片的MAC地址,由于不同交換芯片的MAC地址的個(gè)數(shù)可能不同,MAC地址的個(gè)數(shù)越多,被調(diào)用CPU執(zhí)行的刪除時(shí)間越長,最短的執(zhí)行時(shí)間和最長執(zhí)行時(shí)間相差很大,由于調(diào)用CPU在調(diào)用另一個(gè)CPU的刪除函數(shù)之前無法確定被調(diào)用CPU所刪除的MAC地址的個(gè)數(shù),因此難以預(yù)先設(shè)定超時(shí)時(shí)間。在這種情況下,如果執(zhí)行刪除操作的時(shí)間比預(yù)先設(shè)定的超時(shí)時(shí)間要長,則在所述調(diào)用CPU的任務(wù)在超時(shí)時(shí)間內(nèi)沒有收到執(zhí)行結(jié)果時(shí),就會(huì)認(rèn)為調(diào)用失敗,但此時(shí)也有可能出現(xiàn)被調(diào)用者執(zhí)行操作成功的結(jié)果;如果執(zhí)行刪除操作的時(shí)間比超時(shí)時(shí)間短,則對于調(diào)用異常的反應(yīng)速度慢,調(diào)用CPU的任務(wù)就可能會(huì)被長時(shí)間阻塞,運(yùn)行效率差。因此,需要解決上述類似在同一個(gè)函數(shù)處理時(shí)間可變的情況下,預(yù)先設(shè)定超時(shí)時(shí)間的問題。
圖1為現(xiàn)有技術(shù)中普遍采用的一種遠(yuǎn)程同步調(diào)用中調(diào)用超時(shí)的處理方法。該方法包括調(diào)用CPU的調(diào)用過程和被調(diào)用CPU的執(zhí)行過程。在調(diào)用CPU的調(diào)用過程中,首先由調(diào)用CPU基于對所調(diào)用函數(shù)執(zhí)行時(shí)間的估計(jì)設(shè)定一個(gè)固定超時(shí)時(shí)間(步驟S110);然后調(diào)用CPU執(zhí)行調(diào)用任務(wù),發(fā)送調(diào)用報(bào)文,該調(diào)用報(bào)文的內(nèi)容包括調(diào)用CPU編號、被調(diào)用CPU編號、調(diào)用模塊號、被調(diào)用模塊號、信號量編號、被調(diào)用的函數(shù)編號,同時(shí)設(shè)定信號量的初始值(可預(yù)先設(shè)置為0)(步驟S120);在上述任務(wù)完成后,調(diào)用CPU獲取信號量,即減少信號量的值,當(dāng)該CPU檢測到信號量的值小于0,則阻塞該調(diào)用任務(wù)(步驟S130);接著,調(diào)用CPU判斷在固定超時(shí)時(shí)間內(nèi)是否收到被調(diào)用的CPU發(fā)送的包含有執(zhí)行結(jié)果的result報(bào)文,如果是調(diào)用成功,否則調(diào)用發(fā)生超時(shí)錯(cuò)誤(步驟S140)。
在被調(diào)用CPU的執(zhí)行過程中,首先接收從調(diào)用CPU發(fā)送的調(diào)用報(bào)文(步驟S150),然后開始執(zhí)行被調(diào)用函數(shù)(步驟S160),當(dāng)執(zhí)行結(jié)束后發(fā)送result報(bào)文至調(diào)用CPU(步驟S170)。
由于并不是所有函數(shù)的執(zhí)行時(shí)間都是確定的,存在著如上述提及的用于刪除MAC地址的刪除函數(shù)等實(shí)際中無法事先確定處理時(shí)間的函數(shù),所以調(diào)用CPU在預(yù)先設(shè)定的超時(shí)時(shí)間內(nèi)沒有收到調(diào)用結(jié)果無法判斷是由于被調(diào)用CPU執(zhí)行該函數(shù)的執(zhí)行時(shí)間長還是調(diào)用時(shí)發(fā)生調(diào)用錯(cuò)誤引起的。并且,當(dāng)被調(diào)用CPU中的某個(gè)函數(shù)增加了復(fù)雜處理后,需要調(diào)整該函數(shù)每個(gè)可能調(diào)用的CPU的超時(shí)時(shí)間,大大增加了軟件代碼維護(hù)量。
作為上述方法的一種改進(jìn),在調(diào)用CPU端也可以這樣完成所述任務(wù)首先調(diào)用CPU先將調(diào)用的函數(shù)編號等參數(shù)發(fā)送至被調(diào)用的CPU,由被調(diào)用CPU估計(jì)執(zhí)行該函數(shù)的時(shí)間,再將結(jié)果返回調(diào)用CPU;接著,調(diào)用CPU將接收的結(jié)果設(shè)定成超時(shí)時(shí)間,然后執(zhí)行上述步驟S120至步驟S140。
該方法雖然解決了確定超時(shí)時(shí)間這個(gè)問題,但是一個(gè)CPU任務(wù)調(diào)用兩次才能執(zhí)行一個(gè)被調(diào)用CPU的函數(shù),被調(diào)用的CPU和調(diào)用的CPU的效率就被降低了。由于被調(diào)用的CPU需要估計(jì)大量函數(shù)在指定參數(shù)下的執(zhí)行時(shí)間,導(dǎo)致由多個(gè)CPU組成的系統(tǒng)變得復(fù)雜,不利于保持系統(tǒng)的簡單、清晰和易維護(hù)。

發(fā)明內(nèi)容
本發(fā)明解決的問題是將遠(yuǎn)程同步調(diào)用的超時(shí)機(jī)制變?yōu)樽詣?dòng)適應(yīng)方式,為此提供了一種遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,使用該方法不會(huì)因?yàn)楸徽{(diào)用函數(shù)執(zhí)行時(shí)間長而發(fā)生調(diào)用超時(shí)錯(cuò)誤,并且,能夠快速發(fā)現(xiàn)調(diào)用過程中的調(diào)用錯(cuò)誤。
為解決上述問題,本發(fā)明提供了一種遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,包括調(diào)用CPU的調(diào)用過程和被調(diào)用CPU的執(zhí)行過程,其中,所述調(diào)用CPU的調(diào)用過程包括(1)執(zhí)行調(diào)用任務(wù),發(fā)送調(diào)用報(bào)文至被調(diào)用CPU,所述調(diào)用報(bào)文包括信號量編號和被調(diào)用函數(shù)名稱;(2)獲取信號量,阻塞調(diào)用任務(wù),進(jìn)行阻塞計(jì)時(shí);(3)判斷阻塞計(jì)時(shí)時(shí)間是否大于預(yù)先設(shè)定的超時(shí)時(shí)間,如果是,結(jié)束執(zhí)行調(diào)用任務(wù),否則進(jìn)行步驟(4);(4)判斷是否收到被調(diào)用的CPU發(fā)送的反饋數(shù)據(jù)包,如果是,釋放信號量,喚醒調(diào)用任務(wù),然后進(jìn)行步驟(5),否則進(jìn)行步驟(3);(5)判斷數(shù)據(jù)包是否是wait報(bào)文,如果是,進(jìn)行步驟(2),否則從接收的result報(bào)文中獲得調(diào)用結(jié)果;
所述被調(diào)用CPU處理過程包括(6)被調(diào)用CPU收到調(diào)用報(bào)文,執(zhí)行被調(diào)用函數(shù),并且在執(zhí)行過程中發(fā)送wait報(bào)文至調(diào)用CPU,所述發(fā)送wait報(bào)文的時(shí)間間隔小于超時(shí)時(shí)間;(7)執(zhí)行函數(shù)結(jié)束后發(fā)送包括調(diào)用結(jié)果的result報(bào)文至調(diào)用CPU。
進(jìn)一步,本發(fā)明的所述超時(shí)時(shí)間小于調(diào)用CPU估計(jì)調(diào)用所述函數(shù)需要執(zhí)行的固定超時(shí)時(shí)間。
在被調(diào)用CPU的函數(shù)中可以預(yù)先插入向調(diào)用任務(wù)發(fā)送Wait報(bào)文的代碼。步驟(6)中通過執(zhí)行發(fā)送wait報(bào)文的代碼來執(zhí)行發(fā)送wait報(bào)文的操作。
步驟(6)中通過一個(gè)計(jì)時(shí)單元來控制發(fā)送wait報(bào)文的時(shí)間。
所述調(diào)用報(bào)文中還包括超時(shí)時(shí)間。步驟(6)還包括(6-1)被調(diào)用CPU根據(jù)接收到的調(diào)用報(bào)文中的超時(shí)時(shí)間,確定向調(diào)用CPU發(fā)送wait報(bào)文的時(shí)間間隔;(6-2)當(dāng)被調(diào)用CPU執(zhí)行所述函數(shù)的時(shí)間是所述時(shí)間間隔的倍數(shù)時(shí),發(fā)送wait報(bào)文。
步驟(5)通過判斷接收到的報(bào)文中的結(jié)果長度是否為0來判斷是否是wait報(bào)文。
本發(fā)明還提供了一種遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,包括調(diào)用CPU處理過程和被調(diào)用CPU處理過程,其中所述調(diào)用CPU處理過程包括(1)執(zhí)行調(diào)用任務(wù),發(fā)送調(diào)用報(bào)文至被調(diào)用CPU,所述調(diào)用報(bào)文包括被調(diào)用函數(shù);(2)調(diào)用任務(wù)開始睡眠,進(jìn)行睡眠計(jì)時(shí);(3)判斷睡眠計(jì)時(shí)時(shí)間是否大于等于預(yù)先設(shè)定的超時(shí)時(shí)間,如果是喚醒調(diào)用任務(wù),然后進(jìn)行步驟(4),否則進(jìn)行步驟(3);(4)判斷是否收到被調(diào)用的CPU發(fā)送的反饋數(shù)據(jù)包,如果是進(jìn)行步驟(5),否則結(jié)束執(zhí)行調(diào)用任務(wù);(5)判斷收到的數(shù)據(jù)包中是否有result報(bào)文,如果有,則從所述result報(bào)文中獲得調(diào)用結(jié)果,否則進(jìn)行步驟(2);所述被調(diào)用CPU處理過程包括(6)被調(diào)用CPU收到調(diào)用報(bào)文,執(zhí)行被調(diào)用函數(shù),并且在執(zhí)行過程中發(fā)送wait報(bào)文至調(diào)用CPU,發(fā)送wait報(bào)文的時(shí)間間隔小于超時(shí)時(shí)間;(7)執(zhí)行函數(shù)結(jié)束后發(fā)送包括調(diào)用結(jié)果的result報(bào)文至調(diào)用CPU。
預(yù)先設(shè)置的超時(shí)時(shí)間小于調(diào)用CPU估計(jì)調(diào)用所述函數(shù)需要執(zhí)行的固定超時(shí)時(shí)間。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)(1)本發(fā)明中,被調(diào)用CPU能夠在執(zhí)行被調(diào)用函數(shù)過程中發(fā)送wait報(bào)文至調(diào)用CPU,調(diào)用CPU收到wait報(bào)文,阻塞調(diào)用任務(wù)繼續(xù)等待,保證不會(huì)由于被調(diào)用函數(shù)執(zhí)行時(shí)間長于預(yù)先設(shè)定的超時(shí)時(shí)間而發(fā)生調(diào)用超時(shí)錯(cuò)誤。
(2)設(shè)定的超時(shí)時(shí)間小于固定超時(shí)時(shí)間,這樣有利于調(diào)用CPU能夠及時(shí)發(fā)現(xiàn)調(diào)用過程時(shí)發(fā)生的調(diào)用失敗,提高了CPU的運(yùn)行效率。
(3)當(dāng)某個(gè)函數(shù)增加了復(fù)雜處理后,不需要調(diào)整針對它設(shè)置的超時(shí)時(shí)間,只要在函數(shù)中適當(dāng)?shù)卦黾影l(fā)送wait報(bào)文代碼即可,減少了軟件代碼維護(hù)量。還有該方法兼容原來的固定超時(shí)時(shí)間機(jī)制,對軟件系統(tǒng)的改造工作量小。


圖1為公知的一種CPU固定超時(shí)時(shí)間機(jī)制的流程圖。
圖2是本發(fā)明中調(diào)用CPU的調(diào)用過程的一種處理流程圖。
圖3是本發(fā)明中被調(diào)用CPU的執(zhí)行過程的一種處理流程圖。
圖4是本發(fā)明中被調(diào)用CPU的執(zhí)行過程的另一種處理流程圖。
圖5是本發(fā)明中調(diào)用CPU的調(diào)用過程的另一種處理流程圖。
具體實(shí)施例方式
以下結(jié)合附圖對本發(fā)明的具體實(shí)施例做進(jìn)一步的闡明。
本發(fā)明調(diào)用超時(shí)的處理方法適于由多個(gè)CPU組成的系統(tǒng)中CPU之間進(jìn)行相互通信,在具體實(shí)施例中,本發(fā)明的通信系統(tǒng)是至少包括CPU A和CPU B。CPU A中的調(diào)用任務(wù)T1調(diào)用CPU B中的函數(shù),并且CPU B執(zhí)行該函數(shù)的時(shí)間不能事先確定。以下具體舉例來說明的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法。
遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法包括CPU A的調(diào)用過程和CPU B的執(zhí)行過程。
請參閱圖2,公開了CPU A的調(diào)用過程的一種實(shí)施例,該CPU A的調(diào)用過程包括S210CPU A預(yù)先設(shè)置超時(shí)時(shí)間,該超時(shí)時(shí)間可以比固定超時(shí)時(shí)間短。當(dāng)調(diào)用過程中發(fā)生錯(cuò)誤時(shí),由于超時(shí)時(shí)間比固定超時(shí)時(shí)間短,CPU A在超時(shí)時(shí)間內(nèi)沒有收到從CPU B中發(fā)送的反饋數(shù)據(jù)包,就能判斷調(diào)用過程發(fā)生錯(cuò)誤了。所以CPU A能夠更快速發(fā)現(xiàn)錯(cuò)誤,并且調(diào)用任務(wù)T1也不會(huì)長時(shí)間阻塞,提高了CPU A的運(yùn)行效率。
S220CPUA執(zhí)行調(diào)用任務(wù)T1,發(fā)送調(diào)用報(bào)文至CPU B,具體的步驟如下首先,調(diào)用任務(wù)T1創(chuàng)建一個(gè)信號量,定義該信號量的編號和其初始值,本實(shí)施例中信號量的編號為Sem,并將其初始值定義為0;其次,構(gòu)造一個(gè)調(diào)用報(bào)文,該調(diào)用報(bào)文的內(nèi)容包括源CPU編號、目的CPU編號、源模塊號、目的模塊號、信號量編號、被調(diào)用函數(shù)及其參數(shù)。其中源CPU編號為CPU A的編號,目的CPU編號為CPU B的編號,源模塊號為CPUA的模塊號,目的模塊號為CPU B的模塊號,信號量編號為Sem;最后,發(fā)送該報(bào)文至CPU B上。
S230獲取信號量,從而使信號量的值小于0,調(diào)用的CPU無法調(diào)度到調(diào)用任務(wù)T1,即阻塞該任務(wù)T1,進(jìn)行阻塞計(jì)時(shí);S240判斷阻塞計(jì)時(shí)時(shí)間是否大于預(yù)先設(shè)定的超時(shí)時(shí)間,如果是發(fā)出調(diào)用超時(shí)錯(cuò)誤并結(jié)束執(zhí)行調(diào)用任務(wù),否則進(jìn)行步驟S250。
S250CPU A是否接收到從CPU B發(fā)送的反饋數(shù)據(jù)包,如果是進(jìn)行步驟S260,否則進(jìn)行步驟S240;S260釋放信號量Sem,喚醒任務(wù)T1,即增加信號量的值使其大于0,將此數(shù)據(jù)包放入T1的隊(duì)列中,T1就會(huì)被CPU調(diào)度到;S270CPU A執(zhí)行T1任務(wù)時(shí),從T1隊(duì)列中取出該數(shù)據(jù)包,判斷收到的數(shù)據(jù)包是否是wait報(bào)文,如果是執(zhí)行步驟S230,否則進(jìn)行步驟S280,其中Wait報(bào)文是用來CPU B要求CPUA的調(diào)用任務(wù)T1繼續(xù)等待,wait報(bào)文包括源CPU編號、目的CPU編號、源模塊號、目的模塊號、信號量編號、結(jié)果長度和調(diào)用結(jié)果。源CPU編號為CPU B的編號,目的CPU編號為CPU A的編號,源模塊號為CPU B的模塊號,目的模塊號為CPU A的模塊號,結(jié)果長度為0,是通過判斷結(jié)果長度是否為0來判斷接收到的是否是Wait報(bào)文;S280當(dāng)接收到的數(shù)據(jù)包的結(jié)果長度不為0時(shí)為result報(bào)文,從result報(bào)文中取出調(diào)用結(jié)果,繼續(xù)執(zhí)行CPU A后續(xù)的操作。
CPU B的執(zhí)行過程包括以下步驟CPU B收到調(diào)用報(bào)文,執(zhí)行被調(diào)用函數(shù),并且在執(zhí)行過程中發(fā)送wait報(bào)文至CPU A,使調(diào)用任務(wù)T1能繼續(xù)等待,每次發(fā)送Wait報(bào)文的時(shí)間間隔小于超時(shí)時(shí)間,直至執(zhí)行完該函數(shù)后,CPU B發(fā)送result報(bào)文至CPU A。請參閱圖3,為CPU B的執(zhí)行過程的第一個(gè)實(shí)施方式。
S310通過測試找出哪些函數(shù)的執(zhí)行時(shí)間不能事先確定或是執(zhí)行時(shí)間過長,并在該些函數(shù)的代碼中主動(dòng)插入發(fā)送wait報(bào)文的代碼,使得發(fā)送wait報(bào)文的時(shí)間間隔小于檢測時(shí)間,即兩個(gè)發(fā)送wait報(bào)文之間,發(fā)送wait報(bào)文和發(fā)送result報(bào)文的時(shí)間間隔都應(yīng)小于超時(shí)時(shí)間;S320CPU B接收該調(diào)用報(bào)文,從中獲取被調(diào)用的函數(shù),創(chuàng)建用來執(zhí)行該函數(shù)的執(zhí)行任務(wù)T2;S330CPU B執(zhí)行該函數(shù)中的命令操作,當(dāng)執(zhí)行到函數(shù)中的發(fā)送wait報(bào)文的代碼時(shí),向CPU A發(fā)送wait報(bào)文,該wait報(bào)文中的源CPU編號、目的CPU編號、源模塊號、目的模塊號、信號量編號從調(diào)用報(bào)文中取得,即該源CPU編號為調(diào)用報(bào)文中的目的CPU編號,目的CPU編號為調(diào)用報(bào)文中的源CPU編號,源模塊號為調(diào)用報(bào)文中的目的模塊號,目的模塊號為調(diào)用報(bào)文中的源模塊號,取得信號量編號為sem,結(jié)果長度為0;S340當(dāng)執(zhí)行任務(wù)T2結(jié)束后,發(fā)送Result報(bào)文至CPU A,Result報(bào)文中內(nèi)容包括源CPU編號、目的CPU編號、源模塊號、目的模塊號、信號量編號、結(jié)果長度、調(diào)用結(jié)果,其中源CPU編號、目的CPU編號、源模塊號、目的模塊號、信號量編號從接收到的調(diào)用報(bào)文中取得,并將調(diào)用的結(jié)果和結(jié)果長度放入該報(bào)文中調(diào)用結(jié)果和結(jié)果長度的字段內(nèi)。
如果在函數(shù)中增加復(fù)雜處理,則很有可能還需要再增加發(fā)送Wait報(bào)文的次數(shù),為了減少軟件代碼維護(hù)量,還可以通過一個(gè)計(jì)時(shí)單元來達(dá)到控制發(fā)送wait報(bào)文的目的。這是被調(diào)用CPU執(zhí)行過程的第二種實(shí)施例。在以上所述的被調(diào)用CPU執(zhí)行過程的第一實(shí)施例的基礎(chǔ)上進(jìn)行改進(jìn)。當(dāng)創(chuàng)建T2時(shí),可設(shè)置一個(gè)計(jì)時(shí)單元,根據(jù)計(jì)時(shí)單元的計(jì)時(shí)時(shí)間發(fā)送wait報(bào)文,發(fā)送wait報(bào)文的時(shí)間間隔小于檢測時(shí)間。
在上述兩種CPU B的執(zhí)行過程的實(shí)施例中,如將超時(shí)時(shí)間設(shè)置為10S,在CPU B的函數(shù)中主動(dòng)加入發(fā)送Wait報(bào)文時(shí),很有可能不知道調(diào)用的CPU中設(shè)置的超時(shí)時(shí)間,僅能估計(jì)該代碼占用的時(shí)間可能長于超時(shí)時(shí)間,為了防止產(chǎn)生超時(shí)錯(cuò)誤,用戶事先會(huì)插入多個(gè)發(fā)送wait報(bào)文的代碼,如間隔為1S就發(fā)送一次wait報(bào)文,雖然克服了被調(diào)用函數(shù)執(zhí)行時(shí)間長而超時(shí)的問題,但是它需要CPU A不停地阻塞調(diào)用任務(wù)T1和CPU B不停地發(fā)送wait報(bào)文,存在著CPU效率低的問題。假設(shè)CPU B執(zhí)行該函數(shù)需要20S,設(shè)定的超時(shí)時(shí)間為8S,如果間隔1sCPU B就需發(fā)送一次wait報(bào)文,則CPU A在該同步調(diào)用中至少收到19次wait報(bào)文,阻塞19次調(diào)用任務(wù),同樣CPU B至少發(fā)送19次wait報(bào)文,造成CPU效率很低。作為上述方法的一種改進(jìn)在被調(diào)用CPU也可以這樣完成所述任務(wù)首先CPU A將內(nèi)容中增加預(yù)先設(shè)定超時(shí)時(shí)間的調(diào)用報(bào)文發(fā)送至被調(diào)用的CPU上,如預(yù)先設(shè)定的超時(shí)時(shí)間為10S,則10S通過調(diào)用報(bào)文發(fā)送至CPU A上,請參閱圖4,為CPU B的執(zhí)行過程的第三個(gè)具體實(shí)施例,具體步驟如下。
S410CPU B接收到調(diào)用報(bào)文,啟動(dòng)計(jì)時(shí)任務(wù)T3的定時(shí)器;-S420根據(jù)調(diào)用報(bào)文中的預(yù)先設(shè)定的超時(shí)時(shí)間10S,確定計(jì)時(shí)任務(wù)T3中的計(jì)時(shí)時(shí)間Time,計(jì)時(shí)時(shí)間小于超時(shí)時(shí)間,并可為超時(shí)時(shí)間的50%-90%,在本實(shí)施例中設(shè)置計(jì)時(shí)時(shí)間為超時(shí)時(shí)間的80%,即8S;S430被調(diào)用的CPU中任務(wù)T2執(zhí)行函數(shù)調(diào)用;S440T3判斷執(zhí)行時(shí)間是否是計(jì)時(shí)時(shí)間8S的倍數(shù),如果是T3主動(dòng)發(fā)送wait報(bào)文至調(diào)用CPU的T1,否則進(jìn)行步驟S450;S450,判斷是否為已執(zhí)行完畢,如果是則T2發(fā)出Result報(bào)文,T3中的定時(shí)器被停止,否則進(jìn)行步驟S440。
以上的實(shí)施例中,能夠根據(jù)調(diào)用的CPU中預(yù)先設(shè)定的超時(shí)時(shí)間來決定發(fā)送wait報(bào)文的時(shí)間,以本實(shí)施例為例,設(shè)置的超時(shí)時(shí)間為10s,根據(jù)從調(diào)用報(bào)文中收到的10S確定計(jì)時(shí)時(shí)間為8S,如果執(zhí)行本函數(shù)的時(shí)間為20S,只需發(fā)送2次wait報(bào)文命令即可,提高了CPU的利用率,保持了系統(tǒng)的簡單和清晰。
在CPUA的調(diào)用過程還可以提供另一種實(shí)施方式,請參閱圖5。
S510CPUA設(shè)定超時(shí)時(shí)間;S520CPUA執(zhí)行調(diào)用任務(wù)T1,發(fā)送調(diào)用報(bào)文至CPU B,調(diào)用報(bào)文中包括被調(diào)用函數(shù)名稱;S530調(diào)用任務(wù)T1開始睡眠;S540當(dāng)睡眠時(shí)間等于預(yù)先設(shè)定的超時(shí)時(shí)間時(shí),喚醒調(diào)用任務(wù);S550判斷是否收到從CPU B發(fā)送的反饋數(shù)據(jù)包,如果是進(jìn)行步驟S560,否則發(fā)出調(diào)用超時(shí)錯(cuò)誤并結(jié)束執(zhí)行調(diào)用任務(wù);S560判斷數(shù)據(jù)包中是否有result報(bào)文,如果有從接收到的result報(bào)文中獲得調(diào)用結(jié)果,否則進(jìn)行步驟S530。
信號量方式接受到Wait報(bào)文或者Result報(bào)文,信號量得到釋放后。調(diào)用任務(wù)能夠立即得到調(diào)度。而睡眠方式則必須睡眠到指定時(shí)間后,操作系統(tǒng)才會(huì)去喚醒調(diào)用任務(wù)。可以看出,信號量方式比睡眠方式的效率要高。
以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但并非局限于此,任何本領(lǐng)域的技術(shù)人員在此基礎(chǔ)上能思之的變動(dòng),都應(yīng)落入本發(fā)明保護(hù)范圍。
權(quán)利要求
1.一種遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,包括調(diào)用CPU的調(diào)用過程和被調(diào)用CPU的執(zhí)行過程,其中,所述調(diào)用CPU的調(diào)用過程包括(1)執(zhí)行調(diào)用任務(wù),發(fā)送調(diào)用報(bào)文至被調(diào)用CPU,所述調(diào)用報(bào)文包括信號量編號和被調(diào)用函數(shù)名稱;(2)獲取信號量,阻塞調(diào)用任務(wù),進(jìn)行阻塞計(jì)時(shí);(3)判斷阻塞計(jì)時(shí)時(shí)間是否大于預(yù)先設(shè)定的超時(shí)時(shí)間,如果是,結(jié)束執(zhí)行調(diào)用任務(wù),否則進(jìn)行步驟(4);(4)判斷是否收到被調(diào)用的CPU發(fā)送的反饋數(shù)據(jù)包,如果是,釋放信號量,喚醒調(diào)用任務(wù),然后進(jìn)行步驟(5),否則進(jìn)行步驟(3);(5)判斷數(shù)據(jù)包是否是wait報(bào)文,如果是,進(jìn)行步驟(2),否則從接收的result報(bào)文中獲得調(diào)用結(jié)果;所述被調(diào)用CPU處理過程包括(6)被調(diào)用CPU收到調(diào)用報(bào)文,執(zhí)行被調(diào)用函數(shù),并且在執(zhí)行過程中發(fā)送wait報(bào)文至調(diào)用CPU,所述發(fā)送wait報(bào)文的時(shí)間間隔小于超時(shí)時(shí)間;(7)執(zhí)行函數(shù)結(jié)束后發(fā)送包括調(diào)用結(jié)果的result報(bào)文至調(diào)用CPU。
2.如權(quán)利要求1所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,所述超時(shí)時(shí)間小于調(diào)用CPU估計(jì)調(diào)用所述函數(shù)需要執(zhí)行的固定超時(shí)時(shí)間。
3.如權(quán)利要求1所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于還包括在被調(diào)用CPU的函數(shù)中預(yù)先插入向調(diào)用任務(wù)發(fā)送Wait報(bào)文的代碼。
4.如權(quán)利要求3所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,步驟(6)中通過執(zhí)行發(fā)送wait報(bào)文的代碼來執(zhí)行發(fā)送wait報(bào)文的操作。
5.如權(quán)利要求1所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,步驟(6)中通過一個(gè)計(jì)時(shí)單元來控制發(fā)送wait報(bào)文的時(shí)間。
6.如權(quán)利要求1所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,所述調(diào)用報(bào)文中還包括超時(shí)時(shí)間。
7.如權(quán)利要求6所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,步驟(6)還包括(6-1)被調(diào)用CPU根據(jù)接收到的調(diào)用報(bào)文中的超時(shí)時(shí)間,確定向調(diào)用CPU發(fā)送wait報(bào)文的時(shí)間間隔;(6-2)當(dāng)被調(diào)用CPU執(zhí)行所述函數(shù)的時(shí)間是所述時(shí)間間隔的倍數(shù)時(shí),發(fā)送wait報(bào)文。
8.如權(quán)利要求1所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,步驟(5)通過判斷接收到的報(bào)文中的結(jié)果長度是否為0來判斷是否是wait報(bào)文。
9.一種遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,包括調(diào)用CPU處理過程和被調(diào)用CPU處理過程,其中所述調(diào)用CPU處理過程包括(1)執(zhí)行調(diào)用任務(wù),發(fā)送調(diào)用報(bào)文至被調(diào)用CPU,所述調(diào)用報(bào)文包括被調(diào)用函數(shù);(2)調(diào)用任務(wù)開始睡眠,進(jìn)行睡眠計(jì)時(shí);(3)判斷睡眠計(jì)時(shí)時(shí)間是否大于等于預(yù)先設(shè)定的超時(shí)時(shí)間,如果是喚醒調(diào)用任務(wù),然后進(jìn)行步驟(4),否則進(jìn)行步驟(3);(4)判斷是否收到被調(diào)用的CPU發(fā)送的反饋數(shù)據(jù)包,如果是進(jìn)行步驟(5),否則結(jié)束執(zhí)行調(diào)用任務(wù);(5)判斷收到的數(shù)據(jù)包中是否有result報(bào)文,如果有,則從所述result報(bào)文中獲得調(diào)用結(jié)果,否則進(jìn)行步驟(2);所述被調(diào)用CPU處理過程包括(6)被調(diào)用CPU收到調(diào)用報(bào)文,執(zhí)行被調(diào)用函數(shù),并且在執(zhí)行過程中發(fā)送wait報(bào)文至調(diào)用CPU,發(fā)送wait報(bào)文的時(shí)間間隔小于超時(shí)時(shí)間;(7)執(zhí)行函數(shù)結(jié)束后發(fā)送包括調(diào)用結(jié)果的result報(bào)文至調(diào)用CPU。
10.如權(quán)利要求9所述的遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,其特征在于,預(yù)先設(shè)置的超時(shí)時(shí)間小于調(diào)用CPU估計(jì)調(diào)用所述函數(shù)需要執(zhí)行的固定超時(shí)時(shí)間。
全文摘要
一種遠(yuǎn)程同步調(diào)用過程中的超時(shí)自適應(yīng)方法,包括調(diào)用CPU的調(diào)用過程和被調(diào)用CPU的執(zhí)行過程,其中調(diào)用CPU首先執(zhí)行調(diào)用任務(wù),發(fā)送調(diào)用報(bào)文至被調(diào)用CPU,獲取信號量,阻塞調(diào)用任務(wù),接著判斷在超時(shí)時(shí)間內(nèi)是否收到反饋數(shù)據(jù)包,如果是調(diào)用失敗,否則判斷收到的數(shù)據(jù)包是否是wait報(bào)文,如果是重新獲取信號量,阻塞任務(wù),重新進(jìn)行阻塞計(jì)時(shí),如果收到的result中取得調(diào)用結(jié)果,調(diào)用成功;被調(diào)用CPU收到調(diào)用報(bào)文,執(zhí)行被調(diào)用函數(shù),并且在執(zhí)行過程中發(fā)送wait報(bào)文至調(diào)用CPU,發(fā)送wait報(bào)文的時(shí)間間隔小于超時(shí)時(shí)間;執(zhí)行函數(shù)結(jié)束后發(fā)送包括調(diào)用結(jié)果的result報(bào)文至調(diào)用CPU。使用該方法不會(huì)因?yàn)楸徽{(diào)用函數(shù)執(zhí)行時(shí)間長而發(fā)生調(diào)用超時(shí)錯(cuò)誤,并且,能夠快速發(fā)現(xiàn)調(diào)用過程中的調(diào)用錯(cuò)誤。
文檔編號G06F15/16GK1635485SQ20031012083
公開日2005年7月6日 申請日期2003年12月26日 優(yōu)先權(quán)日2003年12月26日
發(fā)明者馬國強(qiáng) 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
柳州市| 隆安县| 汝阳县| 都江堰市| 新巴尔虎右旗| 宝坻区| 睢宁县| 海宁市| 竹北市| 康平县| 丽水市| 仙游县| 三门峡市| 巧家县| 北海市| 玉山县| 韶关市| 孙吴县| 邵阳县| 都兰县| 武冈市| 东阳市| 东莞市| 嵩明县| 遵化市| 泰安市| 吴忠市| 泰顺县| 集贤县| 新乡市| 宾阳县| 师宗县| 长岛县| 吕梁市| 禄丰县| 连云港市| 子长县| 柳林县| 维西| 东丽区| 宁城县|