訂閱
糾錯(cuò)
加入自媒體

一文了解在AP_EM上的騷操作

最近大家都對(duì)AP興趣很大,也不知CP大家玩轉(zhuǎn)了木有,反正咱也不知道咱也不敢問,這次樓主就扯下AP中的狀態(tài)管理SM和執(zhí)行管理EM部分。

言歸正傳:AP的應(yīng)用,在通過工具配置后,會(huì)生成可供APP開發(fā)使用的代碼和JSON的Manifest配置信息文件,經(jīng)編譯后APP會(huì)生成可執(zhí)行文件BIN。

EM作為執(zhí)行管理,其會(huì)負(fù)責(zé)讀取APP的Manifest文件,獲取APP的配置信息,不同的 APP在 Manifest 文件中被關(guān)聯(lián)到不同的系統(tǒng)狀態(tài)  (Machine State)  中,SM是狀態(tài)管理,通過改變進(jìn)程所屬的功能組狀態(tài)可對(duì)進(jìn)程進(jìn)行啟動(dòng)和停止,兩者之間的關(guān)系如下:

首先,SM和EM其實(shí)從本質(zhì)上看都屬于AP的一個(gè)進(jìn)程,在AP中每個(gè)進(jìn)程的生命周期如下:

EM是AP第一個(gè)啟動(dòng)的進(jìn)程,EM啟動(dòng)就緒后,EM將把MachineState的狀態(tài)由OFF切換到Startup狀態(tài)。

EM啟動(dòng)起來后會(huì)將SM的進(jìn)程啟動(dòng)起來,SM可通過ExecutionClient::ReportExecutionState向EM報(bào)告此時(shí)自己進(jìn)程的狀態(tài)(每個(gè)進(jìn)程都可通過該API向EM報(bào)告狀態(tài))。

SM正常啟動(dòng)運(yùn)行起來后,就可通過StateClient::SetState函數(shù)對(duì)某個(gè)功能簇的工作狀態(tài)進(jìn)行控制,從而對(duì)隸屬于相應(yīng)功能簇的進(jìn)程進(jìn)行統(tǒng)一管理。

這里要介紹下功能簇的概念,功能簇可以理解為進(jìn)程的集合,每個(gè)功能簇有自己的狀態(tài)和過程,成為功能組Function Group States,功能組的最小單位就是一個(gè)進(jìn)程,一個(gè)功能組可以配置一組進(jìn)程,當(dāng)SM請(qǐng)求相應(yīng)功能組進(jìn)入到對(duì)應(yīng)狀態(tài)時(shí),配置在該狀態(tài)下的進(jìn)程都會(huì)被啟動(dòng),下面就是個(gè)小示例:

其中,Machine State、Function  Group1 和 Function Group2 為不同的功能組,A~F 代表不同的進(jìn)程,為了簡(jiǎn)化,每個(gè)進(jìn)程只有Idle、Running、Terminated三個(gè)進(jìn)程狀態(tài)。

進(jìn)程 A 依賴于 Machinestate功能組的的 Startup 狀態(tài), EM 在啟動(dòng)后會(huì)Machine state 設(shè)置為 Startup狀態(tài),因此,EM 啟動(dòng)后將直接啟動(dòng)進(jìn)程 A;而進(jìn)程 A 為自終止進(jìn)程,將在運(yùn)行一次后自動(dòng)終止。

進(jìn)程 B 依賴于 Machinestate功能組的 Startup 和 Running 狀態(tài),同時(shí)依賴于進(jìn)程 A 的終止?fàn)顟B(tài),因此,進(jìn)程 B 將在進(jìn)程 A 終止后啟動(dòng),而在 machine state 離開 Running 時(shí)終止。

進(jìn)程 C 僅依賴于 Machinestate 的Running 狀態(tài),在 Machine state 進(jìn)入 Runing 時(shí)啟動(dòng),在離開Running 時(shí)終止。

進(jìn)程 D 僅依賴于 FunctionGroup1 的 FG1:Running 狀態(tài)。

進(jìn)程 E 依賴于FG1:Running 和 FG2:Running 狀態(tài)。

進(jìn)程 F 依賴于FG2:Running 和 FG2:Fallback 狀態(tài)

聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)