姜 艷,曾學(xué)文,孫 鵬
(1.中國科學(xué)院大學(xué),北京100049;2.中國科學(xué)院聲學(xué)研究所國家網(wǎng)絡(luò)新媒體工程技術(shù)研究中心,北京100190)
嵌入式操作系統(tǒng)的迅猛發(fā)展,帶動了一系列新產(chǎn)品的繁榮,如智能手機(jī)、平板電腦、智能電視等[1,2]。低內(nèi)存進(jìn)程管理算法能夠在有限的嵌入式系統(tǒng)內(nèi)存[3-5]中,駐留較多應(yīng)用,從而加快應(yīng)用切換速度,并避免出現(xiàn)內(nèi)存不足現(xiàn)象。目前,較為經(jīng)典和使用廣泛的基于低內(nèi)存的進(jìn)程管理主要有Linux的 OOM Killer (out of memory killer)算法[6]和Android的LMK (low memory killer)算法[7]。但這兩種算法只是根據(jù)經(jīng)驗(yàn)設(shè)定算法的閾值,缺乏預(yù)測機(jī)制,當(dāng)系統(tǒng)內(nèi)存的剩余量達(dá)到閾值時(shí)就開始關(guān)閉應(yīng)用,使得嵌入式系統(tǒng)的內(nèi)存沒有得到充分利用。本文對LMK算法進(jìn)行改進(jìn)優(yōu)化,提出一種基于統(tǒng)計(jì)分析和預(yù)測的低內(nèi)存進(jìn)程管理算法 (LMK-SAP)。該算法以LMK查詢系統(tǒng)內(nèi)存狀態(tài)的時(shí)間窗口為單位,預(yù)測下一時(shí)間窗口內(nèi)各類型進(jìn)程內(nèi)存增量,根據(jù)系統(tǒng)當(dāng)前可用內(nèi)存支持的進(jìn)程等級和進(jìn)程數(shù),選擇合適的進(jìn)程關(guān)閉順序。該算法避免盲目關(guān)閉過多進(jìn)程,使內(nèi)存得到高效利用;在內(nèi)存中保存更多應(yīng)用,提高應(yīng)用切換速度;同時(shí)對系統(tǒng)應(yīng)用由于內(nèi)存不足而崩潰具有一定預(yù)防作用。
在傳統(tǒng)的Linux操作系統(tǒng)中,只有發(fā)生內(nèi)存不足時(shí),才會觸發(fā)OOM Killer使用一系列啟發(fā)算法挑選某個(gè)進(jìn)程將其關(guān)閉,從而獲得部分內(nèi)存。它具有兩個(gè)明顯的不足:①反應(yīng)滯后,該算法被觸發(fā)時(shí),系統(tǒng)中已經(jīng)出現(xiàn)OOM現(xiàn)象,嚴(yán)重影響用戶體驗(yàn);②該算法結(jié)束的進(jìn)程很有可能是用戶或/和系統(tǒng)不希望關(guān)閉的。為了克服這兩個(gè)缺點(diǎn),LMK算法對OOM Killer算法進(jìn)行了補(bǔ)充和優(yōu)化,它為了盡量減少應(yīng)用崩潰而引進(jìn)低內(nèi)存機(jī)制,對內(nèi)存不足現(xiàn)象具有初步預(yù)測的能力:一是可以預(yù)先在系統(tǒng)低內(nèi)存狀態(tài)時(shí),判斷是否需要提前關(guān)閉部分進(jìn)程,而盡量避免發(fā)生內(nèi)存不足現(xiàn)象;二是從用戶體驗(yàn)角度出發(fā),劃分進(jìn)程類型,根據(jù)低內(nèi)存閾值選擇合理的進(jìn)程關(guān)閉順序。
為避免盲目殺死重要進(jìn)程,Android操作系統(tǒng)根據(jù)進(jìn)程的優(yōu)先級將其分為五類,分別為:前臺進(jìn)程 (foreground)、可見進(jìn)程 (visible)、服務(wù)進(jìn)程(service)、后臺進(jìn)程(background)、空進(jìn)程 (empty)。
LMK算法根據(jù)當(dāng)前系統(tǒng)剩余空閑內(nèi)存所處低內(nèi)存閾值而選擇殺死Bad進(jìn)程,從而獲得空閑內(nèi)存。Bad進(jìn)程的選擇標(biāo)準(zhǔn)有兩個(gè):oom_adj和占用內(nèi)存的大小。LMK為每一類的進(jìn)程設(shè)置了lowmem_adj和警戒內(nèi)存閾值lowmem_minfree,如以下代碼所示。同時(shí),每個(gè)進(jìn)程都有oom_adj值。Oom_adj和lowmem_adj值越小的進(jìn)程優(yōu)先級越高,越不容易被殺死。Android Kernel定時(shí)檢查當(dāng)前空閑內(nèi)存是否低于某個(gè)警戒內(nèi)存閾值,如果是,則根據(jù)lowmem_minfree和lowmem_adj確定需要?dú)⑺肋M(jìn)程的min_adj值;然后遍歷所有進(jìn)程的oom_adj值,找到oom_adj值最大且大于min_adj的進(jìn)程,若找到多個(gè),則殺死占用內(nèi)存最多的進(jìn)程;LMK算法流程圖如圖1所示。
static int lowmem_adj[6]= {0,1,6,12,};
static size_t lowmem_minfree[6]= {3*512,2*1024,4*1024,16*1024,};
LMK算法同樣存在不足,主要表現(xiàn)在兩個(gè)方面:一是關(guān)閉某個(gè)進(jìn)程后,有可能仍無法滿足系統(tǒng)下一窗口時(shí)間內(nèi)的內(nèi)存需求,尤其是無法適應(yīng)窗口時(shí)間內(nèi)存增量較大的進(jìn)程;二是LMK算法為了盡量避免出現(xiàn)以上問題,而預(yù)留過多空閑內(nèi)存,體現(xiàn)為內(nèi)存閾值最小值仍較大,造成內(nèi)存浪費(fèi)。在對LMK算法深入分析后可知,引起這兩個(gè)問題的主要原因是低內(nèi)存閾值的確立缺乏依據(jù),每次關(guān)閉的進(jìn)程與系統(tǒng)剩余可用內(nèi)存之間缺乏明確的關(guān)系。因此,本文重點(diǎn)研究低內(nèi)存閾值的選取和動態(tài)調(diào)節(jié)。
圖1 LMK算法流程
LMK-SAP算法以時(shí)間窗口為單位記錄和預(yù)測內(nèi)存增量,而窗口內(nèi)的內(nèi)存可能取到的數(shù)值,數(shù)量巨大,不便于統(tǒng)計(jì)和預(yù)測,因此LMK-SAP算法首先對內(nèi)存值進(jìn)行量化。實(shí)際應(yīng)用的內(nèi)存使用貌似雜亂無章,但其模式仍然有一定的規(guī)律可循[8],尤其在智能手機(jī)、電視等嵌入式產(chǎn)品中,各應(yīng)用用途固定,且用戶使用習(xí)慣相對穩(wěn)定。在同一應(yīng)用中,如果用戶操作流程一致,其內(nèi)存使用的規(guī)律性更加明顯。因此,本文通過統(tǒng)計(jì)進(jìn)程的內(nèi)存使用歷史記錄,基于條件概率[9,10],計(jì)算量化后每個(gè)可能出現(xiàn)的內(nèi)存增量的概率,選取最有可能的值作為下一個(gè)時(shí)間段應(yīng)用的內(nèi)存增量,并根據(jù)Android的進(jìn)程劃分依據(jù),為關(guān)閉進(jìn)程提供內(nèi)存參考值,從待選進(jìn)程中選擇占用內(nèi)存最大的進(jìn)程進(jìn)行關(guān)閉,有效地提高了系統(tǒng)內(nèi)存中駐留的進(jìn)程數(shù),縮短了進(jìn)程切換時(shí)間。
根據(jù)實(shí)際嵌入式系統(tǒng)中為每個(gè)進(jìn)程限制的內(nèi)存最大值,設(shè)計(jì)量化階數(shù)J??紤]到增量的正負(fù)問題,內(nèi)存窗口增量值量化為2J種可能,分別表示為±H1、…、±Hj、…、±HJ。而一般內(nèi)存分配以2的冪次方為單位,因此本文以2的冪次方對內(nèi)存進(jìn)行量化。H1=28B,H2=29B,……,HJ= (2J+7)B。如,內(nèi)存增量值M在[ 0,28)范圍內(nèi)的j取1,以此類推,可由式 (1)計(jì)算所屬階數(shù)j
對于一般手機(jī)系統(tǒng),為一個(gè)進(jìn)程默認(rèn)設(shè)置最大內(nèi)存值為一般16MB或32MB。以32MB為例,J=18。
LMK-SAP算法的設(shè)計(jì)主要基于內(nèi)存使用存在規(guī)律性這一認(rèn)識。早在1995年,Wilson等人就曾指出實(shí)際應(yīng)用的行為并非隨機(jī)的——它們被設(shè)計(jì)來解決實(shí)際問題,選擇的解決問題的方法對內(nèi)存使用的模式具有很大的影響;他將內(nèi)存使用分為3種模式:Ramps,緩慢上升;Peaks,急速上升;Plateaus,持平。如圖2所示,Ramps模式下內(nèi)存增量同樣緩慢上升,Peaks模式下內(nèi)存增量急速上升,Plat-eaus模式下內(nèi)存增量基本為零。同時(shí),Wilson等人指出應(yīng)用內(nèi)存的使用往往是上面3種模式的組合。
圖2 應(yīng)用內(nèi)存使用模式
記錄某進(jìn)程的前n-1個(gè)窗口內(nèi)內(nèi)存增量值,n>0。預(yù)測第n個(gè)窗口的內(nèi)存增量的問題,可以轉(zhuǎn)化為,在量化后的J種內(nèi)存增量值中,預(yù)測出現(xiàn)概率最大的內(nèi)存值。對該問題建立模型,其中使用的參數(shù)說明如下:
W:時(shí)間窗口,即以W時(shí)間為單位劃分時(shí)間。
Sa:表示a進(jìn)程運(yùn)行時(shí),一連串特定順序排列的相鄰n個(gè)W時(shí)間的內(nèi)存增加量,同樣的,若無特別強(qiáng)調(diào)某個(gè)進(jìn)程,可簡寫為S。S可以表示為時(shí)間序列 Mi+1,Mi+2,Mi+3,…,Mi+n。其中,Mi+k表示進(jìn)程運(yùn)行后第(i+k)個(gè)W時(shí)間窗口內(nèi)的內(nèi)存增加量。簡單起見,以下由Mx代替Mi+x。
從概率角度分析,當(dāng) Mn=m(m屬于量化值H1、H2、…、Hj、…、HJ)時(shí),使得序列 S=(M1,M2,……,Mn)的概率最大,意味著在內(nèi)存序列M1,M2,…,Mn-1的條件下,下一窗口m出現(xiàn)的可能性最大。因此,計(jì)算下一個(gè)窗口的內(nèi)存增加量,就是計(jì)算使得P(S)最大的Mn值。根據(jù)條件概率公式,S序列出現(xiàn)的概率為
式中:P(M1)——進(jìn)程運(yùn)行后第1個(gè)W時(shí)間(實(shí)際為第i+1個(gè)W時(shí)間,以下同理)增加的內(nèi)存量為M1的概率;P(M2|M1)是在已知第1個(gè)W時(shí)間增加的內(nèi)存量為M1的前提下,第2個(gè)W時(shí)間增加的內(nèi)存量為M2的概率;以次類推。不難看出,下一W時(shí)間段內(nèi)Mn的出現(xiàn)概率取決于它前面所有內(nèi)存值概率。為簡化計(jì)算量,本研究采用馬爾可夫假設(shè)[11],假定任意W時(shí)間的內(nèi)存增加量Mi的出現(xiàn)概率只同它前面的內(nèi)存量 Mi-1有關(guān),將式(1)S出現(xiàn)的概率改寫為
式(2)右側(cè)的概率值可以通過統(tǒng)計(jì)進(jìn)程過去運(yùn)行結(jié)果計(jì)算求出。記錄進(jìn)程每次運(yùn)行時(shí),窗口時(shí)間內(nèi)每個(gè)量化后內(nèi)存增量值出現(xiàn)的次數(shù),C(x),x=±1,±2,…,±J。同時(shí),在二維表(如圖3所示)中記錄該進(jìn)程在每個(gè)量化階數(shù)間轉(zhuǎn)移次數(shù),橫、縱坐標(biāo)分別表示i時(shí)刻窗口和i+1時(shí)刻窗口增加的內(nèi)存階數(shù),表內(nèi)數(shù)據(jù)為該轉(zhuǎn)移發(fā)生的次數(shù)。
利用C(x)和圖3,可求得式(3)右側(cè)的概率值
將式 (4)和式 (5)帶入式 (3)即可求得P(S)。由于前n-1個(gè)窗口內(nèi)存值已知,因此只需求解J種可能情況的P(S),選取概率最大的情況下的Mn值作為第n個(gè)窗口的預(yù)測值。
根據(jù)2.3節(jié)算法,可以預(yù)測得知當(dāng)前進(jìn)程下一窗口所需內(nèi)存值,從而對前臺進(jìn)程(F)、可見進(jìn)程(V)、服務(wù)進(jìn)程(S)、后臺進(jìn)程(B)、空進(jìn)程(E)分別求和計(jì)算得 Mn(F)、Mn(V)、Mn(S)、Mn(B)、Mn(E)。同時(shí),為了防止預(yù)測值低于真實(shí)值而增加OOM發(fā)生的可能,預(yù)留部分少量內(nèi)存空間Mr。因此,lowmem_adj[6]可補(bǔ)充為6個(gè)取值,低內(nèi)存閾值lowmem_minfree[6]定義如下:
圖3 量化階數(shù)間轉(zhuǎn)移次數(shù)
size_t lowmem_minfree[6]={
Mr;
Mr+Mn(F);
Mr+Mn(F)+Mn(V);
Mr+Mn(F)+Mn(V)+Mn(S);
Mr+Mn(F)+Mn(V)+Mn(S)+Mn(B);
Mr+Mn(F)+Mn(V)+Mn(S)+Mn(B)+Mn(E);
}
LMK-SAP算法的運(yùn)行過程如下:
(1)首先預(yù)測每個(gè)進(jìn)程的下一時(shí)間的窗口內(nèi)存增量,詳細(xì)步驟包括:
1)獲取該進(jìn)程當(dāng)前窗口的內(nèi)存增量值M;
2)將內(nèi)存增量值M按照量化表量化為Mi;
3)更新內(nèi)存增量統(tǒng)計(jì)值,并根據(jù)之前的內(nèi)存值更新轉(zhuǎn)移概率表;
4)根據(jù)式 (3)逐一計(jì)算每個(gè)可能值的概率;
5)選擇概率最大的值作為下一個(gè)窗口的內(nèi)存增量預(yù)測值;
(2)分別求出各種類型進(jìn)程的內(nèi)存增量值;
(3)根據(jù)上一節(jié)的方法更新各種類型進(jìn)程的低內(nèi)存閾值;
(4)執(zhí)行LMK算法,關(guān)閉相應(yīng)進(jìn)程。
預(yù)測算法和LMK-SAP算法的偽代碼,分別實(shí)現(xiàn)如下:
/*預(yù)測進(jìn)程的下一個(gè)時(shí)間窗口內(nèi)的內(nèi)存增量*/
Predict_NextMemSize(task_struct p)
{
/*獲取當(dāng)前時(shí)間窗口內(nèi)內(nèi)存大小*/
current_memsize=Get_memsize(p);
/*獲取量化值*/
qua_memsize=quantized_value(current_memsize);
/*獲取進(jìn)程p對應(yīng)的轉(zhuǎn)移概率表*/
tableinfo=Get_protabelinfo (p);
/*更新進(jìn)程p對應(yīng)的轉(zhuǎn)移概率表信息*
Update_protableinfo (qua_memsize,tableinfo);
/*初始化概率值和預(yù)測內(nèi)存值*/
max_pro=0,targetM=0
/*逐一計(jì)算每個(gè)可能值的概率*/
for(i=0;i<=N-1;i++)
{
/*計(jì)算Mi的概率值*/
curr_pro=Cal_probability (M [i],tableinfo);
if(curr_pro> max_pro)
{
max_pro=curr_pro;
targetM=M [i];
}
}
return targetM;
}
/*LMK-SAP算法實(shí)現(xiàn)*/
LMK_SAP_Thread()
{
Lasttime=0,Nowtime=0;
while (1)
{
/*每隔differtime檢測一次系統(tǒng)的內(nèi)存值,選擇需要關(guān)閉的進(jìn)程*/
if(Nowtime–Lasttime>differtime)
{
Lasttime=Nowtime;
for_each_process (p)
{
nextmemsize= Predict_NextMemSize(p);
/*獲取p所對應(yīng)的進(jìn)程類型*/
Ptype= Get_processtype (p);
/*將p對應(yīng)的內(nèi)存增量值加入到進(jìn)程類型*/
Mn [Ptype]+=nextmemsize;
}
/*根據(jù)Mn值和系統(tǒng)剩余內(nèi)存計(jì)算當(dāng)前系統(tǒng)對應(yīng)的adj
值*/
sys_adj=Cal_oomadj(Mn []);
/*根據(jù)sys_adj值選擇需要關(guān)閉的進(jìn)程*/
selected=Select_process (sys_adj);
if (selected)
close (selected);
}
}
}
為了驗(yàn)證LMK-SAP算法的性能,設(shè)計(jì)了兩組實(shí)驗(yàn)。實(shí)驗(yàn)環(huán)境采用嵌入式Android機(jī)頂盒,其Android版本為Android 4.0,Linux內(nèi)核版本為3.0.8,CPU 為800MHz,內(nèi)存為1GBytes,LMK-SAP算法中的時(shí)間窗口為1s。
第一組實(shí)驗(yàn)用以驗(yàn)證本文提出的應(yīng)用內(nèi)存預(yù)測算法的準(zhǔn)確性,在機(jī)頂盒上運(yùn)行一個(gè)基于Web HTML5技術(shù)開發(fā)的在線視頻應(yīng)用,通過隨機(jī)按鍵的方式模擬應(yīng)用操作,定時(shí)監(jiān)測該應(yīng)用的內(nèi)存占用量情況,對比算法預(yù)測出的下一個(gè)時(shí)間窗口的內(nèi)存量與應(yīng)用實(shí)際占用的內(nèi)存量,整個(gè)實(shí)驗(yàn)持續(xù)12個(gè)小時(shí)。本文采用平均誤差率來衡量預(yù)測算法的精確度,平均誤差率即為所有實(shí)驗(yàn)數(shù)據(jù)點(diǎn)上誤差率的平均值,其計(jì)算公式如下其中n為數(shù)據(jù)的個(gè)數(shù),p(i)為i時(shí)刻的預(yù)測值,r(i)為i時(shí)刻的實(shí)際值。圖4給出了整個(gè)實(shí)驗(yàn)的一段時(shí)間結(jié)果 (約20分鐘)。
本次實(shí)驗(yàn)中系統(tǒng)的平均誤差率為11%,從圖中不難看出,LMK-SAP的內(nèi)存預(yù)測算法在絕大數(shù)據(jù)情況下能夠預(yù)測應(yīng)用所需的內(nèi)存量,因此可以根據(jù)該算法預(yù)測系統(tǒng)下一時(shí)刻的內(nèi)存需求,將其作為LMK-SAP設(shè)定閾值的標(biāo)準(zhǔn)。
第二組實(shí)驗(yàn)用以對比Android的LMK算法和LMKSAP算法的內(nèi)存駐留應(yīng)用數(shù),內(nèi)存中能夠駐留的應(yīng)用數(shù)越多表明下一次切換到該應(yīng)用的所需時(shí)間越短。通過在機(jī)頂盒中內(nèi)置50個(gè)應(yīng)用,每隔10秒鐘隨機(jī)選取一個(gè)應(yīng)用運(yùn)行,當(dāng)新應(yīng)用運(yùn)行時(shí)原前臺應(yīng)用進(jìn)入后臺運(yùn)行。圖5中給出了系統(tǒng)運(yùn)行LMK算法和LMK-SAP算法的內(nèi)存駐留應(yīng)用數(shù)的對比。
在本次試驗(yàn)中,LMK-SAP算法使得系統(tǒng)中駐留的進(jìn)程數(shù)目相比于LMK算法平均提高了約56%。實(shí)驗(yàn)結(jié)果表明,與LMK算法相比,LMK-SAP算法能夠提高駐留在內(nèi)存中的應(yīng)用數(shù),加快應(yīng)用再次加載時(shí)的速度,減少應(yīng)用切換時(shí)間,從而提升多應(yīng)用運(yùn)行環(huán)境下的用戶體驗(yàn)。
隨著嵌入式智能操作系統(tǒng)的廣泛應(yīng)用,低內(nèi)存進(jìn)程管理作為影響系統(tǒng)性能重要方面,得到廣泛的重視。尤其是,LMK算法的提出,使得嵌入式智能操作系統(tǒng)中應(yīng)用的切換速度和內(nèi)存利用率有了新的突破。本文針對LMK算法的不足提出LMK-SAP算法,分析程序使用內(nèi)存的特點(diǎn),預(yù)測進(jìn)程內(nèi)存增量,動態(tài)調(diào)節(jié)內(nèi)存閾值,關(guān)閉進(jìn)程釋放內(nèi)存。該算法避免了LMK算法中閾值選取相對固定且僅以經(jīng)驗(yàn)值為依據(jù)的缺點(diǎn),可以保證更多應(yīng)用駐留在內(nèi)存中,從而提高了內(nèi)存利用率并加快了應(yīng)用切換速度。本文下一步的研究重點(diǎn)是,進(jìn)一步降低算法的計(jì)算復(fù)雜度,提高進(jìn)程內(nèi)存增量的預(yù)測準(zhǔn)確度。
[1]YUAN Hong,ZHENG Zhongping.A conclusion of smart TV trend and challenge [J].Journal of Network New Media,2012,1 (1):4-9 (in Chinese).[袁洪,鄧忠平.智能電視發(fā)展趨勢與挑戰(zhàn) [J].網(wǎng)絡(luò)新媒體技術(shù),2012,1 (1):4-9.]
[2]WANG Lei,PIAO Xiwang,LI Shiqun,et al.Time performance testing of embedded real time operating system [J].Journal of Inner Mongolia University (Natural Science Edition),2011,42 (5):547-551 (in Chinese).[王蕾,樸希望,李世群,等.嵌入式實(shí)時(shí)操作系統(tǒng)的時(shí)間性能測試 [J].內(nèi)蒙古大學(xué)學(xué)報(bào) (自然科學(xué)版),2011,42 (5):547-551.]
[3]ZHANG Lei,JIANG Haihe,CHU Yannan.Research and implementation of embedded GUI system based on uc/os-ii [J].Microcomputer Information,2008,24 (17):50-52 (in Chinese).[張磊,江海河,儲焰南.基于uc/os-ii的嵌入式GUI研究與應(yīng)用 [J].微計(jì)算機(jī)信息,2008,24 (17):50-52.]
[4]Hasan Y.Upper bounds for dynamic memory allocation [J].IEEE Transactions on Computers,2010,59 (4):468-477.
[5]JIANG Yan,ZENG Xuewen,SUN Peng,et al.Fuzzy threshold coalescence memory algorithm for embedded real-time multimedia systems[J].Journal of Xidian University,2012,39 (5):174-180 (in Chinese).[姜艷,曾學(xué)文,孫鵬,等.實(shí)時(shí)嵌入式多媒體系統(tǒng)模糊閾值合并內(nèi)存管理算法 [J].西安電子科技大學(xué)學(xué)報(bào),2012,39 (5):174-180.]
[6]DONG Cheng.A solution on OOM (out of memory)of gallery in Android application [D].Shanghai:Donghua University,2012(in Chinese).[董鋮.針對Android應(yīng)用中Gallery內(nèi)存溢出的解決方案 [D].上海:東華大學(xué),2012.]
[7]WEI Dong,TAN Gongquan,YE Jianping.Research on android memory management [J].Microcontrollers & Embedded Systems,2012,12 (4):9-12 (in Chinese).[魏棟,譚功全,葉建平.Android系統(tǒng)的內(nèi)存管理研究 [J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12 (4):9-12.]
[8]CHI Yuanwu.Study on optimizing the embeded real-time operating system dynamic memory management [D].Shanghai:Shanghai Jiaotong University,2011:28-30 (in Chinese).[池元武.嵌入式實(shí)時(shí)操作系統(tǒng)動態(tài)內(nèi)存管理優(yōu)化方案的研究[D].上海:上海交通大學(xué),2011:28-30.]
[9]LIU Qiang.Non-deterministic analysis for transient stability based on transient stability domain and conditional probability[J].Automation of Electric Power Systems,2007,31 (19):1-6(in Chinese).[劉強(qiáng).基于穩(wěn)定域及條件概率的暫態(tài)穩(wěn)定不確定性分析 [J].電力系統(tǒng)自動化,2007,31 (19):1-6.]
[10]WANG Xuewu.A equivalence between occurring numbers and sums of condition probability for integer random variables sequence[J].Mathematics in Practice and Theory,2009,39(10):180-185 (in Chinese).[王學(xué)武.整值隨機(jī)變量序列發(fā)生次數(shù)與條件概率和的等價(jià)性 [J].數(shù)學(xué)的實(shí)踐與認(rèn)識,2009,39 (10):180-185.]
[11]LIU Jiebin,SONG Maoqiang,ZHAO Fang,et al.Secondorder hidden Markov model based on context [J].Computer Engineering,2010,36 (10):231-235 (in Chinese).[劉潔彬,宋茂強(qiáng),趙方,等.基于上下文的二階隱馬爾可夫模型[J].計(jì)算機(jī)工程,2010,36 (10):231-235.]