亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種訪問共享內(nèi)存異常的系統(tǒng)及方法

文檔序號:9631456閱讀:609來源:國知局
一種訪問共享內(nèi)存異常的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種應(yīng)用于嵌入式系統(tǒng)上的訪問共享內(nèi)存異常的系統(tǒng)及方法。
【背景技術(shù)】
[0002]共享內(nèi)存是進(jìn)程間通信的一種方式,允許兩個獨(dú)立的進(jìn)程訪問同一個邏輯內(nèi)存,以實(shí)現(xiàn)進(jìn)程之間數(shù)據(jù)的共享和傳遞。但共享內(nèi)存并未提供同步機(jī)制,也就是說,在第一個進(jìn)程結(jié)束對共享內(nèi)存的寫操作之前,沒有自動機(jī)制可以阻止第二個進(jìn)程開始對共享內(nèi)存進(jìn)行讀取。目前在Linux系統(tǒng)中最常見的方式是采用信號量的“取鎖”與“解鎖”的機(jī)制來同步對共享內(nèi)存的訪問,以實(shí)現(xiàn)對共享內(nèi)存的數(shù)據(jù)讀取。信號量的“取鎖”與“解鎖”的機(jī)制可也稱為檢測機(jī)制,即通過某個臨界值來判斷鎖是否異常,進(jìn)程是否處于異常狀態(tài)。這種臨界值一般為經(jīng)驗(yàn)值,沒有經(jīng)過嚴(yán)格推算和詳細(xì)驗(yàn)證。由于進(jìn)程對共享內(nèi)存的訪問是非常頻繁的,因此需要頻繁的檢測信號量的持鎖時(shí)間,通常檢測機(jī)制的臨界值普遍為經(jīng)驗(yàn)值不能準(zhǔn)確的判斷鎖是否正常,容易影響訪問共享內(nèi)存的工作效率。

【發(fā)明內(nèi)容】

[0003]針對現(xiàn)有的信號量的檢測機(jī)制存在的上述問題,現(xiàn)提供一種旨在實(shí)現(xiàn)可在一定的等待時(shí)間內(nèi)讓異常進(jìn)程自行恢復(fù),提高訪問效率的訪問共享內(nèi)存異常的系統(tǒng)及方法。
[0004]具體技術(shù)方案如下:
[0005]—種訪問共享內(nèi)存異常的系統(tǒng),應(yīng)用于目標(biāo)進(jìn)程訪問共享內(nèi)存單元,提供一信號量以標(biāo)識所述共享內(nèi)存單元的當(dāng)前狀態(tài),包括:
[0006]—接收單元,用以接收所述目標(biāo)進(jìn)程的訪問請求;
[0007]—檢測單元,連接所述接收單元,用以檢測所述信號量是否空閑;
[0008]—獲取單元,連接所述檢測單元,當(dāng)所述信號量空閑時(shí),所述獲取單元獲取所述信號量,以使所述目標(biāo)進(jìn)程訪問所述共享內(nèi)存單元;
[0009]—判斷單元,連接所述檢測單元,用以判斷所述信號量的標(biāo)志位是否為第一預(yù)設(shè)狀態(tài);
[0010]一處理單元,分別連接所述判斷單元和所述檢測單元,提供一第一預(yù)設(shè)條件,當(dāng)所述信號量的標(biāo)志位為第一預(yù)設(shè)狀態(tài)時(shí),所述處理單元用以將所述第一預(yù)設(shè)狀態(tài)轉(zhuǎn)換為第二預(yù)設(shè)狀態(tài),并在所述第一預(yù)設(shè)條件下控制所述檢測單元檢測所述信號量是否空閑;
[0011]—調(diào)度控制單元,連接所述判斷單元,用以在所述信號量的標(biāo)志位為所述第二預(yù)設(shè)狀態(tài)時(shí),釋放所述信號量,以停止當(dāng)前訪問的進(jìn)程。
[0012]優(yōu)選的,所述處理單元提供一第二預(yù)設(shè)條件,用以在所述第二預(yù)設(shè)條件下控制所述目標(biāo)進(jìn)程訪問所述共享內(nèi)存單元。
[0013]優(yōu)選的,所述處理單元包括:
[0014]—轉(zhuǎn)換模塊,用以將所述信號量的標(biāo)志位從所述第一預(yù)設(shè)狀態(tài)轉(zhuǎn)換為狀態(tài)為第二預(yù)設(shè)狀態(tài);
[0015]—計(jì)時(shí)模塊,連接所述轉(zhuǎn)換模塊,用以記錄所述信號量的標(biāo)志位處于第二預(yù)設(shè)狀態(tài)的持續(xù)時(shí)間;
[0016]—比較模塊,連接所述計(jì)時(shí)模塊,提供一閾值時(shí)間,用以比較所述持續(xù)時(shí)間是否大于或等于所述閾值時(shí)間;
[0017]—處理模塊,連接所述比較模塊,當(dāng)所述持續(xù)時(shí)間大于或等于所述閾值時(shí)間時(shí),即為所述第一預(yù)設(shè)條件,所述處理模塊用以在所述第一預(yù)設(shè)條件下輸出控制指令,以控制所述檢測單元檢測所述信號量是否空閑。
[0018]優(yōu)選的,當(dāng)所述持續(xù)時(shí)間小于所述閾值時(shí)間時(shí),即為所述第二預(yù)設(shè)條件,所述處理模塊用以在所述第二預(yù)設(shè)條件下控制所述目標(biāo)進(jìn)程訪問所述共享內(nèi)存單元。
[0019]優(yōu)選的,所述目標(biāo)進(jìn)程和所述當(dāng)前訪問的進(jìn)程為同等優(yōu)先級調(diào)度的進(jìn)程。
[0020]優(yōu)選的,所述第一預(yù)設(shè)狀態(tài)為等待狀態(tài)。
[0021 ] 優(yōu)選的,所述第二預(yù)設(shè)狀態(tài)為觸發(fā)狀態(tài)。
[0022]—種訪問共享內(nèi)存異常的方法,應(yīng)用于目標(biāo)進(jìn)程訪問共享內(nèi)存單元,提供一信號量以標(biāo)識所述共享內(nèi)存單元的當(dāng)前狀態(tài),令所述信號量的標(biāo)志位為等待狀態(tài),包括下述步驟:
[0023]S1.接收所述目標(biāo)進(jìn)程的訪問請求;
[0024]S2.檢測所述信號量是否空閑,若是,執(zhí)行所述步驟S3 ;若否,執(zhí)行所述步驟S4 ;
[0025]S3.獲取所述信號量,以使所述目標(biāo)進(jìn)程訪問所述共享內(nèi)存單元,結(jié)束;
[0026]S4.判斷所述信號量的標(biāo)志位是否為所述等待狀態(tài),若是,執(zhí)行步驟S5 ;若否,則所述信號量的標(biāo)志位為觸發(fā)狀態(tài),執(zhí)行步驟S6 ;
[0027]S5.將所述等待狀態(tài)轉(zhuǎn)換為所述觸發(fā)狀態(tài),并在一第一預(yù)設(shè)條件下返回執(zhí)行所述步驟S2 ;
[0028]S6.釋放所述信號量,以停止當(dāng)前訪問的進(jìn)程。
[0029]優(yōu)選的,在所述步驟S5中,還包括在所述第二預(yù)設(shè)條件下控制所述目標(biāo)進(jìn)程訪問所述共享內(nèi)存單元。
[0030]優(yōu)選的,所述步驟S5的包括:
[0031]S51.將所述信號量的標(biāo)志位從所述等待狀態(tài)轉(zhuǎn)換為所述觸發(fā)狀態(tài);
[0032]S52.記錄所述信號量的標(biāo)志位處于所述觸發(fā)狀態(tài)的持續(xù)時(shí)間;
[0033]S53.比較所述持續(xù)時(shí)間是否小于所述閾值時(shí)間,當(dāng)所述持續(xù)時(shí)間大于或等于所述閾值時(shí)間時(shí),即為所述第一預(yù)設(shè)條件,返回執(zhí)行所述步驟S2 ;當(dāng)所述持續(xù)時(shí)間小于所述閾值時(shí)間時(shí),即為所述第二預(yù)設(shè)條件,執(zhí)行步驟S54 ;
[0034]S54.在所述第二預(yù)設(shè)條件下控制所述目標(biāo)進(jìn)程訪問所述共享內(nèi)存單元。
[0035]優(yōu)選的,所述目標(biāo)進(jìn)程和所述當(dāng)前訪問的進(jìn)程為同等優(yōu)先級調(diào)度的進(jìn)程。
[0036]上述技術(shù)方案的有益效果:
[0037]在本技術(shù)方案中,在訪問共享內(nèi)存異常的系統(tǒng)中通過處理單元可在一定的等待時(shí)間內(nèi)讓異常進(jìn)程自行恢復(fù),而不是強(qiáng)制通過預(yù)設(shè)的時(shí)間值來觸發(fā)處理流程,提高了訪問效率,通過調(diào)度控制單元可強(qiáng)制停止異常進(jìn)程,以防止異常進(jìn)程長時(shí)間占用共享內(nèi)存影響其他進(jìn)程訪問。訪問共享內(nèi)存異常的方法可在異常進(jìn)程狀態(tài)下,為進(jìn)程提供自行恢復(fù)的時(shí)間,若進(jìn)程可以自行恢復(fù),就可避免強(qiáng)制停止異常進(jìn)程的情形,提高了訪問的效率。
【附圖說明】
[0038]圖1為本發(fā)明所述的訪問共享內(nèi)存異常的系統(tǒng)的一種實(shí)施例的模塊圖;
[0039]圖2為本發(fā)明所述的訪問共享內(nèi)存異常的方法的一種實(shí)施例的方法流程圖;
[0040]圖3為本發(fā)明所述的訪問共享內(nèi)存異常的方法的另一種實(shí)施例的方法流程圖。
【具體實(shí)施方式】
[0041]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0042]需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0043]下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但不作為本發(fā)明的限定。
[0044]如圖1所示,一種訪問共享內(nèi)存異常的系統(tǒng),應(yīng)用于目標(biāo)進(jìn)程訪問共享內(nèi)存單元,提供一信號量以標(biāo)識共享內(nèi)存單元的當(dāng)前狀態(tài),包括:
[0045]—接收單元2,用以接收目標(biāo)進(jìn)程的訪問請求;
[0046]—檢測單元3,連接接收單元2,用以檢測信號量是否空閑;
[0047]—獲取單元1,連接檢測單元3,當(dāng)信號量空閑時(shí),獲取單元I獲取信號量,以使目標(biāo)進(jìn)程訪問共享內(nèi)存單元;
[0048]—判斷單元6,連接檢測單元3,用以判斷信號量的標(biāo)志位是否為第一預(yù)設(shè)狀態(tài);
[0049]—處理單元4,分別連接判斷單元6和檢測單元3,提供一第一預(yù)設(shè)條件,當(dāng)信號量的標(biāo)志位為第一預(yù)設(shè)狀態(tài)時(shí),處理單元4用以將第一預(yù)設(shè)狀態(tài)轉(zhuǎn)換為第二預(yù)設(shè)狀態(tài),并在第一預(yù)設(shè)條件下控制檢測單元3檢測信號量是否空閑;
[0050]一調(diào)度控制單元5,連接判斷單元6,用以在信號量的標(biāo)志位為第二預(yù)設(shè)狀態(tài)時(shí),釋放信號量,以停止當(dāng)前訪問的進(jìn)程。
[0051]進(jìn)一步地,第一預(yù)設(shè)狀態(tài)為等待狀態(tài),第二預(yù)設(shè)狀態(tài)為觸發(fā)狀態(tài)。在進(jìn)程在獲取信號量之前可將信號量的標(biāo)志位設(shè)為等待狀態(tài)。
[0052]在本實(shí)施例中,在第一次判斷信號量的標(biāo)志位時(shí),若是等待狀態(tài)可通過處理單元4實(shí)現(xiàn)在一定的等待時(shí)間內(nèi)讓異常進(jìn)程自行恢復(fù),而不是強(qiáng)制通過預(yù)設(shè)的時(shí)間值來觸發(fā)處理流程,提高了訪問效率,若當(dāng)判斷單元6判斷信號量的標(biāo)志位是觸發(fā)狀態(tài)時(shí),可通過調(diào)度控制單元5強(qiáng)制停止異常進(jìn)程,以防止異常進(jìn)程長時(shí)間占用共享內(nèi)存影響其他進(jìn)程訪問。實(shí)現(xiàn)了在一定的等待時(shí)間內(nèi)異常進(jìn)程沒有自行恢復(fù)時(shí),通過調(diào)度控制單元5強(qiáng)制停止異常進(jìn)程的目的。
[0053]在優(yōu)選的實(shí)施例中,處理單元4提供一第二預(yù)設(shè)條件,用以在第二預(yù)設(shè)條件下控制目標(biāo)進(jìn)程訪問共享內(nèi)存單元。
[0054]在優(yōu)選的實(shí)施例中,處理單元4包括:
[0055]—轉(zhuǎn)換模塊41,用以將信號量的標(biāo)志位從第一預(yù)設(shè)狀態(tài)轉(zhuǎn)換為狀態(tài)為第二預(yù)設(shè)狀態(tài);
[0056]—計(jì)時(shí)模塊42,連接轉(zhuǎn)換模塊41,用以記錄信號量的標(biāo)志位處于第二預(yù)設(shè)狀態(tài)的持續(xù)時(shí)間;
[0057]—比較模塊44,連接計(jì)時(shí)模塊42,提供一閾值時(shí)間,用以比較持續(xù)時(shí)間是否大于或等于閾值時(shí)間;
[0058]—處理模塊43,連接比較模塊44,當(dāng)持續(xù)時(shí)間大于或等于閾值時(shí)間時(shí),即為第一預(yù)設(shè)條件,處理模塊43用以在第一預(yù)設(shè)條件下輸出控制指令,以控制檢測單元3檢測信號量是否空閑。
[0059]在本實(shí)施例中,以進(jìn)程A和進(jìn)程B為例具體說明訪問共享內(nèi)存異常的處理原理:若進(jìn)程A獲取信號量后,進(jìn)行后續(xù)處理,在釋放信號量前因某種原因進(jìn)程A卡在某個處理上,導(dǎo)致不能及時(shí)釋放信號量。如果此時(shí)
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1