coredump文件。
[0031]造成應(yīng)用程序需要執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的原因很多,例如應(yīng)用程序的內(nèi)存訪(fǎng)問(wèn)越界、多線(xiàn)程程序使用了線(xiàn)程不安全的函數(shù)、多線(xiàn)程讀寫(xiě)的數(shù)據(jù)未加鎖保護(hù)、非法的指針、堆棧溢出等。通常情況下,coredump文件包含了程序運(yùn)行時(shí)的內(nèi)存、寄存器狀態(tài)、堆棧指針、內(nèi)存管理信息等,也就是把程序的當(dāng)前狀態(tài)存儲(chǔ)成一個(gè)文件。相應(yīng)的,如果應(yīng)用程序正在進(jìn)行內(nèi)存轉(zhuǎn)儲(chǔ)的操作,相應(yīng)的進(jìn)程也會(huì)執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作。
[0032]當(dāng)正在運(yùn)行的進(jìn)程執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的操作時(shí),該進(jìn)程將不會(huì)接收任何的信號(hào),也不會(huì)響應(yīng)任何的信號(hào)。如果此時(shí)應(yīng)用諸如1wmemoryki I Ier等進(jìn)程關(guān)閉模塊向正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作的進(jìn)程發(fā)出強(qiáng)制關(guān)閉的指令,如kill-9指令來(lái)強(qiáng)制關(guān)閉目標(biāo)進(jìn)程N(yùn),但由于目標(biāo)進(jìn)程N(yùn)正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,不會(huì)接收到kill-9指令,也不會(huì)響應(yīng)kill-9指令,導(dǎo)致目標(biāo)進(jìn)程N(yùn)無(wú)法被強(qiáng)制關(guān)閉的情況發(fā)生。
[0033]如果目標(biāo)進(jìn)程N(yùn)無(wú)法被強(qiáng)制關(guān)閉,則其占用的系統(tǒng)內(nèi)存無(wú)法被釋放,內(nèi)存管理模塊20下次監(jiān)測(cè)系統(tǒng)內(nèi)存使用率時(shí),仍判斷系統(tǒng)內(nèi)存使用率過(guò)高,仍會(huì)繼續(xù)選擇進(jìn)程N(yùn)作為目標(biāo)進(jìn)程并嘗試強(qiáng)制關(guān)閉,這樣將導(dǎo)致進(jìn)程N(yùn)每次被選擇后均不能被強(qiáng)制關(guān)閉,但進(jìn)程選擇模塊21每次選擇進(jìn)程N(yùn)的來(lái)嘗試關(guān)閉的情況,最后導(dǎo)致智能電子設(shè)備陷入死循環(huán),出現(xiàn)電子設(shè)備卡頓的情況。此時(shí),智能電子設(shè)備無(wú)法響應(yīng)使用者發(fā)出的任何指令,也影響智能電子設(shè)備的運(yùn)行。
[0034]為了避免智能電子設(shè)備出現(xiàn)卡頓的情況,在進(jìn)程選擇模塊21選擇嘗試強(qiáng)制關(guān)閉的目標(biāo)進(jìn)程后,關(guān)閉處理模塊22將判斷被選擇的目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,例如,進(jìn)程N(yùn)正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則關(guān)閉處理模塊22將選擇另一個(gè)正在運(yùn)行并且不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作的進(jìn)程。例如,進(jìn)程M的優(yōu)先級(jí)較低,且不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則關(guān)閉處理模塊22將選擇進(jìn)程M作為嘗試關(guān)閉的目標(biāo)進(jìn)程。
[0035]由于每一進(jìn)程運(yùn)行時(shí)均設(shè)置運(yùn)行狀態(tài)信息,且進(jìn)程執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作時(shí),其運(yùn)行狀態(tài)信息將反應(yīng)其運(yùn)行狀態(tài)。例如,進(jìn)程N(yùn)執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作時(shí),將通過(guò)狀態(tài)標(biāo)識(shí)來(lái)標(biāo)識(shí)其正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ),因此,關(guān)閉處理模塊22可以通過(guò)查看進(jìn)程N(yùn)的運(yùn)行狀態(tài)信息,也即是查看運(yùn)行狀態(tài)標(biāo)識(shí)即可以判斷進(jìn)程N(yùn)是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作。
[0036]當(dāng)關(guān)閉處理模塊22判斷進(jìn)程N(yùn)正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作時(shí),則需要選擇另一個(gè)進(jìn)程,如進(jìn)程M作為嘗試關(guān)閉的目標(biāo)進(jìn)程。當(dāng)然,選擇進(jìn)程M后,仍需要判斷進(jìn)程M是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,如果進(jìn)程M也是正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則再次選擇另一個(gè)進(jìn)程,如果進(jìn)程M不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則進(jìn)程M將被選擇為需要強(qiáng)制關(guān)閉的目標(biāo)進(jìn)程。
[°037]當(dāng)進(jìn)程M被選擇為強(qiáng)制關(guān)閉的內(nèi)存后,由1wmemoryki 11 er向進(jìn)程M發(fā)出強(qiáng)制關(guān)閉的指令,如kill-9指令,當(dāng)進(jìn)程M接收到強(qiáng)制關(guān)閉的指令后,進(jìn)程M將被強(qiáng)制關(guān)閉,其占用的內(nèi)存資源也隨即釋放,從而確保智能電子設(shè)備的正常運(yùn)行。
[0038]可選地,可以設(shè)置每一進(jìn)程在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作時(shí),主動(dòng)向進(jìn)程管理器發(fā)送信息,表示該進(jìn)程正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作。例如,一旦進(jìn)程N(yùn)發(fā)生異常并出現(xiàn)崩潰情況,向進(jìn)程管理器發(fā)送信息以表示其正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的操作。在這種情況下,關(guān)閉處理模塊22可以通過(guò)從進(jìn)程管理器中獲取信息,從而判斷被選擇的進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的操作。
[0039]下面結(jié)合圖4介紹移動(dòng)終端控制方法的工作流程。首先,內(nèi)存管理模塊判斷當(dāng)前系統(tǒng)內(nèi)存的使用情況,也就是判斷當(dāng)前系內(nèi)存的使用率是否高于設(shè)定的閾值,即執(zhí)行步驟Si。如果系統(tǒng)的內(nèi)存使用率低于設(shè)定的閾值,則繼續(xù)監(jiān)測(cè),如果系統(tǒng)內(nèi)存使用率高于設(shè)定的閾值,則執(zhí)行步驟S2,進(jìn)程選擇模塊選擇一個(gè)嘗試關(guān)閉的目標(biāo)進(jìn)程,也就是待關(guān)閉的目標(biāo)進(jìn)程。選擇嘗試關(guān)閉的目標(biāo)進(jìn)程時(shí),選擇優(yōu)先級(jí)較低且占用內(nèi)存資源較多的進(jìn)程。
[0040]選擇嘗試關(guān)閉的目標(biāo)進(jìn)程后,執(zhí)行步驟S3,獲取目標(biāo)進(jìn)程的運(yùn)行狀態(tài)信息,例如查看該目標(biāo)進(jìn)程的狀態(tài)標(biāo)識(shí),并執(zhí)行步驟S4,判斷目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,如目標(biāo)進(jìn)程不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的操作,則執(zhí)行步驟S5,1wmemorykiI Ier向目標(biāo)進(jìn)程發(fā)出強(qiáng)制關(guān)閉的指令,如ki11-9指令,目標(biāo)進(jìn)程將被強(qiáng)制關(guān)閉。
[0041 ]如目標(biāo)進(jìn)程正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則執(zhí)行步驟S6,關(guān)閉處理模塊從進(jìn)程管理器記錄的多個(gè)正在運(yùn)行的進(jìn)程中選擇另一個(gè)進(jìn)程作為目標(biāo)進(jìn)程,并返回執(zhí)行步驟S3,查看再次被選擇的另一個(gè)進(jìn)程的運(yùn)行狀態(tài)信息,然后執(zhí)行步驟S4,判斷再次被選擇的另一個(gè)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,直至選擇一個(gè)不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作的進(jìn)程,并且將被選擇的進(jìn)程強(qiáng)制關(guān)閉,從而釋放系統(tǒng)內(nèi)存。
[0042]可見(jiàn),應(yīng)用本發(fā)明的方案,如果嘗試關(guān)閉的目標(biāo)進(jìn)程正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則不會(huì)關(guān)閉該目標(biāo)進(jìn)程,也即是屏蔽了關(guān)閉正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作進(jìn)程的指令,從而確保接收1wmemoryki I Ier發(fā)出的強(qiáng)制關(guān)閉指令的進(jìn)程一定是不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的進(jìn)程,也就是接收到強(qiáng)制關(guān)閉指令的進(jìn)程一定是不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的進(jìn)程,避免了由于接收到強(qiáng)制關(guān)閉指令的進(jìn)程正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)而無(wú)法被強(qiáng)制關(guān)閉,智能電子設(shè)備進(jìn)入死循環(huán)而出現(xiàn)卡頓現(xiàn)象,確保智能電子設(shè)備的正常運(yùn)行。
[0043]當(dāng)然,上述的方案只是本發(fā)明優(yōu)選的實(shí)施方案,實(shí)際應(yīng)用是還可以有更多的變化,例如,選擇待關(guān)閉的進(jìn)程后,可以通過(guò)多種方式獲取進(jìn)程的運(yùn)行狀態(tài)以確定該進(jìn)程是否正在執(zhí)行內(nèi)置轉(zhuǎn)儲(chǔ)操作,如通過(guò)進(jìn)程的相關(guān)應(yīng)用程序的運(yùn)行情況、父進(jìn)程的運(yùn)行狀態(tài)等來(lái)判斷被選擇進(jìn)程的運(yùn)行狀態(tài),這樣的改變并不影響本發(fā)明的實(shí)施,也應(yīng)該包括在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種移動(dòng)終端控制方法,其特征在于,包括: 判斷系統(tǒng)內(nèi)存使用率是否高于設(shè)定閾值,若是,選擇待關(guān)閉的目標(biāo)進(jìn)程; 判斷所述目標(biāo)進(jìn)程是否正在進(jìn)行內(nèi)存轉(zhuǎn)儲(chǔ),若是,屏蔽關(guān)閉所述目標(biāo)進(jìn)程的指令。2.根據(jù)權(quán)利要求1所述的方法,其特征在于: 若所述目標(biāo)進(jìn)程正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,則選擇另一正在運(yùn)行的優(yōu)先級(jí)低且不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的進(jìn)程,關(guān)閉所述選擇的另一進(jìn)程。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于: 所述判斷所述目標(biāo)進(jìn)程是否正在進(jìn)行內(nèi)存轉(zhuǎn)儲(chǔ)的步驟包括:獲取所述目標(biāo)進(jìn)程的狀態(tài)信息,根據(jù)所述狀態(tài)信息判斷所述目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)。4.根據(jù)權(quán)利要求3所述的方法,其特征在于: 所述狀態(tài)信息為所述目標(biāo)進(jìn)程的運(yùn)行狀態(tài)標(biāo)識(shí)。5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括: 正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的進(jìn)程向進(jìn)程管理器發(fā)送狀態(tài)信息; 所述判斷所述目標(biāo)進(jìn)程是否正在進(jìn)行內(nèi)存轉(zhuǎn)儲(chǔ)的步驟包括:獲取所述目標(biāo)進(jìn)程向進(jìn)程管理器發(fā)送的狀態(tài)信息。6.一種移動(dòng)終端控制裝置,包括: 進(jìn)程選擇模塊,在判斷系統(tǒng)內(nèi)存使用率高于設(shè)定閾值時(shí),選擇待關(guān)閉的目標(biāo)進(jìn)程; 其特征在于,還包括: 關(guān)閉處理模塊,判斷所述目標(biāo)進(jìn)程是否正在進(jìn)行內(nèi)存轉(zhuǎn)儲(chǔ),如是,屏蔽關(guān)閉所述目標(biāo)進(jìn)程的指令。7.根據(jù)權(quán)利要求6所述的移動(dòng)終端控制裝置,其特征在于: 所述關(guān)閉處理模塊在判斷所述目標(biāo)進(jìn)程正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作時(shí),選擇另一正在運(yùn)行的優(yōu)先級(jí)低且不在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)的進(jìn)程,關(guān)閉所述選擇的另一進(jìn)程。8.根據(jù)權(quán)利要求6或7所述的移動(dòng)終端控制裝置,其特征在于: 所述關(guān)閉處理模塊判斷所述目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作時(shí),獲取所述目標(biāo)進(jìn)程的狀態(tài)信息,根據(jù)所述狀態(tài)信息判斷所述目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)。9.根據(jù)權(quán)利要求8所述的移動(dòng)終端控制裝置,其特征在于: 所述狀態(tài)信息為所述目標(biāo)進(jìn)程的運(yùn)行狀態(tài)標(biāo)識(shí)。10.根據(jù)權(quán)利要求6或7所述的移動(dòng)終端控制裝置,其特征在于: 所述關(guān)閉處理模塊判斷所述目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)時(shí),獲取目標(biāo)進(jìn)程向進(jìn)程管理器發(fā)送的狀態(tài)信息。
【專(zhuān)利摘要】本發(fā)明提供一種移動(dòng)終端控制方法及控制裝置,該方法包括判斷系統(tǒng)內(nèi)存使用率是否高于設(shè)定閾值,如是,選擇待關(guān)閉的目標(biāo)進(jìn)程,并且,判斷目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ),如是,屏蔽關(guān)閉目標(biāo)進(jìn)程的指令。該裝置包括進(jìn)程選擇模塊,判斷系統(tǒng)內(nèi)存使用率高于設(shè)定閾值時(shí),選擇待關(guān)閉的目標(biāo)進(jìn)程;還包括關(guān)閉處理模塊,判斷目標(biāo)進(jìn)程是否正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作,如是,屏蔽關(guān)閉目標(biāo)進(jìn)程的指令。本發(fā)明能有效避免因關(guān)閉正在執(zhí)行內(nèi)存轉(zhuǎn)儲(chǔ)操作的進(jìn)程而導(dǎo)致智能電子設(shè)備進(jìn)入死循環(huán)的狀態(tài),避免智能電子設(shè)備出現(xiàn)卡頓的情況。
【IPC分類(lèi)】G06F9/50, G06F9/48
【公開(kāi)號(hào)】CN105550041
【申請(qǐng)?zhí)枴緾N201610128267
【發(fā)明人】白浩文, 吳章金, 彭偉林
【申請(qǐng)人】珠海市魅族科技有限公司
【公開(kāi)日】2016年5月4日
【申請(qǐng)日】2016年3月4日