任務(wù)調(diào)度方法、裝置及操作系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供一種任務(wù)調(diào)度方法、裝置及操作系統(tǒng),本發(fā)明方法,包括:根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表;確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。本發(fā)明實施例,通過確定用戶程序調(diào)度任務(wù)需要調(diào)度執(zhí)行的子任務(wù)以及更新任務(wù)調(diào)度索引列表,以實現(xiàn)任務(wù)動態(tài)調(diào)度,不再調(diào)度執(zhí)行無需執(zhí)行的子任務(wù),以實現(xiàn)減少無用開銷,降低CPU負(fù)載和系統(tǒng)功耗的目的。
【專利說明】CN 103488536 A
書
明
說
1/7頁
任務(wù)調(diào)度方法、裝置及操作系統(tǒng)
【技術(shù)領(lǐng)域】 [0001]本發(fā)明實施例涉及計算機操作系統(tǒng)技術(shù),尤其涉及一種任務(wù)調(diào)度方法、裝置及操作系統(tǒng)。
【背景技術(shù)】
[0002]在電子設(shè)備領(lǐng)域,功耗是一個非常重要的指標(biāo),而處理器CPU負(fù)載的高低,直接會影響整個系統(tǒng)的功耗。對于一款產(chǎn)品,為了提升競爭力,會對硬件資源,如CPU頻率、總線頻率、雙倍速率同步動態(tài)隨機存儲器DDR頻率等做一些限制,因此在有限的CPU資源中如何降低CPU關(guān)鍵指標(biāo),比如平均負(fù)載以及峰值負(fù)載,是降低產(chǎn)品功耗的重要技術(shù)手段。
[0003]現(xiàn)有技術(shù)中,CPU處理任務(wù)是串行調(diào)度的,即任務(wù)程序編譯好以后,任務(wù)調(diào)度執(zhí)行的順序是靜態(tài)的,固定不變的。比如,圖I為現(xiàn)有技術(shù)中的任務(wù)調(diào)度順序示意圖,如圖I所示,一個中斷處理任務(wù)中包含多個子任務(wù)FUN_1、FUN_2、FUN_3、FUN_4. . . FUN_X,當(dāng)調(diào)用中斷處理任務(wù)時,則需要順序執(zhí)行所有的子任務(wù)。
[0004]而在用戶程序調(diào)用某個任務(wù)時,并不是所有的子任務(wù)都是需要執(zhí)行調(diào)用的,比如圖I中的子任務(wù)FUN_1、FUN_3和FUN_4。但由于現(xiàn)有的任務(wù)調(diào)度是靜態(tài)順序執(zhí)行的,因此在調(diào)度任務(wù)過程中,即使存在不需要執(zhí)行的子任務(wù)也需要調(diào)度執(zhí)行如壓棧、退棧以及條件判決等操作,從而導(dǎo)致調(diào)度存在無用調(diào)度開銷,增加了 CPU負(fù)載和系統(tǒng)功耗。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種任務(wù)調(diào)度方法、裝置及操作系統(tǒng),以實現(xiàn)用戶程序調(diào)用某個任務(wù)時繞過任務(wù)中不需要調(diào)度執(zhí)行的子任務(wù),從而降低CPU負(fù)載和系統(tǒng)功耗的目的。
[0006]第一方面,本發(fā)明實施例提供一種任務(wù)調(diào)度方法,包括:
[0007]根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;
[0008]確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0009]根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0010]調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。
[0011]在第一方面第一種可能的實現(xiàn)方式中,所述調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù),包括:
[0012]根據(jù)所述更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)的索引從第一個子任務(wù)開始順序跳轉(zhuǎn)到各子任務(wù)對應(yīng)的函數(shù)入口指針地址處執(zhí)行各子任務(wù)代碼程序,若執(zhí)行的函數(shù)入口指針地址為空,則退出所述任務(wù)調(diào)度。
[0013]結(jié)合第一方面或第一方面第一種可能的實現(xiàn)方式,在第一方面第二種可能的實現(xiàn)
4方式中,所述根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,包括:
[0014]根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序,生成所述任務(wù)調(diào)度索引列表中的各子任務(wù)的索引號,以使各子任務(wù)的執(zhí)行順序與各子任務(wù)的索引號順序保持一致;
[0015]依據(jù)所述各子任務(wù)的索引號順序注冊生成任務(wù)調(diào)度索引列表。
[0016]結(jié)合第一方面第二種可能的實現(xiàn)方式,在第一方面第三種可能的實現(xiàn)方式中,所述根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),包括:
[0017]若所述任務(wù)調(diào)度索引列表中存在所述用戶程序調(diào)度所述任務(wù)時不需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)從所述任務(wù)調(diào)度索引列表中刪除,并對其余的全部子任務(wù)基于各子任務(wù)的索引號進行重新順序排序;或,
[0018]若所述任務(wù)調(diào)度索引列表中不存在所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)注冊增加到所述任務(wù)調(diào)度索引列表中,并對全部的子任務(wù)基于各子任務(wù)的索引號進行重新順序排序。
[0019]結(jié)合第一方面、第一方面第一種至第三種可能的實現(xiàn)方式,在第一方面第四種可能的實現(xiàn)方式中,所述各子任務(wù)的索引為所述各子任務(wù)的對應(yīng)的函數(shù)入口地址。
[0020]結(jié)合第一方面、第一方面第一種至第四種可能的實現(xiàn)方式,在第一方面第五種可能的實現(xiàn)方式中,所述任務(wù)為系統(tǒng)中周期性執(zhí)行的任務(wù)。
[0021]第二方面,本發(fā)明實施例提供一種任務(wù)調(diào)度裝置,包括:
[0022]注冊生成模塊,用于根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;
[0023]確定子任務(wù)模塊,用于確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0024]更新任務(wù)調(diào)度索引列表模塊,用于根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0025]調(diào)度執(zhí)行模塊,用于調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。
[0026]在第二方面第一種可能的實現(xiàn)方式中,所述調(diào)度執(zhí)行模塊,具體用于:
[0027]根據(jù)所述更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)的索引從第一個子任務(wù)開始順序跳轉(zhuǎn)到各子任務(wù)對應(yīng)的函數(shù)入口指針地址處執(zhí)行各子任務(wù)代碼程序,若執(zhí)行的函數(shù)入口指針地址為空,則退出所述任務(wù)調(diào)度。
[0028]結(jié)合第二方面或第二方面第一種可能的實現(xiàn)方式,在第二方面第二種可能的實現(xiàn)方式中,所述注冊生成模塊,包括:
[0029]生成索引單元,用于根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序,生成所述任務(wù)調(diào)度索引列表中的各子任務(wù)的索引號,以使各子任務(wù)的執(zhí)行順序與各子任務(wù)的索引號順序
保持一致;
[0030]生成任務(wù)調(diào)度索引列表單元,用于依據(jù)所述各子任務(wù)的索引號順序注冊生成任務(wù)調(diào)度索引列表。
5CN 103488536 A
書
明
說
3/7頁
[0031]結(jié)合第二方面第二種可能的實現(xiàn)方式,在第二方面第三種可能的實現(xiàn)方式中,所述更新任務(wù)調(diào)度索引列表模塊,具體用于:
[0032]若所述任務(wù)調(diào)度索引列表中存在所述用戶程序調(diào)度所述任務(wù)時不需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)從所述任務(wù)調(diào)度索引列表中刪除,并對其余的全部子任務(wù)基于各子任務(wù)的索引號進行重新順序排序;或,
[0033]若所述任務(wù)調(diào)度索引列表中不存在所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)注冊增加到所述任務(wù)調(diào)度索引列表中,并對全部的子任務(wù)基于各子任務(wù)的索引號進行重新順序排序。
[0034]結(jié)合第二方面、第二方面第一種至第三種可能的實現(xiàn)方式,在第二方面第四種可能的實現(xiàn)方式中,所述各子任務(wù)的索引為所述各子任務(wù)的對應(yīng)的函數(shù)入口地址。
[0035]結(jié)合第二方面、第二方面第一種至第四種可能的實現(xiàn)方式,在第二方面第五種可能的實現(xiàn)方式中,所述任務(wù)為系統(tǒng)中周期性執(zhí)行的任務(wù)。
[0036]第三方面,本發(fā)明實施例提供一種操作系統(tǒng),包括第二方面、第二方面第一種至第五種任意可能的實現(xiàn)方式中的一種任務(wù)調(diào)度裝置。
[0037]本發(fā)明實施例通過確定用戶程序調(diào)度任務(wù)需要調(diào)度執(zhí)行的子任務(wù)以及更新任務(wù)調(diào)度索引列表,以實現(xiàn)任務(wù)動態(tài)調(diào)度,無需執(zhí)行的子任務(wù)不調(diào)度執(zhí)行,以實現(xiàn)減少無用開銷,降低CPU負(fù)載和系統(tǒng)功耗的目的。
【專利附圖】
【附圖說明】
[0038]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖[0040]圖[0041]圖[0042]圖[0043]圖[0044]圖[0045]圖[0046]圖[0047]圖
、思固;
.的流程圖
【具體實施方式】
[0048]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0049]實施例I
6[0050]圖2為本發(fā)明一種任務(wù)調(diào)度方法實施例一的流程圖,本方法的執(zhí)行主體是任務(wù)調(diào)度裝置,該裝置可以置于操作系統(tǒng)中,如Linux, Windows, Solaris和VxWorks等。如圖2所示,該方法具體包括:
[0051]步驟201、根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;
[0052]本步驟中,子任務(wù)為任務(wù)函數(shù)中的子函數(shù)。任務(wù)調(diào)度索引表存放在內(nèi)存中,實現(xiàn)時可以統(tǒng)一申請空間并維護,也可以各具體業(yè)務(wù)模塊來維護。
[0053]圖3為圖2中注冊生成的任務(wù)調(diào)度索引列表示意圖,如圖3所示,若任務(wù)中包括多個子任務(wù)FUN_1、FUN_2、FUN_3、FUN_4. . . FUN_X,則注冊生成的任務(wù)調(diào)度索引列表中包括以上述子任務(wù)的索引(比如1,2,3. . .X)和對應(yīng)的函數(shù)入口地址指針(比如FunPtr_l,FunPtr_2, FunPtr_3, FunPtr_4. . . FunPtr_X)。
[0054]步驟202、確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0055]比如確定某個用戶程序在調(diào)用圖3中的任務(wù)時,只需要調(diào)用其中的FUN_1和FUN_X兩個子任務(wù)。
[0056]步驟203、根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0057]本步驟中,在注冊生成的任務(wù)調(diào)度索引列表的基礎(chǔ)上,基于步驟202確定的用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),對任務(wù)調(diào)度索引列表進行更新。比如,圖4為圖2中更新的任務(wù)調(diào)度索引列表示意圖,如圖4所示,在某用戶程序調(diào)用任務(wù)時,只需要調(diào)用FUN_1和FUN_X兩個子任務(wù),因此,將注冊生成的任務(wù)調(diào)度索引列表進行更新,只保留FUN_1和FUN_X兩個子任務(wù)的相關(guān)信息。
[0058]步驟204、調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。
[0059]相對于現(xiàn)有技術(shù)中,某個用戶程序調(diào)度某個任務(wù)時,需要調(diào)度此任務(wù)的全部子任務(wù),本發(fā)明實施例通過確定用戶程序調(diào)度任務(wù)需要調(diào)度執(zhí)行的子任務(wù)以及更新任務(wù)調(diào)度索引列表,直接按照更新后的任務(wù)調(diào)度索引列表的順序執(zhí)行所需的子任務(wù),無需查詢就能直接執(zhí)行所需的子任務(wù)。從而實現(xiàn)任務(wù)動態(tài)調(diào)度,無需執(zhí)行的子任務(wù)不調(diào)度執(zhí)行,以實現(xiàn)減少無用調(diào)度產(chǎn)生的開銷,降低CPU負(fù)載和系統(tǒng)功耗的目的。
[0060]優(yōu)先地,在上述實施例的基礎(chǔ)上,所述任務(wù)為系統(tǒng)中周期性執(zhí)行的任務(wù)。對于每個周期性任務(wù),都會有獨立的任務(wù)入口(如中斷入口函數(shù)、消息處理函數(shù)等)。以WCDMA系統(tǒng)為例,一般都會有協(xié)議層、物理層以及底層空口等模塊。對于物理層模塊而言,需要頻繁處理周期性任務(wù):如2ms子幀任務(wù)、測量、搜索、譯碼等任務(wù)。
[0061]周期性執(zhí)行的任務(wù)需要頻繁調(diào)用,系統(tǒng)資源占用最大,如果采用本實施例的技術(shù)方案,將會有效地降低CPU負(fù)載和系統(tǒng)功耗,因此,調(diào)用周期越頻繁的任務(wù),本實施例的技術(shù)方案帶來的技術(shù)效果會越大。
[0062]實施例2
[0063]圖5為本發(fā)明一種任務(wù)調(diào)度方法實施例二的流程圖,如圖5所示,具體包括:
[0064]步驟501、根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序,生成所述任務(wù)調(diào)度索引列CN 103488536 A
書
明
說
5/7頁
表中的各子任務(wù)的索引號,以使各子任務(wù)的執(zhí)行順序與各子任務(wù)的索引號順序保持一致;
[0065]根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序生成任務(wù)調(diào)度索引列表中的各子任務(wù)的索引號,以保證執(zhí)行順序和靜態(tài)編譯好時的任務(wù)的相對順序保持一致,因此在執(zhí)行時不會因為順序不一致導(dǎo)致破壞軟件邏輯的一致性。
[0066]步驟502、依據(jù)所述各子任務(wù)的索引號順序注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;
[0067]步驟503、確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0068]步驟504、若所述任務(wù)調(diào)度索引列表中存在所述用戶程序調(diào)度所述任務(wù)時不需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)從所述任務(wù)調(diào)度索引列表中刪除,并對其余的全部子任務(wù)基于各子任務(wù)的索引號進行重新順序排序;
[0069]以寬帶碼分多址(wideband CDMA,簡稱WCDMA)系統(tǒng)中的2ms子幀任務(wù)為例,可以設(shè)置下面的刪除函數(shù):
[0070]void DE M0_Del_ffcdma2msTask(int SubFrameIndex, void*pFun);
[0071]功能描述:刪除 2ms周期性任務(wù)
[0072]參數(shù)說明:int SubFrameIndex-----子幀索引:0~4
[0073]void*pFun-----任務(wù)入口(函數(shù)指針)
[0074]實現(xiàn)細(xì)節(jié):1、找到對應(yīng)2ms子幀“任務(wù)調(diào)度索引表”;
[0075]2、刪除子任務(wù),把函數(shù)指針從“任務(wù)調(diào)度索引表”刪除;
[0076]3、后續(xù)任務(wù)逐個提前,結(jié)尾處置NULL (空指針)。
[0077]可選地,本步驟中,若所述任務(wù)調(diào)度索引列表中不存在所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)注冊增加到所述任務(wù)調(diào)度索引列表中,并對全部的子任務(wù)基于各子任務(wù)的索引號進行重新順序排序。以WCDMA系統(tǒng)中的2ms子幀任務(wù)為例,可以設(shè)置下面的添加函數(shù):
[0078]void DEM0_Add_ffcdma2msTask(int SubFrameIndex, void*pFun);
[0079]功能描述:添加2ms周期性任務(wù)
[0080]參數(shù)說明:int SubFrameIndex-----子幀索引:0~4
[0081]void*pFun-----任務(wù)入口(函數(shù)指針)
[0082]實現(xiàn)細(xì)節(jié):1、找到對應(yīng)2ms子幀“任務(wù)調(diào)度索引表”;
[0083]2、添加子任務(wù),把函數(shù)指針添加到“任務(wù)調(diào)度索引表”;
[0084]3、對任務(wù)按照靜態(tài)編譯順序排序。
[0085]優(yōu)選地,所述各子任務(wù)的索引也可以直接使用所述各子任務(wù)的對應(yīng)的函數(shù)入口地址,因為軟件編譯后,每個函數(shù)入口都有一個唯一的入口指針,并且各任務(wù)入口指針不會重復(fù),既滿足了排序需求,同時也滿足了用函數(shù)入口指針做索引的需求。
[0086]步驟505、根據(jù)所述更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)的索引從第一個子任務(wù)開始順序跳轉(zhuǎn)到各子任務(wù)對應(yīng)的函數(shù)入口指針地址處執(zhí)行各子任務(wù)代碼程序;
[0087]步驟506、執(zhí)行的函數(shù)入口指針地址為空;
[0088]判斷順序執(zhí)行的各子任務(wù)對應(yīng)的函數(shù)入口指針地址是否為空,若為空,則說明用戶程序執(zhí)行時調(diào)用的子任務(wù)已經(jīng)執(zhí)行完畢,執(zhí)行步驟507 ;若地址不為空,則繼續(xù)執(zhí)行步驟505。
8CN 103488536 A
書
明
說
6/7頁
[0089]步驟507、退出所述任務(wù)調(diào)度 。
[0090]本實施例,通過確定用戶程序調(diào)用時需要調(diào)度執(zhí)行的子函數(shù),并通過添加和刪除任務(wù)調(diào)度索引列表中的子任務(wù),實現(xiàn)任務(wù)動態(tài)調(diào)度,可增加、刪除任務(wù)。且無需調(diào)用的無用子任務(wù)開銷,降低CPU負(fù)載,減少了對產(chǎn)品硬件的需求,同時也減少了系統(tǒng)功耗。
[0091]實施例3
[0092]圖6為本發(fā)明一種任務(wù)調(diào)度裝置實施例一的結(jié)構(gòu)圖,如圖6所示,該裝置60包括:
[0093]注冊生成模塊61,用于根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;
[0094]確定子任務(wù)模塊62,用于確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0095]更新任務(wù)調(diào)度索引列表模塊63,用于根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);
[0096]調(diào)度執(zhí)行模塊64,用于調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。
[0097]本實施例的裝置,用于執(zhí)行圖2所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0098]實施例4
[0099]圖7為本發(fā)明一種任務(wù)調(diào)度裝置實施例二的結(jié)構(gòu)圖,如圖7所示,該裝置70在上一實施例的基礎(chǔ)上,進一步地,所述調(diào)度執(zhí)行模塊64,具體用于:
[0100]根據(jù)所述更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)的索引從第一個子任務(wù)開始順序跳轉(zhuǎn)到各子任務(wù)對應(yīng)的函數(shù)入口指針地址處執(zhí)行各子任務(wù)代碼程序,若執(zhí)行的函數(shù)入口指針地址為空,則退出所述任務(wù)調(diào)度。
[0101]所述注冊生成模塊61,包括:
[0102]生成索引單元71,用于根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序,生成所述任務(wù)調(diào)度索引列表中的各子任務(wù)的索引號,以使各子任務(wù)的執(zhí)行順序與各子任務(wù)的索引號順
序保持一致;
[0103]生成任務(wù)調(diào)度索引列表單元72,用于依據(jù)所述各子任務(wù)的索引號順序注冊生成任務(wù)調(diào)度索引列表。
[0104]具體地,所述更新任務(wù)調(diào)度索引列表模塊63,具體用于:
[0105]若所述任務(wù)調(diào)度索引列表中存在所述用戶程序調(diào)度所述任務(wù)時不需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)從所述任務(wù)調(diào)度索引列表中刪除,并對其余的全部子任務(wù)基于各子任務(wù)的索引號進行重新順序排序;或,
[0106]若所述任務(wù)調(diào)度索引列表中不存在所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)注冊增加到所述任務(wù)調(diào)度索引列表中,并對全部的子任務(wù)基于各子任務(wù)的索引號進行重新順序排序。
[0107]進一步地,所述各子任務(wù)的索引為所述各子任務(wù)的對應(yīng)的函數(shù)入口地址。
[0108]優(yōu)選地,所述任務(wù)為系統(tǒng)中周期性執(zhí)行的任務(wù)。
[0109]本實施例的裝置,用于執(zhí)行圖5所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)
9效果類似,此處不再贅述。
[0110]實施例5
[0111]圖8為本發(fā)明一種操作系統(tǒng)實施例一的架構(gòu)圖,如圖8所示,該操作系統(tǒng)包括任務(wù)調(diào)度裝置80。
[0112]本實施例中,操作系統(tǒng)可以為Linux, Windows, Solaris和VxWorks等。
[0113]本實施例中的任務(wù)調(diào)度裝置80 可以采用圖6或7中任一個實施例所示的任務(wù)調(diào)度裝置結(jié)構(gòu),其對應(yīng)的可執(zhí)行圖2或5中任一實施例所述的方法。
[0114]圖9為圖8的軟件調(diào)度架構(gòu)圖,如圖9所示,具體解釋說明如下:
[0115]CPU內(nèi)核:軟件指令執(zhí)行的主體;
[0116]雙倍速率同步動態(tài)隨機存儲器(Double Data Rate,簡稱DDR):軟件代碼存貯介質(zhì);類似的存忙介質(zhì)可以擴展到同步動態(tài)隨機存儲器(Synchronous Dynamic RandomAccess Memory,簡稱 SDRAM)、只讀內(nèi)存(Read-Only Memory,簡稱 ROM)等;
[0117]高級高性能總線(Advanced High Performance Bus,簡稱AHB)/高級可擴展接口(Advanced extensible Interface,簡稱AXI) BUS :系統(tǒng)總線,用于鏈接各個模塊保持同步并完成數(shù)據(jù)交互;
[0118]其他模塊:系統(tǒng)運行需要的其他模塊;
[0119]push :系統(tǒng)壓棧,保存系統(tǒng)上下文;
[0120]pop :系統(tǒng)退棧,恢復(fù)系統(tǒng)上下文;
[0121]CPU運行時,需要通過AHB/AXI BUS,從DDR獲取指令(比如push,pop等);指令的條數(shù)決定了 CPU執(zhí)行時間的長短;本發(fā)明實施例,CPU無需完整運行DDR中的所有子任務(wù),只需要運行需要調(diào)度執(zhí)行的子任務(wù)(比如圖9中的taskO、taskl、task2和task3),執(zhí)行完所需的子任務(wù)就可以中途退出,減少了 CPU的無用開銷。
[0122]上述實施例的操作系統(tǒng)可以用于多種應(yīng)用場景,尤其是涉及很多周期性執(zhí)行的任務(wù),比如以全球移動通信系統(tǒng)(global system for mobile communications,簡稱GSM)系統(tǒng)為例,一般都會有協(xié)議層、物理層、底層空口等模塊。對于物理層模塊而言,需要頻繁處理周期性任務(wù):如時隙任務(wù)、測量、解調(diào)、譯碼等任務(wù)。上述列舉的任務(wù)都是周期性可重復(fù)的;以譯碼任務(wù)為例;在不同的業(yè)務(wù)狀態(tài)下,如CS狀態(tài)(語音)、PS狀態(tài)(數(shù)傳)和PCH狀態(tài)(空閑解尋呼);譯碼處理流程不完全相同,需要調(diào)度的任務(wù)也有不同。比如在PCH狀態(tài)下,需要處理的任務(wù)很少,只有TASK_C0M、TASK_A1和TASK_A2 ;而在PS狀態(tài),需要處理的任務(wù)很多,有TASK_C0M、TASK_B1、TASK_B2…TASK_A266。在PCH狀態(tài)向PS狀態(tài)切換時,需要更新“任務(wù)調(diào)度索引列表”,將PS狀態(tài)需要執(zhí)行的任務(wù)掛接上去,把PCH狀態(tài)才執(zhí)行的任務(wù)刪除;對于公共任務(wù)TASK_C0M,則需要保留。
[0123]由于本發(fā)明實施例的操作系統(tǒng)無需執(zhí)行無用的子任務(wù),因此,存在越多周期性執(zhí)行任務(wù)的系統(tǒng)場景,本發(fā)明實施例的操作系統(tǒng)帶來的技術(shù)效果就越大。
[0124]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
10
【權(quán)利要求】
1.一種任務(wù)調(diào)度方法,其特征在于,包括:根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù),包括:根據(jù)所述更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)的索引從第一個子任務(wù)開始順序跳轉(zhuǎn)到各子任務(wù)對應(yīng)的函數(shù)入口指針地址處執(zhí)行各子任務(wù)代碼程序,若執(zhí)行的函數(shù)入口指針地址為空,則退出所述任務(wù)調(diào)度。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,包括:根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序,生成所述任務(wù)調(diào)度索引列表中的各子任務(wù)的索引號,以使各子任務(wù)的執(zhí)行順序與各子任務(wù)的索引號順序保持一致;依據(jù)所述各子任務(wù)的索引號順序注冊生成任務(wù)調(diào)度索引列表。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),包括:若所述任務(wù)調(diào)度索引列表中存在所述用戶程序調(diào)度所述任務(wù)時不需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)從所述任務(wù)調(diào)度索引列表中刪除,并對其余的全部子任務(wù)基于各子任務(wù)的索引號進行重新順序排序;或,若所述任務(wù)調(diào)度索引列表中不存在所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)注冊增加到所述任務(wù)調(diào)度索引列表中,并對全部的子任務(wù)基于各子任務(wù)的索引號進行重新順序排序。
5.根據(jù)權(quán)利要求1-4任一所述的方法,其特征在于,所述各子任務(wù)的索引為所述各子任務(wù)的對應(yīng)的函數(shù)入口地址。
6.根據(jù)權(quán)利要求1-5任一所述的方法,其特征在于,所述任務(wù)為系統(tǒng)中周期性執(zhí)行的任務(wù)。
7.一種任務(wù)調(diào)度裝置,其特征在于,包括:注冊生成模塊,用于根據(jù)任務(wù)中包括的所有子任務(wù),注冊生成任務(wù)調(diào)度索引列表,所述任務(wù)調(diào)度索引列表至少包括各子任務(wù)的索引以及各子任務(wù)對應(yīng)的函數(shù)入口地址指針;確定子任務(wù)模塊,用于確定用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);更新任務(wù)調(diào)度索引列表模塊,用于根據(jù)所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),更新所述任務(wù)調(diào)度索引列表以使所述任務(wù)調(diào)度索引列表只包括所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù);調(diào)度執(zhí)行模塊,用于調(diào)度執(zhí)行更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)以完成所述用戶程序調(diào)度所述任務(wù)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述調(diào)度執(zhí)行模塊,具體用于:根據(jù)所述更新后的任務(wù)調(diào)度索引列表中的各子任務(wù)的索引從第一個子任務(wù)開始順序跳轉(zhuǎn)到各子任務(wù)對應(yīng)的函數(shù) 入口指針地址處執(zhí)行各子任務(wù)代碼程序,若執(zhí)行的函數(shù)入口指針地址為空,則退出所述任務(wù)調(diào)度。
9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述注冊生成模塊,包括:生成索引單元,用于根據(jù)所述任務(wù)中包括的各子任務(wù)的執(zhí)行順序,生成所述任務(wù)調(diào)度索引列表中的各子任務(wù)的索引號,以使各子任務(wù)的執(zhí)行順序與各子任務(wù)的索引號順序保持一致;生成任務(wù)調(diào)度索引列表單元,用于依據(jù)所述各子任務(wù)的索引號順序注冊生成任務(wù)調(diào)度索引列表。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述更新任務(wù)調(diào)度索引列表模塊,具體用于:若所述任務(wù)調(diào)度索引列表中存在所述用戶程序調(diào)度所述任務(wù)時不需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)從所述任務(wù)調(diào)度索引列表中刪除,并對其余的全部子任務(wù)基于各子任務(wù)的索引號進行重新順序排序;或,若所述任務(wù)調(diào)度索引列表中不存在所述用戶程序調(diào)度所述任務(wù)時需要調(diào)度執(zhí)行的子任務(wù),則將所述子任務(wù)注冊增加到所述任務(wù)調(diào)度索引列表中,并對全部的子任務(wù)基于各子任務(wù)的索引號進行重新順序排序。
11.根據(jù)權(quán)利要求7-10任一所述的方法,其特征在于,所述各子任務(wù)的索引為所述各子任務(wù)的對應(yīng)的函數(shù)入口地址。
12.根據(jù)權(quán)利要求7-11任一所述的裝置,其特征在于,所述任務(wù)為系統(tǒng)中周期性執(zhí)行的任務(wù)。
13.一種操作系統(tǒng),其特征在于,包括權(quán)利要求7-12任一所述的一種任務(wù)調(diào)度裝置。
【文檔編號】G06F9/48GK103488536SQ201310454952
【公開日】2014年1月1日 申請日期:2013年9月29日 優(yōu)先權(quán)日:2013年9月29日
【發(fā)明者】金義星, 邵海剛, 郭東風(fēng) 申請人:華為技術(shù)有限公司