本發(fā)明涉及一種基于智能手機(jī)時鐘機(jī)制的批處理喚醒低功耗方法,屬于移動計算和移動終端研發(fā)領(lǐng)域。
背景技術(shù):
隨著嵌入式設(shè)備、無線傳感網(wǎng)絡(luò)、移動計算等快速發(fā)展,集成感知、計算和通信能力的普適智能系統(tǒng)被廣泛部署,并逐步融入到人類的日常生活環(huán)境。其中最為顯著的是,智能手機(jī)的普及,全球智能手機(jī)市場已經(jīng)達(dá)到了一個新的里程碑,截至2014年為止,出貨高達(dá)數(shù)十億,將近63%的人都擁有一部或多部智能手機(jī)(“Worldwide smartphone shipments top one billion units,”http://www.idc.com/getdoc.jsp?containerId=prUS24645514.)。
然而智能手機(jī)的電池續(xù)航能力卻沒有出現(xiàn)突破性進(jìn)展?,F(xiàn)有的智能手機(jī)大多采用鋰電池供電,例如3000mAh的鋰電池往往只能支持智能手機(jī)續(xù)航20小時左右。并且,隨著用戶使用智能手機(jī)的時間增加,應(yīng)用程序會越來越多的安裝在智能手機(jī)上。數(shù)十個應(yīng)用程序運(yùn)行在智能手機(jī)上,應(yīng)用程序往往采用多線程運(yùn)行。在智能手機(jī)的實際使用中,往往出現(xiàn)數(shù)十個應(yīng)用程序休眠,多個應(yīng)用程序喚醒,多個線程運(yùn)行的情況。根據(jù)喚醒機(jī)制設(shè)置,智能手機(jī)單位時間內(nèi)消耗不同程度的電量。
現(xiàn)有的智能手機(jī)的喚醒機(jī)制往往都由操作系統(tǒng)來負(fù)責(zé),其中以iPhone為代表的iOS,控制所有應(yīng)用程序,前臺線程和后臺線程的喚醒時鐘,以精確的時鐘消息為依據(jù),喚醒相應(yīng)的部分。以Android為代表的智能手機(jī)操作系統(tǒng),則在應(yīng)用層面,采用統(tǒng)一的時鐘管理單元進(jìn)行時鐘消息來喚醒相應(yīng)的程序。Android系統(tǒng)為了節(jié)省單位時間的電量損耗,則采用了模糊的時鐘消息為依據(jù)。但是當(dāng)前這些主流的智能手機(jī)對時鐘喚醒機(jī)制的優(yōu)化較差,在整個時鐘喚醒的流程上還需要優(yōu)化,以在一定程度上增加手機(jī)續(xù)航時間。
技術(shù)實現(xiàn)要素:
針對已有工作的不足,本發(fā)明提出了一種基于智能手機(jī)時鐘機(jī)制的批處理喚醒低功耗方法。本發(fā)明中,每一個應(yīng)用程序?qū)r鐘消息發(fā)送給消息管理單元,消息管理單元根據(jù)時鐘消息的時間戳進(jìn)行排序,得到一時鐘消息隊列,并批處理式的喚醒多個應(yīng)用程序或者多個應(yīng)用程序線程。
本發(fā)明的技術(shù)方案為:
一種基于智能手機(jī)時鐘機(jī)制的批處理喚醒低功耗方法,其步驟為:
1)智能手機(jī)的應(yīng)用程序?qū)r鐘消息發(fā)送給消息管理單元;其中,該時鐘消息包括應(yīng)用程序信息和喚醒時間戳;
2)該消息管理單元根據(jù)時鐘消息中的喚醒時間戳和進(jìn)程號pid,對每一個進(jìn)程設(shè)置一喚醒時間戳序列其中,tni為第i個進(jìn)程pidi中第n個時鐘消息的喚醒時間戳;然后對各應(yīng)用程序的時間戳序列T={pid1,pid2,...,pidm}進(jìn)行排序,得到一時鐘隊列Q;
3)該時鐘管理單元根據(jù)消息隊列,在時鐘隊列Q里取前k個喚醒時間戳對應(yīng)的時鐘消息,然后計算該k個時鐘消息的喚醒時間戳差值平均值tavg;如果tavg小于閾值τ,則在該智能手機(jī)的系統(tǒng)時間經(jīng)過tavg后,該時鐘管理單元將該k個時鐘消息一起發(fā)送到應(yīng)用程序,喚醒其進(jìn)程;如果tavg大于或等于設(shè)定閾值τ,那么時鐘管理單元,則依照智能手機(jī)默認(rèn)的時鐘管理算法進(jìn)行處理。
進(jìn)一步的,智能手機(jī)的應(yīng)用程序?qū)⒆约旱膯拘褧r間封裝在時鐘消息里面?zhèn)鬟f給時鐘管理單元;其中,該時鐘消息包括應(yīng)用程序信息、應(yīng)用程序的進(jìn)程號pid和喚醒時間戳。
進(jìn)一步的,應(yīng)用程序的時鐘設(shè)置通過智能手機(jī)操作系統(tǒng)內(nèi)置函數(shù),AlarmManager.set()。
進(jìn)一步的,應(yīng)用程序信息包括應(yīng)用程序名稱標(biāo)識、應(yīng)用程序?qū)?yīng)的進(jìn)程號。
進(jìn)一步的,步驟3)中,如果tavg大于或等于設(shè)定閾值τ,那么時鐘管理單元依照智能手機(jī)默認(rèn)的時鐘管理算法進(jìn)行處理。
進(jìn)一步的,利用公式計算喚醒時間戳差值平均值tavg;其中,ti為該k個時鐘消息中的第i個時鐘消息的喚醒時間戳。
如圖1所示,多個應(yīng)用程序設(shè)置自己的喚醒時間,不同應(yīng)用程序的喚醒方式都與開發(fā)者有關(guān),沒有統(tǒng)一的規(guī)定,并將這個喚醒時間信息通過時鐘消息發(fā)送給時鐘管理單元,應(yīng)用程序的時鐘設(shè)置通過智能手機(jī)操作系統(tǒng)內(nèi)置函數(shù),AlarmManager.set()。同時時鐘管理單元根據(jù)多個應(yīng)用程序設(shè)置的時鐘喚醒的情況,批處理式的發(fā)送時鐘喚醒消息給應(yīng)用程序。當(dāng)應(yīng)用程序接收到喚醒消息時,無論當(dāng)前應(yīng)用程序的狀態(tài),都會通過智能手機(jī)操作系統(tǒng)內(nèi)置函數(shù)BroadcastReceiver.onReceiver()喚醒應(yīng)用程序。時鐘管理單元處理時鐘消息和喚醒消息如圖2所示。時鐘管理單元將接收到的時鐘信息的時間戳提取出來,并進(jìn)行排序,進(jìn)入時鐘序列,批處理式地發(fā)送喚醒消息。
本方法的基于智能手機(jī)時鐘機(jī)制的批處理喚醒低功耗算法,其主要步驟(如圖1和圖2所示)包括:
1.時鐘管理單元接受時鐘消息,提取時鐘消息的應(yīng)用程序名稱標(biāo)識,應(yīng)用程序?qū)?yīng)的進(jìn)程號和時間戳。
2.時鐘管理單元,根據(jù)時間戳重新排序,進(jìn)入時鐘消息隊列。
3.時鐘管理單元根據(jù)消息隊列,批處理式的發(fā)送喚醒消息到應(yīng)用程序,喚醒其進(jìn)程或線程。
上述步驟的具體實現(xiàn)方法為:
1.時鐘管理單元接受時鐘消息,提取時鐘消息的應(yīng)用程序信息,進(jìn)程和時間戳。
智能手機(jī)的應(yīng)用程序為了在某個時間點或者過了某段時間以后醒過來完成某項任務(wù),通過AlarmManager.set()設(shè)置具體的喚醒時間,然后智能手機(jī)將這個喚醒時間和對應(yīng)的應(yīng)用程序信息(名稱標(biāo)識,進(jìn)程號)封裝在時鐘消息里面?zhèn)鬟f給時鐘管理單元。時鐘管理單元,首先提取出這個時鐘消息的應(yīng)用程序消息(包括其進(jìn)程號pid)和喚醒時間戳。
2.時鐘管理單元,根據(jù)時鐘消息的時間戳對時鐘消息重新排序,進(jìn)入時鐘消息隊列
在步驟1中,我們獲得了所有應(yīng)用程序所設(shè)置的喚醒時間戳,進(jìn)程號pid。對于每一個進(jìn)程而言,都有一個喚醒時間戳序列,如下:
其中全部的應(yīng)用程序的時間戳序列可以表示為,如下:T={pid1,pid2,...,pidm}時鐘管理單元對時間序列重新排序,進(jìn)入隊列時鐘隊列Q,如下:
Q=sort(T)
其中sort()為排序算法,tni為第i個進(jìn)程中第n個時鐘消息的喚醒時間戳。
3.時鐘管理單元根據(jù)消息隊列,批處理式的發(fā)送喚醒消息到應(yīng)用程序,喚醒其進(jìn)程在步驟2中,我們獲得了新的時鐘消息排序隊列。時鐘管理單元的批處理方式,在時鐘隊列里,每次取前k個喚醒時間戳對應(yīng)的時鐘消息,計算這些時鐘消息的時間戳差值平均值:
其中tavg為前k個時鐘消息的平均值。如果tavg小于閾值τ,那么這k個時鐘消息,在智能手機(jī)系統(tǒng)時間經(jīng)過tavg時,時鐘管理單元將這個k個喚醒消息一起發(fā)送到相應(yīng)的應(yīng)用程序,喚醒其進(jìn)程或線程。如果tavg大于或等于設(shè)定閾值τ,那么時鐘管理單元,則依照智能手機(jī)原先默認(rèn)的時鐘管理算法進(jìn)行。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
(1)傳統(tǒng)的時鐘喚醒方式中,各應(yīng)用程序時鐘喚醒相對獨立,隨著應(yīng)用程序數(shù)目的增多能量消耗越大,本方法優(yōu)化了時鐘喚醒方式節(jié)省了能耗,并隨著應(yīng)用程序的增多節(jié)省的能耗越多;
(2)本方法在不增加應(yīng)用程序的響應(yīng)延遲時的前提保證能耗最低。
附圖說明
圖1為批處理喚醒過程:應(yīng)用程序置喚醒時間和時鐘管理單元喚醒應(yīng)用程序;
圖2為時鐘管理單元進(jìn)行時鐘消息批處理過程圖。
具體實施方式
一種基于智能手機(jī)時鐘機(jī)制的批處理喚醒低功耗算法,下面我們描述具體的實現(xiàn)細(xì)節(jié)。
a)獲取應(yīng)用程序的時鐘消息,記錄其進(jìn)程號pid;
b)在(a)后,對所有的時鐘消息的時間戳進(jìn)行排序,獲得新隊列Q;
c)在(b)后,選取新隊列Q的前k個時鐘消息,并計算其平均時間戳差值tavg;
d)在(c)后,如果tavg小于預(yù)先設(shè)定的閾值,等到系統(tǒng)時間經(jīng)過tavg時,將前k個時鐘消息的喚醒時間一起發(fā)送給應(yīng)用程序;
e)在(c)后,如果tavg大于等于預(yù)先設(shè)定的閾值,時鐘管理單元按照系統(tǒng)原先默認(rèn)的時鐘喚醒算法運(yùn)行。