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

一種iec61850帶緩沖報(bào)告的內(nèi)存管理方法

文檔序號:6458514閱讀:268來源:國知局
專利名稱:一種iec 61850帶緩沖報(bào)告的內(nèi)存管理方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種正C 61850帶緩沖報(bào)告的內(nèi)存管理方法,屬電 力系統(tǒng)自動化領(lǐng)域。
背景技術(shù)
IEC 61850是數(shù)字化變電站的系統(tǒng)通信標(biāo)準(zhǔn),帶緩沖報(bào)告是IEC 61850提供的一種重要服務(wù)模型。根據(jù)正C 61850標(biāo)準(zhǔn),帶緩沖報(bào)告控制塊生 成的報(bào)告應(yīng)進(jìn)行緩沖,以支持客戶端通過對應(yīng)的服務(wù)讓服務(wù)器端進(jìn)行報(bào)告重 傳。在裝置里對帶緩沖的報(bào)告進(jìn)行有效的管理,對系統(tǒng)的功能、安全和效率都 有很大的影響。目前對帶緩沖報(bào)告的內(nèi)存管理主要有以下幾種方式-(1) 采用一定數(shù)量的固定長緩沖區(qū),每個緩沖區(qū)的大小以能容下系統(tǒng)使用 的最大長度的報(bào)告為上限。這種方式雖然不會產(chǎn)生內(nèi)存碎片,但其內(nèi)存的浪費(fèi) 是很大的。根據(jù)IEC 61850標(biāo)準(zhǔn),帶緩沖報(bào)告控制塊生成的報(bào)告其長度變化范 圍很大,從包括全體數(shù)據(jù)集成員的總召和周期報(bào)告,到某個數(shù)據(jù)集成員發(fā)生變 化,這么大的動態(tài)范圍不適合采用固定長緩沖區(qū)。(2) 采用內(nèi)存分片的方法。確定內(nèi)存分片的基本尺寸,分配一定數(shù)量的內(nèi) 存分片, 一個報(bào)文有可能在一個分片中就能放下,也可能需要多個內(nèi)存分片才 能放下。這種方法存在效率低的缺點(diǎn),需要考慮對一個報(bào)文進(jìn)行分片存儲以及 發(fā)送前對一個報(bào)文進(jìn)行拼裝,比較麻煩。需要指出的是這種方法的內(nèi)存分片是 指內(nèi)存管理范疇的,不同于報(bào)文過長超過客戶端和服務(wù)器端之間的協(xié)商值這種 情況。(3) 采用多尺寸固定長緩沖區(qū)的方法。緩沖區(qū)分為多個不同的尺寸,每個 尺寸都有一定數(shù)量的緩沖區(qū)組成一個池,先根據(jù)報(bào)文的長度確定一個合適尺寸的緩沖區(qū)池,然后從該緩沖區(qū)池中分配一個緩沖區(qū)。這種方法一定程度上能減 少內(nèi)存的浪費(fèi),但是當(dāng)已緩存的報(bào)告超過了系統(tǒng)預(yù)定的容量時,需要釋放最先 緩存的報(bào)告,而此時釋放的緩沖區(qū)其尺寸未必就是現(xiàn)在需要的,需要繼續(xù)釋放 緩沖區(qū),因此這種方法很難取得實(shí)際效果。(4)采用變長緩沖區(qū)的方法。這種方法使用系統(tǒng)的內(nèi)存池,雖然內(nèi)存的利 用率高,但是極易產(chǎn)生內(nèi)存碎片。這些方法在清理已緩沖的報(bào)告時,需要依次釋放緩沖區(qū),在有大量緩沖報(bào)告的情況下,耗時比較明顯。因此,需要根據(jù)IEC 61850帶緩沖報(bào)告模型的特 點(diǎn)提出 一種新的緩存報(bào)告的方法。發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是,提供一種IEC 61850帶緩沖報(bào) 告的內(nèi)存管理方法,在緩存帶緩沖報(bào)告控制塊生成的報(bào)告時,內(nèi)存的管理既不 浪費(fèi)內(nèi)存,也不會產(chǎn)生內(nèi)存碎片;當(dāng)已緩存的報(bào)告超過了系統(tǒng)預(yù)設(shè)的最大容量 時,能夠有效地通過釋放緩沖區(qū)中最先進(jìn)入的報(bào)告來獲得空間從而緩存最新的 報(bào)告;當(dāng)客戶端要求清理已緩存的報(bào)告時,能夠迅速完成,避免大量的內(nèi)存釋 放等內(nèi)存管理工作。為了解決上述問題,本發(fā)明采用了以下技術(shù)方案。 一種IEC 61850帶緩沖報(bào)告的內(nèi)存管理方法,其特征是 首先,根據(jù)系統(tǒng)配置參數(shù)分配一塊用于存放報(bào)告的緩沖區(qū),其大小要至少 放下一個系統(tǒng)允許的最大報(bào)告長度;當(dāng)生成報(bào)告進(jìn)行緩存時,從空閑緩沖區(qū)的低地址開始連續(xù)分配內(nèi)存,如果 空間不足,循環(huán)以下兩個過程,直至內(nèi)存空間滿足當(dāng)前的報(bào)告大小(1)如果空閑空間不是位于緩沖區(qū)的尾部,釋放緩沖區(qū)中最先進(jìn)入的報(bào)告,用以增大空閑空間的大小,循環(huán)該過程,直至條件不成立執(zhí)行(2)(2)如果空閑空間位于緩沖區(qū)的尾部,這部分空間合并到當(dāng)前最新的報(bào) 告中,以后該報(bào)告變成最先進(jìn)入緩沖區(qū)的報(bào)告需要釋放時,這部分內(nèi)存空間又 成為空閑空間從而可以再利用,合并后空閑緩沖區(qū)大小為0,繼續(xù)從(O循環(huán)執(zhí)行;如果(2)的條件不滿足,則判定此時空閑空間的大小能滿足要緩存報(bào)告 的大小。當(dāng)客戶端要求清理報(bào)告緩沖區(qū)時,將已發(fā)送報(bào)告鏈表頭指針及其報(bào)告計(jì) 數(shù)、未發(fā)送報(bào)告鏈表頭指針及其報(bào)告計(jì)數(shù)清空,重置空閑緩沖區(qū)大小為預(yù)設(shè)最 大值,重置空閑緩沖區(qū)指針為緩沖區(qū)起始位置。本發(fā)明的積極效果在于報(bào)告的控制部分含有該報(bào)告的總長度數(shù)據(jù)成員, 與報(bào)告數(shù)據(jù)區(qū)長度數(shù)據(jù)成員相區(qū)別。本發(fā)明的方法有一個重要的特點(diǎn),即空閑 緩沖區(qū)只有一塊,這就從根本上杜絕了內(nèi)存碎片的發(fā)生。另外,每個報(bào)告在緩 沖區(qū)中都是連續(xù)存放的,內(nèi)存利用率高??臻e緩沖區(qū)的合并是唯一暫時沒有利 用的內(nèi)存,但是以后能夠變?yōu)榭捎?。?dāng)客戶端要求清理報(bào)告緩沖區(qū)時,只是一 些變量的重新初始化,并不牽扯到已有報(bào)告的內(nèi)存釋放。


圖1是本發(fā)明尋找空閑緩沖區(qū)的流程圖。
具體實(shí)施方式
下面結(jié)合附圖,進(jìn)一步說明本發(fā)明的實(shí)現(xiàn)方法。 參見圖l,根據(jù)系統(tǒng)配置參數(shù)分配一塊用于存放報(bào)告的緩沖區(qū),其大小要 至少放下一個系統(tǒng)允許的最大報(bào)告長度,當(dāng)生成報(bào)告進(jìn)行緩存時,從空閑緩沖 區(qū)的低地址開始連續(xù)分配內(nèi)存,如果空間不足,循環(huán)以下兩個過程,直至內(nèi)存 空間滿足當(dāng)前的報(bào)告大小(1)如果空閑空間不是位于緩沖區(qū)的尾部,釋放緩沖區(qū)中最先進(jìn)入的報(bào) 告,用以增大空閑空間的大小。被釋放的緩沖區(qū)和空閑空間緩沖區(qū)是相鄰的,從而保證了釋放緩沖區(qū)能夠直接增加空閑緩沖區(qū)大小的要求。循環(huán)該過程,直 至條件不成立執(zhí)行(2)。(2)如果空閑空間位于緩沖區(qū)的尾部,這部分空間應(yīng)合并到當(dāng)前最新的 報(bào)告中,以后該報(bào)告變成最先進(jìn)入緩沖區(qū)的報(bào)告需要釋放時,這部分內(nèi)存空間 又成為空閑空間從而可以再利用。這部分空間如果不進(jìn)行合并,可能導(dǎo)致緩沖 區(qū)總長度越來越小。合并后空閑緩沖區(qū)大小為0,繼續(xù)從(1)循環(huán)執(zhí)行。如果(2)的條件不滿足,那么此時空閑空間的大小必定能滿足要緩存報(bào)告的大小,因?yàn)榫彌_區(qū)的大小能至少放下一個系統(tǒng)允許的最大報(bào)告長度。 當(dāng)客戶端要求清理報(bào)告緩沖區(qū)時,只需將已發(fā)送報(bào)告鏈表頭指針及其報(bào)告計(jì)數(shù)、未發(fā)送報(bào)告鏈表頭指針及其報(bào)告計(jì)數(shù)清空,重置空閑緩沖區(qū)大小為預(yù)設(shè)最大值,重置空閑緩沖區(qū)指針為緩沖區(qū)起始位置。 以下是與報(bào)告內(nèi)存管理相關(guān)的主要數(shù)據(jù)結(jié)構(gòu)。(1) 報(bào)告的組織形式。報(bào)告由兩部分組成,即控制部分和報(bào)告數(shù)據(jù)區(qū)部分,主要包括雙向鏈表結(jié)構(gòu)體、報(bào)告總長度、報(bào)告的ID、報(bào)告數(shù)據(jù)區(qū)指針、報(bào)告數(shù)據(jù)區(qū)長度、報(bào)告數(shù)據(jù)區(qū),其中雙向鏈表結(jié)構(gòu)體位于首部。(2) 帶緩沖報(bào)告控制塊中與內(nèi)存管理相關(guān)的主要數(shù)據(jù)成員包括緩沖區(qū)的大小、緩沖區(qū)的起始指針、空閑緩沖區(qū)的大小、空閑緩沖區(qū)的起始指針、己 發(fā)送報(bào)告鏈表頭指針、己發(fā)送報(bào)告的計(jì)數(shù)、待發(fā)送報(bào)告鏈表頭指針、待發(fā)送報(bào)告的計(jì)數(shù)。當(dāng)生成一個報(bào)告時將其加入到待發(fā)送報(bào)告鏈表尾部;當(dāng)發(fā)送完一個 報(bào)告時將其移入到己發(fā)送報(bào)告鏈表尾部;發(fā)送報(bào)告時從待發(fā)送報(bào)告鏈表首部摘 取。實(shí)現(xiàn)過程如下(1)系統(tǒng)初始創(chuàng)建帶緩沖報(bào)告控制塊時,根據(jù)配置參數(shù)分配報(bào)告緩沖區(qū),初始緩沖區(qū)的大小、緩沖區(qū)的起始指針、空閑緩沖區(qū)的大小、空閑緩沖區(qū)的起 始指針,此時空閑緩沖區(qū)的大小、空閑緩沖區(qū)的起始指針等同于緩沖區(qū)的大小、 緩沖區(qū)的起始指針。已發(fā)送報(bào)告鏈表頭指針、待發(fā)送報(bào)告鏈表頭指針置空,已 發(fā)送報(bào)告的計(jì)數(shù)、待發(fā)送報(bào)告的計(jì)數(shù)置0。(2) 當(dāng)生成報(bào)告需要存放時,確定報(bào)告實(shí)際需要占用的空間大小,包括 報(bào)告控制部分、報(bào)告數(shù)據(jù)區(qū)部分以及對齊需要補(bǔ)充的字節(jié)。報(bào)告打頭的部分是 控制結(jié)構(gòu),里面含有指針,因此對齊規(guī)則應(yīng)按4的倍數(shù)執(zhí)行。(3) 如果空閑空間不夠,并且空閑空間不是位于緩沖區(qū)的尾部,并且已發(fā)送鏈表不為空,釋放已發(fā)送鏈表所指的首緩沖區(qū),用以增大空閑空間的大小。循環(huán)該過程,直至條件不成立執(zhí)行(4)。(4) 如果空閑空間不夠,并且空閑空間不是位于緩沖區(qū)的尾部,并且待 發(fā)送鏈表不為空,釋放待發(fā)送鏈表所指的首緩沖區(qū),用以增大空閑空間的大小。 循環(huán)該過程,直至條件不成立執(zhí)行(5)。(5) 如果空閑空間不夠,并且空閑空間是位于緩沖區(qū)的尾部,這部分空 間合并到當(dāng)前最新的報(bào)告中,轉(zhuǎn)到(3)處繼續(xù)執(zhí)行,否則轉(zhuǎn)到(6)繼續(xù)執(zhí)行。 如果待發(fā)送鏈表不為空,待發(fā)送鏈表的尾報(bào)告是最新報(bào)告;如果待發(fā)送鏈表為 空,已發(fā)送鏈表的尾報(bào)告是最新報(bào)告。(6) 此時空閑緩沖區(qū)空間已足夠,填充報(bào)告,加入到待發(fā)送鏈表尾部。(7) 調(diào)整帶緩沖報(bào)告控制塊的相關(guān)信息,空閑空間大小要減掉當(dāng)前已分 配的大小,空閑緩沖區(qū)指針往后移動對應(yīng)的大小。(8) 如果此時空閑緩沖區(qū)指針溢出,判定條件為空閑緩沖區(qū)指針等于緩 沖區(qū)指針和緩沖區(qū)大小之和,則需要進(jìn)行調(diào)整。此時空閑緩沖區(qū)大小必為0,
權(quán)利要求
1. 一種IEC 61850帶緩沖報(bào)告的內(nèi)存管理方法,其特征是首先,根據(jù)系統(tǒng)配置參數(shù)分配一塊用于存放報(bào)告的緩沖區(qū),其大小要至少放下一個系統(tǒng)允許的最大報(bào)告長度;當(dāng)生成報(bào)告進(jìn)行緩存時,從空閑緩沖區(qū)的低地址開始連續(xù)分配內(nèi)存,如果空間不足,循環(huán)以下兩個過程,直至內(nèi)存空間滿足當(dāng)前的報(bào)告大小(1)如果空閑空間不是位于緩沖區(qū)的尾部,釋放緩沖區(qū)中最先進(jìn)入的報(bào)告,用以增大空閑空間的大小,循環(huán)該過程,直至條件不成立執(zhí)行(2);(2)如果空閑空間位于緩沖區(qū)的尾部,這部分空間合并到當(dāng)前最新的報(bào)告中,以后該報(bào)告變成最先進(jìn)入緩沖區(qū)的報(bào)告需要釋放時,這部分內(nèi)存空間又成為空閑空間從而可以再利用,合并后空閑緩沖區(qū)大小為0,繼續(xù)從(1)循環(huán)執(zhí)行;如果(2)的條件不滿足,則判定此時空閑空間的大小能滿足要緩存報(bào)告的大小。
2、如權(quán)利要求1所述的IEC 61850帶緩沖報(bào)告的內(nèi)存管理方法,其特征 是當(dāng)客戶端要求清理報(bào)告緩沖區(qū)時,將已發(fā)送報(bào)告鏈表頭指針及其報(bào)告計(jì)數(shù)、 未發(fā)送報(bào)告鏈表頭指針及其報(bào)告計(jì)數(shù)清空,重置空閑緩沖區(qū)大小為預(yù)設(shè)最大 值,重置空閑緩沖區(qū)指針為緩沖區(qū)起始位置。
全文摘要
本發(fā)明公開了一種IEC 61850帶緩沖報(bào)告的內(nèi)存管理方法,當(dāng)生成報(bào)告進(jìn)行緩存時,從空閑緩沖區(qū)的低地址開始連續(xù)分配內(nèi)存,如果空間不足,循環(huán)以下兩個過程,(1)如果空閑空間不是位于緩沖區(qū)的尾部,釋放緩沖區(qū)中最先進(jìn)入的報(bào)告,循環(huán)該過程,直至條件不成立執(zhí)行(2);(2)如果空閑空間位于緩沖區(qū)的尾部,這部分空間合并到當(dāng)前最新的報(bào)告中,合并后空閑緩沖區(qū)大小為0,繼續(xù)從(1)循環(huán)執(zhí)行;如果(2)的條件不滿足,則判定此時空閑空間的大小能滿足要緩存報(bào)告的大小。從根本上杜絕了內(nèi)存碎片的發(fā)生;內(nèi)存利用率高。當(dāng)客戶端要求清理報(bào)告緩沖區(qū)時,只是一些變量的重新初始化,并不牽扯到已有報(bào)告的內(nèi)存釋放。
文檔編號G06F12/02GK101266572SQ200810015549
公開日2008年9月17日 申請日期2008年4月15日 優(yōu)先權(quán)日2008年4月15日
發(fā)明者劉世明, 李小濱, 鄭永志, 韓明峰 申請人:煙臺東方電子信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1