一種信號量的處理方法及系統的製作方法
2023-05-05 20:38:11
專利名稱:一種信號量的處理方法及系統的製作方法
技術領域:
本發明涉及信號量計數技術領域,更具體的說,涉及信號量的處理方法及系統。
背景技術:
現時Unix系統上欲建立的生產者-消費者模型,最佳選擇都是使用SystemV信號量來作為計數器。信號量又稱為號誌,用來解決進程同步與互斥問題的機制。在系統中,給予每一個進程一個信號量,代表每個進程目前的狀態,以確保進程在訪問共享數據時,碰撞的情況不會發生。SystemV信號量是Unix裡的兩套接口標準。SystemV的信號量接口,可以同時執行多個信號量操作且一次執行保持原子性。但是SystemV信號量取值範圍非常有限,每個SystemV信號量的取值範圍是O 32767。這對於要求資源數較大的系統來說,這是遠遠不足夠的。顯然,現有技術的缺點是計數器取值範圍小,不滿足大計數器要求。因此,如何增大信號量的取值範圍,成為目前最需要解決的問題。
發明內容
有鑑於此,本發明的設計目的在於,一種信號量的處理方法及系統,以增大信號量的取值範圍,從而滿足大計數器的需求。本發明實施例是這樣實現的—種信號量的處理方法,包括獲取兩個信號量;通過轉換器將第一信號量設置為高位信號量,並通過所述轉換器將第二信號量設置為低位信號量;將所述高位信號量和低位信號量組合成為一個計數器;當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。優選地,在上述的信號量的處理方法中,所述信號量具體為SystemV信號量。優選地,在上述的信號量的處理方法中,所述SystemV信號量的取值範圍為O至 32767。優選地,在上述的信號量的處理方法中,所述計數器的低位信號量的取值範圍為O 至 32767。優選地,在上述的信號量的處理方法中,所述計數器的高位信號量的取值範圍為O 至 32767。優選地,在上述的信號量的處理方法中,所述計數器的取值範圍為O至 1073676289。
—種信號量的處理系統,包括獲取模塊,用於獲取兩個信號量;轉換器,用於將第一信號量設置為高位信號量,並將第二信號量設置為低位信號組合模塊,用於將所述高位信號量和低位信號量組合成為一個計數器;控制模塊,用於當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。與現有技術相比,本實施例提供的技術方案具有以下優點和特點在本發明提供的方案中,分別將獲取到的兩個信號量設置為高位信號量和低位信號量,並將這兩個信號量組合成為一個計數器,並將高位信號量作為計數器的高位,將低位信號量作為計數器的低位,從而實現將信號量的取值範圍擴大到信號量取值範圍的平方。 因此,本發明提供的方案具有更大的取值範圍,以滿足大計數量的需求。
為了更清楚地說明本發明或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖I為本發明所提供的信號量的處理方法的流程圖;圖2為本發明所提供的信號量的處理系統的模塊圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。本發明實施例提供了一種信號量的處理方法,包括獲取兩個信號量;通過轉換器將第一信號量設置為高位信號量,並通過所述轉換器將第二信號量設置為低位信號量; 將所述高位信號量和低位信號量組合成為一個計數器;當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。由於上述信號量的處理方法的具體實現存在多種方式,下面通過具體實施例進行詳細說明請參見圖I所示,圖I所示的為信號量的處理方法,包括步驟SI、獲取兩個信號量;步驟S2、通過轉換器將第一信號量設置為高位信號量,並通過所述轉換器將第二信號量設置為低位信號量;步驟S3、將所述高位信號量和低位信號量組合成為一個計數器;
4
步驟S4、當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;步驟S5、當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。在本發明提供的方案中,分別將獲取到的兩個信號量設置為高位信號量和低位信號量,並將這兩個信號量組合成為一個計數器,並將高位信號量作為計數器的高位,將低位信號量作為計數器的低位,從而實現將信號量的取值範圍擴大到信號量取值範圍的平方。 因此,本發明提供的方案具有更大的取值範圍,以滿足大計數量的需求。在圖I所示的實施例中,所述信號量具體為SystemV信號量,該SystemV信號量的取值範圍為O至32767。由於計數器是由兩個SystemV信號量組成的,所以計數器的低位信號量的取值範圍為O至32767,所述計數器的高位信號量的取值範圍為O至32767,這樣計數器的最大範圍是(32767,32767),即該範圍的取值範圍為O至1073676289,因此,相對於現有技術的取值範圍為O至32767來說,本發明能夠解決更大計數範圍的問題,從而可以滿足一些用戶的需求。例如,以計費項目為例,當要統計存放在內存中的報文數,32767的取值顯然不足,1073676289是十億級,從而可以很容易的進行計數。下面簡要介紹,本發明提供的計數器在做加法或減法運算時,出現的一般情況和特殊情況。對於計數器做加法運算的過程中計數成功計數器開始計數,從低位開始,低位+1 ;檢測低位+1後是否超過最大取值,沒有超過,則表示計數成功;檢測低位超過了最大值,則需要向高位進位,高位+1,低位-MAX。進位成功,則表示計數成功。以AIX主機為例,MAX取值為32767,(H,L)表示高低位,計數器當前取值(0,32767),此時+1,則為(0+1,32767-32767)即為(1,0)。計數是失敗第一種進位失敗的情況,高位+1失敗,比如計數器當前取值(32767,32767),此時計數器+1,低位超過最大值,需要進位,執行高位+1,低位-MAX,但是高位32767+1 = 32768 超過最大值,計數失敗,計數器滿。第二種進位失敗的情況,低位-MAX失敗,這是進程並發造成的結果。比如計數器當前取值(1,32767),此時A進程執行計數器+1,但還沒執行前,恰好B進程執行了計數器-1,即計數器變為(I,32766),A進程再執行32766-32767 = _1會失敗,此時A進程直接回到第⑴步。對於計數器做減法運算的過程中步驟I、檢查計數器有沒有進位,沒有進位執行步驟2,有進位執行步驟2。步驟2、沒有進位表示高位為O,直接低位-I。步驟2. I、計數器-I成功(如果計數器當前值是(0,O),則不執行-I),進位標記為
O,返回成功。比如計數器為(O, 10),執行-I後,為(0,9)。步驟2. 2、計數器-I失敗,此時是並發進程操作造成失敗,發生了進位操作,有進位執行步驟3。比如計數器當前值為(0,32767),A進程在執行-I之前,B進程執行了 +1, 即計數器變為(1,0),此時有進位,進位標記為1,A進程再執行-I後0-1 = -I失敗。步驟3、執行低位-I操作,成功直接返回。比如(1,1)變為(1,0)。步驟4、低位-I失敗,執行退位,低位+MAX,高位-I。退位成功檢查高位值,返回成功。比如(1,0)退位後為(1-1,0+32767)為(0,32767),檢查高位置為0,成功。步驟5、退位如果失敗,是並發進程造成的結果,有兩種情況步驟51、高位不夠減比如計數器當前值(I,O),A進程在執行-I之前,B進程執行了-1,則計數器變為(0,32767),A進程再執行-1,高位-I即0-1 =-I失敗。則置進位標記為0,直接執行低位-1,返回到步驟2。步驟52、低位超最大值比如計數器當前值為(1,0),A進程在執行_1之前,B進程執行了 +1,即計數器變為(1,I),A進程再執行-1,低位+MAX即1+32767 = 32768失敗。 則A可以直接執行低位-I為(1,0),回到步驟3。下面通過實際的案例來說明上述計數器的應用在計費系統內,設備A向設備B發送請求數據。設備B每收到設備A發送的一筆請求數據後,計數器執行+1。設備B收到請求數據進行處理後,返回應答數據給設備A,每次處理完一筆,計數器執行-I。設備B內是一個典型的生產者-消費者模型,生產者進程生產,消費者進程消耗。生產者進程執行+1, 消費者進程執行-I。請參見圖2所示,圖2所示的為信號量的處理系統,包括獲取模塊1,用於獲取兩個信號量;轉換器2,用於將第一信號量設置為高位信號量,並將第二信號量設置為低位信號量;組合模塊3,用於將所述高位信號量和低位信號量組合成為一個計數器;控制模塊4, 用於當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。由於本發明提供的信號量的處理系統與上述的方法相對應,所以該處理系統的其他功能請與方法部分相互參見即可。綜上所述,本發明解決了原有計數器取值小的問題,從而可以了解實時計費系統中消息的響應速度,消息是否積壓。還可以監控實時計費系統中各項業務指標,為收入保障提供技術支持。比如統計一段時間內請求報文數,應答報文數,實時累計金額,用戶呼叫次數等等。當然,本發明提供的技術方法還可以應用到其他系統任何需要計數的地方。需要說明的是,圖I和圖2所示的實施例只是本發明所介紹的優選實施例,本領域技術人員在此基礎上,完全可以設計出更多的實施例,因此不在此處贅述。本說明書中各個實施例採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對於實施例公開的裝置而言,由於其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。本領域技術人員可以理解,可以使用許多不同的工藝和技術中的任意一種來表示信息、消息和信號。例如,上述說明中提到過的消息、信息都可以表示為電壓、電流、電磁波、 磁場或磁性粒子、光場或以上任意組合。專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬體、處理器執行的軟體模塊,或者二者的結合來實施。軟體模塊可以置於隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬碟、可移動磁碟、CD-ROM、或技術領域內所公知的任意其它形式的存儲介質中。對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或範圍的情況下,在其它實施例中實現。因此,本發明將不會被限制於本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的範圍。
權利要求
1.一種信號量的處理方法,其特徵在於,包括獲取兩個信號量;通過轉換器將第一信號量設置為高位信號量,並通過所述轉換器將第二信號量設置為低位信號量;將所述高位信號量和低位信號量組合成為一個計數器;當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。
2.根據權利要求I所述的信號量的處理方法,其特徵在於,所述信號量具體為SystemV信號量。
3.根據權利要求2所述的信號量的處理方法,其特徵在於,所述SystemV信號量的取值範圍為O至32767。
4.根據權利要求3所述的信號量的處理方法,其特徵在於,所述計數器的低位信號量的取值範圍為O至32767。
5.根據權利要求3所述的信號量的處理方法,其特徵在於,所述計數器的高位信號量的取值範圍為O至32767。
6.根據權利要求3所述的信號量的處理方法,其特徵在於,所述計數器的取值範圍為O 至 1073676289。
7.—種信號量的處理系統,其特徵在於,包括獲取模塊,用於獲取兩個信號量;轉換器,用於將第一信號量設置為高位信號量,並將第二信號量設置為低位信號量;組合模塊,用於將所述高位信號量和低位信號量組合成為一個計數器;控制模塊,用於當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零; 當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。
全文摘要
本發明公開了一種信號量的處理方法及系統,方法包括獲取兩個信號量;通過轉換器將第一信號量設置為高位信號量,並通過轉換器將第二信號量設置為低位信號量;將高位信號量和低位信號量組合成為一個計數器;當計數器的低位滿極限且低位加一,則計數器的高位加一且低位變零;當計數器的高位有值、低位為零且低位減一時,則計數器的高位減一且低位變滿極限。分別將獲取到的兩個信號量設置為高位信號量和低位信號量,並將這兩個信號量組合成為一個計數器,並將高位信號量作為計數器的高位,將低位信號量作為計數器的低位,從而實現將信號量的取值範圍擴大到信號量取值範圍的平方。因此,本發明提供的方案具有更大的取值範圍,以滿足大計數量的需求。
文檔編號G06F9/52GK102609318SQ20121001190
公開日2012年7月25日 申請日期2012年1月13日 優先權日2012年1月13日
發明者崔啟文 申請人:廣州從興電子開發有限公司