[發(fā)明專利]一種基于多核平臺的多任務(wù)開發(fā)模型及其方法有效
| 申請?zhí)枺?/td> | 201811080482.0 | 申請日: | 2018-09-17 |
| 公開(公告)號: | CN109189580B | 公開(公告)日: | 2021-06-29 |
| 發(fā)明(設(shè)計)人: | 羅佳;許澤文 | 申請(專利權(quán))人: | 武漢虹旭信息技術(shù)有限責(zé)任公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F9/54 |
| 代理公司: | 武漢宇晨專利事務(wù)所(普通合伙) 42001 | 代理人: | 黃瑞棠 |
| 地址: | 430205 湖北省武漢市江*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 多核 平臺 任務(wù) 開發(fā) 模型 及其 方法 | ||
1.一種基于多核平臺的多任務(wù)開發(fā)模型,
多任務(wù)開發(fā)模型包括任務(wù)管理模塊(10)、消息管理模塊(20)、內(nèi)存管理模塊(30)、定時器管理模塊(40)和業(yè)務(wù)層(50);
其交互關(guān)系是:
任務(wù)管理模塊(10)分別與消息管理模塊(20)、內(nèi)存管理模塊(30)和業(yè)務(wù)層(50)交互;
任務(wù)管理模塊(10)、定時器管理模塊(40)和消息管理模塊(20)依次循環(huán)交互;
所述的任務(wù)管理模塊(10)的工作流程如下:
a、開始(100)
開始啟動任務(wù)管理模塊(10)時,需提前進(jìn)行靜態(tài)任務(wù)的注冊和基本的初始化工作,該部分由業(yè)務(wù)層(50)完成;
b、整合業(yè)務(wù)層靜態(tài)任務(wù)(101)
業(yè)務(wù)層50根據(jù)任務(wù)管理模塊(10)提供的任務(wù)注冊接口提交任務(wù),任務(wù)管理模塊(10)根據(jù)給定的參數(shù)進(jìn)行分類梳理;
c、生產(chǎn)線初始化(102)
任務(wù)管理模塊(10)根據(jù)整體的任務(wù)規(guī)劃,確定各個生產(chǎn)線的多種重要屬性:所掛載的任務(wù)數(shù)、任務(wù)入口、生產(chǎn)線條數(shù)和生產(chǎn)線CPU親和性,完成生產(chǎn)線消息隊列的初始化;所述的生產(chǎn)線指線程;
d、生產(chǎn)線執(zhí)行(103)
開啟生產(chǎn)線,從自身消息隊列中獲取消息提供各個任務(wù)進(jìn)行消費(fèi),消息類型分為基礎(chǔ)消息類型和業(yè)務(wù)層(50)自定義消息類型,前者用于任務(wù)狀態(tài)的管理,后者由業(yè)務(wù)層自定義;
e、監(jiān)聽業(yè)務(wù)層動態(tài)任務(wù)(104)
業(yè)務(wù)層(50)存在提交臨時任務(wù)的可能,任務(wù)管理模塊(10)提供接收該類任務(wù)的機(jī)制;
所述的消息管理模塊(20)的工作流程如下:
A、接收業(yè)務(wù)層發(fā)消息指令(200)
業(yè)務(wù)層任務(wù)之間通過消息交互,各生產(chǎn)線維護(hù)自身的消息鏈;
B、獲取發(fā)消息資源鎖(201)
多個任務(wù)可以同時向某個任務(wù)發(fā)送消息申請,但只有在獲得權(quán)限后才能繼續(xù)執(zhí)行,未獲得權(quán)限的任務(wù)阻塞;
C、消息預(yù)備容器裝載消息(202)
預(yù)備容器存儲最新接收的消息,其容量可配置設(shè)定;
D、判斷檢查消息預(yù)備容器是否已滿(203)
否則,釋放發(fā)消息資源鎖(204),即當(dāng)前獲得資源鎖的任務(wù)將權(quán)限轉(zhuǎn)讓給其他消息發(fā)送方,再跳轉(zhuǎn)到步驟A;
是則,依次為:
消息預(yù)備容器轉(zhuǎn)變?yōu)橄M(fèi)容器(205),即預(yù)備容器已滿時轉(zhuǎn)變?nèi)萜鲗傩詾橄M(fèi)屬性,該類消息急需處理;
生產(chǎn)線接收消費(fèi)消息(206),即生產(chǎn)線從消費(fèi)容器中批量接收消息,同時將消費(fèi)容器改為預(yù)備屬性;
根據(jù)消息類型選擇任務(wù)消費(fèi)消息(207),即生產(chǎn)線根據(jù)消息的類型選擇相應(yīng)的任務(wù)進(jìn)行處理;
所述的內(nèi)存管理模塊(30)的工作流程如下:
Ⅰ、讀取內(nèi)存配置(300)
從配置文件中讀取各級內(nèi)存池的大小、頁面數(shù)、安全間隔、安全檢測策略和拓展策略;
Ⅱ、內(nèi)存池初始化(301)
根據(jù)確定的內(nèi)存管理參數(shù),創(chuàng)建各級內(nèi)存池;
Ⅲ、內(nèi)存操作申請(302)
接收業(yè)務(wù)層(50)的內(nèi)存資源申請,提供內(nèi)存資源和回收內(nèi)存資源,業(yè)務(wù)層(50)中多任務(wù)可以同時提交申請;
分別為分配內(nèi)存和釋放內(nèi)存,并行執(zhí)行;
其一、分配內(nèi)存
子步驟A、確定內(nèi)存池級別(303),即根據(jù)業(yè)務(wù)層申請的內(nèi)存大小確定目標(biāo)內(nèi)存池;
Ⅳ、獲取目標(biāo)內(nèi)存池權(quán)限(305),即同一內(nèi)存池,同一時刻只能有一個任務(wù)獲取到內(nèi)存池操作權(quán)限,不同的內(nèi)存池之間可并行進(jìn)行;
子步驟(B)、判斷內(nèi)存池資源檢查是否存在資源(306),是則進(jìn)入子步驟D,否則進(jìn)入子步驟C;
子步驟C、內(nèi)存池拓展(307);
子步驟D、分配內(nèi)存(308);
Ⅴ、釋放內(nèi)存池權(quán)限(310),即解除對內(nèi)存池的鎖定狀態(tài),便于其他內(nèi)存申請操作執(zhí)行;再跳轉(zhuǎn)到步驟Ⅲ;
其二、釋放內(nèi)存
子步驟a、安全檢查(304),即業(yè)務(wù)層釋放內(nèi)存資源時,對內(nèi)存塊進(jìn)行檢查是否存在異常操作;
Ⅳ、獲取目標(biāo)內(nèi)存池權(quán)限(305),即同一內(nèi)存池,同一時刻只能有一個任務(wù)獲取到內(nèi)存池操作權(quán)限,不同的內(nèi)存池之間可并行進(jìn)行;
子步驟b、回收內(nèi)存(309),即將內(nèi)存資源釋放到內(nèi)存池中;
Ⅴ、釋放內(nèi)存池權(quán)限(310),即解除對內(nèi)存池的鎖定狀態(tài),便于其他內(nèi)存申請操作執(zhí)行;再跳轉(zhuǎn)到步驟Ⅲ;
所述的定時器管理模塊(40)的工作流程如下:
ⅰ、定時器模塊初始化(400)
以模型定時器為基礎(chǔ)創(chuàng)建用戶層時鐘,初始化定時器管理模塊,根據(jù)定時器超時長度進(jìn)行多級別管理,每個級別相鄰節(jié)點間的時間跨度不一樣,最低級節(jié)點時間跨度為1s;
ⅱ、分別為:
或定時器申請(401),即接受業(yè)務(wù)層的定時器申請;
創(chuàng)建定時器(402),即根據(jù)業(yè)務(wù)層申請的超時長度,創(chuàng)建定時器并根據(jù)當(dāng)前的運(yùn)行時間掛載到相應(yīng)的定時器鏈表中,再繼續(xù)定時器申請(401);
或掃描定時器(403),即根據(jù)用戶面時鐘,對最低級定時器當(dāng)前節(jié)點的定時器鏈進(jìn)行逐個掃描,掃描完畢,高級的定時器隨著時間的變遷,剩余超時時間逐漸減少,需將更高級的定時器調(diào)整到低級定時器鏈表中,并開始對最低級定時器開始新一輪掃描;
創(chuàng)建超時消息(404),即最低級定時器鏈表中,被掃描到定時器均為超時定時器,創(chuàng)建業(yè)務(wù)層的超時消息發(fā)送到目標(biāo)任務(wù)的消息隊列中,隨即進(jìn)入接收業(yè)務(wù)層發(fā)消息指令(200)過程中;再繼續(xù)掃描定時器(403);
所述的業(yè)務(wù)層(50)的工作流程如下:
α、初始化(500)
業(yè)務(wù)層為該模型中自主性最大的模塊,用戶根據(jù)自身業(yè)務(wù)需求制定初始化流程,其中固定部分為通過任務(wù)管理模塊提供的接口執(zhí)行讀取內(nèi)存配置(300)、內(nèi)存池初始化(301)及定時器模塊初始化(400);
β、任務(wù)注冊(501)
業(yè)務(wù)層根據(jù)自身的需求制定不同的任務(wù),并調(diào)用任務(wù)管理模塊提供的接口進(jìn)行任務(wù)注冊,隨即任務(wù)管理模塊通過整合業(yè)務(wù)層靜態(tài)任務(wù)(101)和監(jiān)聽業(yè)務(wù)層動態(tài)任務(wù)(104)過程接受業(yè)務(wù)層任務(wù);
γ、業(yè)務(wù)層執(zhí)行(502)
業(yè)務(wù)層根據(jù)自身業(yè)務(wù)需求開展業(yè)務(wù),具體業(yè)務(wù)可由各個任務(wù)項完成。
2.基于權(quán)利要求1所述開發(fā)模型的開發(fā)方法,其特征在于:
①業(yè)務(wù)層(50)通過任務(wù)管理模塊(10)提供的接口,對內(nèi)存管理模塊(30)和定時器管理模塊(40)進(jìn)行初始化,即內(nèi)存池集合的創(chuàng)建以及定時器管理結(jié)構(gòu)的初始化;
同時,業(yè)務(wù)層(50)根據(jù)開發(fā)需求制定任務(wù)塊,并在任務(wù)管理模塊(10)中進(jìn)行注冊,任務(wù)注冊時需指定待掛載的生產(chǎn)線及用于生產(chǎn)線綁定的CPU邏輯核編號;
②任務(wù)管理模塊(10)對所有的生產(chǎn)線進(jìn)行初始化,同時利用消息管理模塊(20)為生產(chǎn)線創(chuàng)建獨立的消息隊列資源;隨后啟動所有的生產(chǎn)線,從消息隊列獲取消費(fèi)消息供任務(wù)消費(fèi),同時根據(jù)配置保證每條生產(chǎn)線在獨立的邏輯核上運(yùn)行;
③消息管理模塊(20)對任務(wù)之間的交互進(jìn)行管理,任務(wù)之間均可以通過消息管理模塊(20)進(jìn)行消息的發(fā)送,發(fā)送的消息將首先裝載到目標(biāo)任務(wù)的預(yù)備消息容器中,預(yù)備容器已滿的情況下轉(zhuǎn)變屬性為消費(fèi)容器,從而經(jīng)步驟②中的生產(chǎn)線進(jìn)行消費(fèi);
不同生產(chǎn)線消費(fèi)自身消息時可以并行執(zhí)行,但向某個任務(wù)發(fā)送消息時,只能有一個任務(wù)獲取發(fā)送權(quán)限,其他任務(wù)阻塞;
④內(nèi)存管理模塊(30)通過不同大小的內(nèi)存池集合,為生產(chǎn)線上的所有任務(wù)提供內(nèi)存資源;指定大小的內(nèi)存池,在同一時間只能有一個任務(wù)獲得其權(quán)限,對其進(jìn)行操作,其他任務(wù)阻塞;對于不同的內(nèi)存集合之間,則可以并行操作;
⑤定時器管理模塊(40)通過任務(wù)管理模塊(10),為所有任務(wù)提供定時器創(chuàng)建接口,并對定時器進(jìn)行分級管理,循環(huán)掃描,高級向低級不斷遷移的方式,及時地產(chǎn)生超時消息,通過步驟③提供給步驟②進(jìn)行消費(fèi)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于武漢虹旭信息技術(shù)有限責(zé)任公司,未經(jīng)武漢虹旭信息技術(shù)有限責(zé)任公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811080482.0/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 任務(wù)協(xié)作裝置及方法
- 用于量化任務(wù)價值的任務(wù)管理方法及裝置
- 用于運(yùn)行任務(wù)的系統(tǒng)、方法和裝置
- 一種分布式任務(wù)調(diào)度系統(tǒng)及方法
- 任務(wù)信息處理方法
- 一種同步任務(wù)異步執(zhí)行的方法和調(diào)度系統(tǒng)
- 數(shù)據(jù)處理方法、裝置、電子設(shè)備及計算機(jī)可讀介質(zhì)
- 一種自動分配和推送的任務(wù)管理平臺及方法
- 程序執(zhí)行控制的裝置及方法、終端和存儲介質(zhì)
- 基于會話的任務(wù)待辦方法、系統(tǒng)、電子設(shè)備及存儲介質(zhì)





