本發(fā)明涉及計(jì)算機(jī),特別是一種ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法。
背景技術(shù):
1、在現(xiàn)代計(jì)算系統(tǒng)中,通常ide軟件與runtime之間采用網(wǎng)絡(luò)或者串口,485或者can口進(jìn)行通訊聯(lián)絡(luò),由于ide軟件通常運(yùn)行于windows平臺(tái),而runtime常常運(yùn)行在各類(lèi)arm或單片機(jī)平臺(tái)上,其可用資源相對(duì)較小,運(yùn)行速率相對(duì)偏低,現(xiàn)有通訊方法通常是在兩端進(jìn)行一收一發(fā)并同時(shí)處理的方法,或者采用老式的緩沖區(qū)結(jié)構(gòu),環(huán)形緩沖區(qū)是一個(gè)先進(jìn)先出的閉環(huán)存儲(chǔ)空間,大部分結(jié)構(gòu)為單字節(jié)結(jié)構(gòu),結(jié)構(gòu)簡(jiǎn)單,使用起來(lái)指針在環(huán)形緩沖區(qū)內(nèi)移位,實(shí)現(xiàn)單字節(jié)存取,在高頻及實(shí)時(shí)性要求較高時(shí)常常容易出錯(cuò)及混淆地址。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述現(xiàn)有存在的問(wèn)題,提出了本發(fā)明。
2、因此,本發(fā)明提供了一種ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法解決緩沖區(qū)讀寫(xiě)速度不一致的問(wèn)題。
3、為解決上述技術(shù)問(wèn)題,本發(fā)明提供如下技術(shù)方案:
4、第一方面,本發(fā)明實(shí)施例提供了一種ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法,其包括,根據(jù)系統(tǒng)性能評(píng)估,設(shè)定緩沖區(qū)大小,構(gòu)建兩個(gè)固定大小的上行和下行數(shù)據(jù)傳輸?shù)沫h(huán)形緩沖區(qū);
5、設(shè)置讀指針、寫(xiě)指針和全局變量為初始化,跟蹤緩沖區(qū)中可讀幀的數(shù)量;
6、構(gòu)建寫(xiě)入函數(shù),計(jì)算下一寫(xiě)入位置,根據(jù)實(shí)際數(shù)據(jù)長(zhǎng)度更新總有效長(zhǎng)度,執(zhí)行寫(xiě)入后,遞增全局變量,寫(xiě)指針指向下一個(gè)節(jié)點(diǎn);
7、構(gòu)建讀取函數(shù),采用內(nèi)部變量標(biāo)記讀取狀態(tài),通過(guò)檢查全局變量確認(rèn)有幀可讀,計(jì)算讀取位置;
8、根據(jù)實(shí)際需求,執(zhí)行單次讀取一幀數(shù)據(jù),多次讀取直至一幀數(shù)據(jù)完整,每次讀取后移動(dòng)讀指針;
9、當(dāng)可取幀數(shù)達(dá)到x且保持y毫秒未讀取,自動(dòng)開(kāi)啟幀跳躍,通過(guò)動(dòng)態(tài)數(shù)組記錄需跳過(guò)幀的信息,通過(guò)跳幀算法,定期丟棄幀;
10、根據(jù)單尾鏈架構(gòu),動(dòng)態(tài)調(diào)整內(nèi)存空間,在讀取時(shí),對(duì)成員地址加鎖,實(shí)時(shí)調(diào)整智能跳幀策略。
11、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:根據(jù)系統(tǒng)性能評(píng)估,設(shè)定緩沖區(qū)大小,構(gòu)建兩個(gè)固定大小的上行和下行數(shù)據(jù)傳輸?shù)沫h(huán)形緩沖區(qū),具體操作如下:
12、通過(guò)從系統(tǒng)中收集關(guān)鍵性能指標(biāo),包括cpu處理能力、內(nèi)存大小、磁盤(pán)i/o速度和網(wǎng)絡(luò)傳輸速率,將收集的關(guān)鍵性能指標(biāo)進(jìn)行歸一化處理;
13、基于處理后的關(guān)鍵性能指標(biāo),采用加權(quán)平均法計(jì)算系統(tǒng)綜合性能得分,來(lái)決定緩沖區(qū)大小n;
14、根據(jù)得到的n,構(gòu)建兩個(gè)大小為n+5的上下行環(huán)形緩沖區(qū),將每個(gè)緩沖區(qū)節(jié)點(diǎn)的成員進(jìn)行初始化,并清空數(shù)據(jù)區(qū)。
15、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:設(shè)置讀指針、寫(xiě)指針和全局變量為初始化,跟蹤緩沖區(qū)中可讀幀的數(shù)量,具體操作如下:
16、將讀寫(xiě)指針進(jìn)行初始化,指向各自緩沖區(qū)的第一個(gè)元素,設(shè)置全局變量為緩沖區(qū)中沒(méi)有可讀幀的初始值,追蹤可讀幀的數(shù)量。
17、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:構(gòu)建寫(xiě)入函數(shù),計(jì)算下一寫(xiě)入位置,根據(jù)實(shí)際數(shù)據(jù)長(zhǎng)度更新總有效長(zhǎng)度,執(zhí)行寫(xiě)入后,遞增全局變量,寫(xiě)指針指向下一個(gè)節(jié)點(diǎn),具體操作如下:
18、通過(guò)檢查當(dāng)前緩沖區(qū)是否有足夠的空間寫(xiě)入新的數(shù)據(jù)幀,運(yùn)用寫(xiě)入位置函數(shù),計(jì)算寫(xiě)指針的下一個(gè)寫(xiě)入位置,結(jié)合總有效長(zhǎng)度函數(shù)來(lái)更新指定節(jié)點(diǎn)的總有效長(zhǎng)度;
19、創(chuàng)建鏈表節(jié)點(diǎn),將待寫(xiě)入的一幀數(shù)據(jù)插入到當(dāng)前寫(xiě)指針指向的節(jié)點(diǎn)的數(shù)據(jù)區(qū)尾部;
20、執(zhí)行寫(xiě)入后,調(diào)用寫(xiě)入位置函數(shù)更新寫(xiě)指針位置,調(diào)整緩沖區(qū)中可讀幀的數(shù)量。
21、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:構(gòu)建讀取函數(shù),采用內(nèi)部變量標(biāo)記讀取狀態(tài),通過(guò)檢查全局變量確認(rèn)有幀可讀,計(jì)算讀取位置,具體操作如下:
22、設(shè)置初始化空閑狀態(tài),采用內(nèi)部變量標(biāo)記開(kāi)始讀取狀態(tài)、單次讀取完成狀態(tài)、等待更多讀取狀態(tài);
23、檢查全局變量是否大于初始化值來(lái)確認(rèn)是否有幀可讀,運(yùn)用讀取位置函數(shù),來(lái)確定當(dāng)前讀取位置。
24、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:根據(jù)實(shí)際需求,執(zhí)行單次讀取一幀數(shù)據(jù),多次讀取直至一幀數(shù)據(jù)完整,每次讀取后移動(dòng)讀指針,具體操作如下:
25、運(yùn)用處理幀讀取函數(shù),來(lái)管理單次讀取或多次讀取,當(dāng)一幀數(shù)據(jù)能在一次讀取中完成,則直接讀取并移動(dòng)讀指針,若一幀數(shù)據(jù)需多次讀取,記錄當(dāng)前幀已讀取的字節(jié)數(shù),直到完成一幀的讀??;
26、在成功讀取一幀數(shù)據(jù)后,調(diào)用讀取位置函數(shù)更新讀指針位置,調(diào)整緩沖區(qū)中可讀幀的數(shù)量。
27、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:當(dāng)可取幀數(shù)達(dá)到x且保持y毫秒未讀取,自動(dòng)開(kāi)啟幀跳躍,通過(guò)動(dòng)態(tài)數(shù)組記錄需跳過(guò)幀序號(hào)和幀長(zhǎng)度的信息,通過(guò)跳幀算法,定期丟棄幀,具體操作如下:
28、采用跳幀定時(shí)器,設(shè)置初始化,記錄連續(xù)幀未被讀取的時(shí)間,設(shè)定閾值y毫秒作為判斷標(biāo)準(zhǔn),并設(shè)定監(jiān)測(cè)周期執(zhí)行檢查;
29、通過(guò)獲取當(dāng)前緩沖區(qū)中的可讀幀數(shù),計(jì)算自上次檢查以來(lái)的時(shí)間差,累加到跳幀定時(shí)器上;
30、檢查局部變量是否大于等于x,同時(shí)跳幀定時(shí)器是否大于等于y毫秒,當(dāng)兩個(gè)條件同時(shí)滿(mǎn)足,說(shuō)明緩沖區(qū)飽和,且長(zhǎng)時(shí)間未進(jìn)行有效讀取,此時(shí)應(yīng)啟動(dòng)跳幀機(jī)制;
31、創(chuàng)建動(dòng)態(tài)數(shù)組,記錄需跳過(guò)的幀序號(hào)和幀長(zhǎng)度信息,運(yùn)用心跳幀識(shí)別函數(shù),檢查每一幀,當(dāng)幀的長(zhǎng)度等于預(yù)先設(shè)定的心跳幀長(zhǎng)度,則將其視為心跳幀,并記錄其序號(hào)和長(zhǎng)度到動(dòng)態(tài)數(shù)組中;
32、當(dāng)滿(mǎn)足跳幀條件時(shí),調(diào)用執(zhí)行跳幀函數(shù),根據(jù)動(dòng)態(tài)數(shù)組中記錄的幀序號(hào)和長(zhǎng)度,直接跳過(guò)這些幀,更新讀指針,同時(shí)將全局變量減去跳過(guò)的幀數(shù)。
33、作為本發(fā)明所述ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的一種優(yōu)選方案,其中:根據(jù)單尾鏈架構(gòu),動(dòng)態(tài)調(diào)整內(nèi)存空間,在讀取時(shí),對(duì)成員地址加鎖,實(shí)時(shí)調(diào)整智能跳幀策略,具體操作如下:
34、根據(jù)單尾鏈架構(gòu),采用動(dòng)態(tài)調(diào)整函數(shù),通過(guò)監(jiān)控長(zhǎng)期偏離目標(biāo)使用率,進(jìn)行實(shí)際調(diào)整緩沖區(qū)大小,調(diào)整后,重新初始化緩沖區(qū)和相關(guān)指針;
35、在讀取操作開(kāi)始前選擇互斥鎖,采用鎖機(jī)制函數(shù),鎖定緩沖區(qū)讀指針區(qū)域的寫(xiě)操作不會(huì)同時(shí)進(jìn)行,讀取完成后,立即執(zhí)行釋放鎖,允許其他讀寫(xiě)操作繼續(xù)進(jìn)行;
36、實(shí)時(shí)處理關(guān)鍵數(shù)據(jù),采用跳幀策略函數(shù),決定是否跳過(guò)當(dāng)前幀,基于計(jì)算結(jié)果跳幀指數(shù)j,將其轉(zhuǎn)換為跳幀概率psk;
37、在寫(xiě)入數(shù)據(jù)前,生成一個(gè)隨機(jī)數(shù)r,當(dāng)r小于psk,則執(zhí)行跳幀操作,否則,繼續(xù)按常規(guī)流程處理;
38、每次跳幀后,實(shí)時(shí)更新系統(tǒng)相關(guān)的參數(shù)并監(jiān)測(cè)系統(tǒng)性能指標(biāo),基于系統(tǒng)負(fù)載變化,調(diào)整策略參數(shù)。
39、第二方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,其中:所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如本發(fā)明第一方面所述的ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的任一步驟。
40、第三方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其中:所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如本發(fā)明第一方面所述的ide與runtime通訊結(jié)構(gòu)與讀寫(xiě)方法的任一步驟。
41、本發(fā)明有益效果為:通過(guò)系統(tǒng)性能評(píng)估動(dòng)態(tài)設(shè)定緩沖區(qū)大小,確保數(shù)據(jù)傳輸效率與系統(tǒng)資源匹配,提高響應(yīng)速度和穩(wěn)定性;初始化讀寫(xiě)指針與全局變量,精簡(jiǎn)數(shù)據(jù)傳輸邏輯,減少錯(cuò)誤,提升準(zhǔn)確性和效率;構(gòu)建寫(xiě)入函數(shù),優(yōu)化數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),減少內(nèi)存占用,增強(qiáng)數(shù)據(jù)處理能力;構(gòu)建讀取函數(shù),采用智能讀取機(jī)制,減少無(wú)效讀取,提高數(shù)據(jù)讀取效率和準(zhǔn)確性;實(shí)施智能跳幀策略,應(yīng)對(duì)高負(fù)載,防止數(shù)據(jù)積壓,提升系統(tǒng)吞吐量和性能;整體而言,本發(fā)明通過(guò)自適應(yīng)調(diào)整、精細(xì)管理和智能策略,顯著提升了ide與runtime間通訊的效率、穩(wěn)定性和資源利用效率,適用于各種復(fù)雜應(yīng)用場(chǎng)景,大幅改善了數(shù)據(jù)傳輸質(zhì)量和系統(tǒng)性能。