国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫裝置、方法、電子設(shè)備及介質(zhì)與流程

      文檔序號:40394009發(fā)布日期:2024-12-20 12:17閱讀:2來源:國知局
      動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫裝置、方法、電子設(shè)備及介質(zhì)與流程

      本公開涉及數(shù)據(jù)讀寫,特別是涉及一種動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫裝置、方法、電子設(shè)備及介質(zhì)。


      背景技術(shù):

      1、環(huán)形緩存區(qū)域是嵌入式系統(tǒng)中十分重要的一種數(shù)據(jù)結(jié)構(gòu),它是一種具有固定大小的緩沖區(qū)。環(huán)形緩存區(qū)域的存儲(chǔ)區(qū)域是一段線性的內(nèi)存,通過軟件將這段內(nèi)存處理成邏輯上首尾相連的環(huán)形的存儲(chǔ)區(qū)域。當(dāng)需要存儲(chǔ)數(shù)據(jù)或者讀取數(shù)據(jù)的時(shí)候,每次都需要通過軟件的方式判斷數(shù)據(jù)是否已經(jīng)到達(dá)線性內(nèi)存的尾部,當(dāng)?shù)竭_(dá)線性內(nèi)存的尾部以后再將數(shù)據(jù)回滾到線性內(nèi)存的頭部。

      2、相關(guān)技術(shù)中,對于環(huán)形緩存區(qū)域需要提前分配固定大小的存儲(chǔ)空間,然而,申請過大浪費(fèi)存儲(chǔ)空間,申請過小緩存區(qū)不夠用且導(dǎo)致數(shù)據(jù)溢出程序出錯(cuò),分配存儲(chǔ)空間完全根據(jù)經(jīng)驗(yàn),沒有固定的方法。


      技術(shù)實(shí)現(xiàn)思路

      1、為克服相關(guān)技術(shù)中存在的問題,本公開提供一種動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫裝置、方法、電子設(shè)備及介質(zhì)。本公開的技術(shù)方案如下:

      2、根據(jù)本公開實(shí)施例的第一方面,提供一種動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫裝置,包括:

      3、環(huán)形緩存區(qū)域,包括多個(gè)塊地址組成的虛擬地址;

      4、內(nèi)存文件,與所述環(huán)形緩存區(qū)域關(guān)聯(lián),用于存儲(chǔ)寫入到塊地址的數(shù)據(jù);

      5、異常處理函數(shù),用于設(shè)置所述多個(gè)塊地址的塊屬性,所述塊屬性包括:寫模式、讀模式和不可讀寫模式;

      6、在進(jìn)行數(shù)據(jù)讀寫時(shí),按照塊地址的塊屬性,執(zhí)行數(shù)據(jù)讀取操作;或,從所述內(nèi)存文件中確定塊地址映射的頁文件,執(zhí)行數(shù)據(jù)寫入操作。

      7、可選地,包括:

      8、所述異常處理函數(shù),還用于在所述數(shù)據(jù)寫入操作的寫入地址超過了所述塊地址的情況下,從所述內(nèi)存文件中確定下一個(gè)塊地址映射的頁文件,將所述塊地址的塊屬性修改為讀模式;并將所述下一個(gè)塊地址的塊屬性修改為寫模式;

      9、所述異常處理函數(shù),還用于在所述數(shù)據(jù)讀取操作讀取塊屬性為寫模式的塊地址的情況下,確定所述數(shù)據(jù)讀取操作的讀取長度信息,判斷是否改變所述塊地址的塊屬性。

      10、可選地,還包括:

      11、讀指針,用于指向所述環(huán)形緩存區(qū)域?qū)?yīng)的虛擬地址中可讀的數(shù)據(jù)位置;

      12、寫指針,用于指向所述環(huán)形緩存區(qū)域?qū)?yīng)的虛擬地址中可寫的數(shù)據(jù)位置;

      13、通過移動(dòng)所述寫指針將數(shù)據(jù)存儲(chǔ)到所述環(huán)形緩存區(qū)域?qū)?yīng)的虛擬地址等待被讀?。煌ㄟ^移動(dòng)所述讀指針將數(shù)據(jù)讀出所述環(huán)形緩存區(qū)域?qū)?yīng)的虛擬地址并釋放所述環(huán)形緩存區(qū)域。

      14、可選地,包括:

      15、所述異常處理函數(shù),還用于在所述讀指針處于所述虛擬地址的最末端的情況下,和/或,所述寫指針處于所述虛擬地址的最末端的情況下,將對應(yīng)的指針回滾到虛擬地址的起始;所述虛擬地址的起始表征:組成所述虛擬地址的第一個(gè)塊地址的起始。

      16、根據(jù)本公開實(shí)施例的第二方面,提供一種動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫方法,包括:

      17、獲取數(shù)據(jù)狀態(tài),所述數(shù)據(jù)狀態(tài)包括:讀數(shù)據(jù)和寫數(shù)據(jù);

      18、在所述數(shù)據(jù)狀態(tài)為讀數(shù)據(jù)的情況下,按照塊地址的塊屬性,執(zhí)行數(shù)據(jù)讀取操作;

      19、在所述數(shù)據(jù)狀態(tài)為寫數(shù)據(jù)的情況下,從內(nèi)存文件中確定塊地址映射的頁文件,執(zhí)行數(shù)據(jù)寫入操作。

      20、可選地,所述塊屬性包括寫模式、讀模式和不可讀寫模式,在所述數(shù)據(jù)狀態(tài)為讀數(shù)據(jù)的情況下,按照塊地址的塊屬性,執(zhí)行數(shù)據(jù)讀取操作,包括:

      21、在所述數(shù)據(jù)讀取操作讀取所述塊屬性為讀模式的塊地址的情況下,直接對所述塊地址中的數(shù)據(jù)進(jìn)行讀??;

      22、在所述數(shù)據(jù)讀取操作讀取所述塊屬性為寫模式的塊地址的情況下,確定所述數(shù)據(jù)讀取操作的讀取長度信息;根據(jù)所述讀取長度信息,確定所述數(shù)據(jù)讀取操作的執(zhí)行動(dòng)作。

      23、可選地,所述根據(jù)所述讀取長度信息,確定所述數(shù)據(jù)讀取操作的執(zhí)行動(dòng)作,包括:

      24、在所述數(shù)據(jù)讀取操作的讀取長度信息小于所述塊地址中的數(shù)據(jù)長度的情況下,將所述塊地址的塊屬性修改為讀模式;從所述塊地址中讀取數(shù)據(jù);在所述數(shù)據(jù)讀取操作執(zhí)行完成之后,將所述塊地址的塊屬性修改回寫模式;

      25、在所述數(shù)據(jù)讀取操作的讀取長度大于所述塊地址中的數(shù)據(jù)長度的情況下,取消對所述塊地址的數(shù)據(jù)讀取操作。

      26、可選地,在所述數(shù)據(jù)讀取操作的讀取長度大于所述塊地址中的數(shù)據(jù)長度的情況下,還包括:

      27、使所述數(shù)據(jù)讀取操作處于等待狀態(tài);

      28、在所述塊地址中的數(shù)據(jù)長度大于所述數(shù)據(jù)讀取操作的讀取長度的情況下,喚醒所述數(shù)據(jù)讀取操作,并將所述塊地址的塊屬性修改為讀模式,所述數(shù)據(jù)讀取操作從所述塊地址中讀取數(shù)據(jù);在數(shù)據(jù)讀取完成之后,將所述塊地址的塊屬性修改回寫模式。

      29、可選地,對所述塊地址中的數(shù)據(jù)進(jìn)行讀取,還包括:

      30、在所述數(shù)據(jù)讀取操作讀取到所述塊地址的最末端的情況下,釋放所述塊地址映射的頁文件。

      31、可選地,按照所述塊地址的順序依次執(zhí)行所述數(shù)據(jù)寫入操作,在所述數(shù)據(jù)狀態(tài)為寫數(shù)據(jù)的情況下,從所述內(nèi)存文件中確定塊地址映射的頁文件,包括:

      32、將當(dāng)前執(zhí)行數(shù)據(jù)寫入操作的塊地址確定為第一塊地址,在所述第一塊地址未映射頁文件的情況下,從所述內(nèi)存文件中確定所述第一塊地址映射的頁文件;將所述第一塊地址的塊屬性確定為寫模式;所述寫模式表征:所述塊地址只允許數(shù)據(jù)寫入,且所述塊地址未寫滿;

      33、對所述第一塊地址執(zhí)行數(shù)據(jù)寫入操作;

      34、在所述數(shù)據(jù)寫入操作的寫入地址超過了所述第一塊地址的情況下,將與所述第一塊地址相鄰的下一個(gè)塊地址確定為第二塊地址,從所述內(nèi)存文件中確定所述第二塊地址映射的頁文件;將所述第二塊地址的塊屬性確定為寫模式,并將所述第一塊地址的塊屬性確定為讀模式;所述讀模式表征:所述塊地址已寫滿,允許數(shù)據(jù)讀取操作;

      35、對第二塊地址執(zhí)行數(shù)據(jù)寫入操作。

      36、可選地,各個(gè)塊地址按地址順序組成虛擬地址,還包括:

      37、在所述數(shù)據(jù)讀取操作讀取到所述虛擬地址的最末端的情況下,或,在所述數(shù)據(jù)寫入操作寫入到所述虛擬地址的最末端的情況下,將地址回滾到所述虛擬地址的起始,從所述虛擬地址中的第一個(gè)所述塊地址的起始開始執(zhí)行數(shù)據(jù)寫入操作或數(shù)據(jù)讀取操作。

      38、根據(jù)本公開實(shí)施例的第三方面,提供一種電子設(shè)備,包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被所述處理器執(zhí)行時(shí),實(shí)現(xiàn)如第二方面中所述的動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫方法的步驟。

      39、根據(jù)本公開實(shí)施例的第四方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如第二方面中所述的動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫方法的步驟。

      40、根據(jù)本公開實(shí)施例的第五方面,提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)第二方面所述的動(dòng)態(tài)高效緩沖區(qū)的數(shù)據(jù)讀寫方法的步驟。

      41、本公開將多個(gè)塊地址組成的虛擬地址作為環(huán)形緩存區(qū)域,通過設(shè)置塊地址的塊屬性,以根據(jù)數(shù)據(jù)的實(shí)際需求和狀態(tài)靈活地處理數(shù)據(jù)讀寫操作,按照塊地址的塊屬性,執(zhí)行對應(yīng)的數(shù)據(jù)讀取操作或者數(shù)據(jù)寫入操作,無需每一次都判斷數(shù)據(jù)是否到達(dá)環(huán)形緩存區(qū)域的尾部;通過將環(huán)形緩存區(qū)域確定為一個(gè)虛擬地址,并將虛擬地址與內(nèi)存文件進(jìn)行關(guān)聯(lián),在執(zhí)行數(shù)據(jù)寫入操作的時(shí)候,從內(nèi)存文件中確定一個(gè)頁文件與塊地址進(jìn)行映射,可以有效利用內(nèi)存空間;通過異常處理函數(shù)來改變塊地址的塊屬性,實(shí)現(xiàn)對塊地址讀取狀態(tài)的管理,不用考慮讀寫回滾問題,使主程序不用處理額外的讀寫邏輯。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1