两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法

文檔序號:8223304閱讀:643來源:國知局
一種基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的迅速發(fā)展,存儲技術(shù)及各種存儲系統(tǒng)也得到了飛速發(fā)展,這些存儲系統(tǒng)為大量的互聯(lián)網(wǎng)信息及多媒體數(shù)據(jù)信息提供了方便、快速、高效的存儲及訪問服務(wù)。
[0003]嵌入式系統(tǒng)是一種完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計的專用計算機系統(tǒng),嵌入式系統(tǒng)資源有限,結(jié)構(gòu)簡單,鑒于其特殊性和專用性,很少在嵌入式系統(tǒng)中采用通用的操作系統(tǒng)和文件系統(tǒng),而是針對特定應(yīng)用場景為嵌入式系統(tǒng)定制文件系統(tǒng)??汕度胧较到y(tǒng)的應(yīng)用范圍非常廣泛,不可能有一種文件系統(tǒng)在所有嵌入式系統(tǒng)中一統(tǒng)天下,適用于大到嵌入式服務(wù)器,小到嵌入式機頂盒的所有情況,而是根據(jù)系統(tǒng)應(yīng)用環(huán)境和目標等來選擇構(gòu)建合適的文件系統(tǒng)。
[0004]文件系統(tǒng)寫入數(shù)據(jù)的速率一方面取決于底層寫接口的1性能,另一方面取決于文件系統(tǒng)自身的緩存策略和內(nèi)部機制,而文件系統(tǒng)寫入數(shù)據(jù)的并發(fā)能力則與其調(diào)度機制有關(guān)。
[0005]現(xiàn)有技術(shù)中,用戶調(diào)用通用文件系統(tǒng)的1接口寫入數(shù)據(jù),而寫入過程中文件系統(tǒng)的緩存策略和調(diào)度機制用戶無從知曉也不可控制,而文件系統(tǒng)寫入數(shù)據(jù)時往往并沒有充分利用硬件資源,從而導(dǎo)致了數(shù)據(jù)寫入磁盤的效率和吞吐不夠高、并發(fā)性能不夠強的問題。

【發(fā)明內(nèi)容】

[0006]本發(fā)明實施例提供了一種基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法,以解決現(xiàn)有技術(shù)中存在的數(shù)據(jù)寫入效率低下、吞吐和并發(fā)性能不夠高的問題。
[0007]為了實現(xiàn)上述目的,本申請實施例提供了一種基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法,所述方法包括:
[0008]接收待寫入磁盤的流式數(shù)據(jù);
[0009]將接收的流式數(shù)據(jù)以鏈表結(jié)構(gòu)進行組織,并將所述流式數(shù)據(jù)緩存于存儲區(qū),當緩存的流式數(shù)據(jù)的長度達到設(shè)定的閾值時,觸發(fā)將緩存的流式數(shù)據(jù)寫入磁盤的寫操作;
[0010]從緩存中分離流式數(shù)據(jù):
[0011]查詢所述文件的元數(shù)據(jù),獲取存儲文件內(nèi)容的磁盤位置信息,根據(jù)所述磁盤位置信息,計算本次欲寫入磁盤的流式數(shù)據(jù)長度,所述長度須為磁盤扇區(qū)大小的整數(shù)倍,且對應(yīng)區(qū)段的數(shù)據(jù)在物理上和邏輯上均保持連續(xù);
[0012]從緩存中取出所述長度的流式數(shù)據(jù),取出數(shù)據(jù)的操作實則從緩存數(shù)據(jù)的鏈表中分離出一個所述長度的子鏈表:根據(jù)所述長度找到分離節(jié)點,從所述分離節(jié)點處截取流式數(shù)據(jù),分離后的子鏈表對應(yīng)的數(shù)據(jù)長度應(yīng)與本次欲寫入磁盤的流式數(shù)據(jù)長度相等;
[0013]將分離出的流式數(shù)據(jù)寫入磁盤;
[0014]調(diào)用下層寫接口將分離出的流式數(shù)據(jù)寫入磁盤,寫入數(shù)據(jù)時采用異步非阻塞模式,而非阻塞在將數(shù)據(jù)寫入磁盤的過程中,待文件系統(tǒng)收到數(shù)據(jù)寫入磁盤成功的消息后,嘗試觸發(fā)下一次寫操作。
[0015]優(yōu)選地,所述接收待寫入磁盤的流式數(shù)據(jù)之前,所述方法還包括:
[0016]接收到一個新的流式數(shù)據(jù)寫入請求后,判斷系統(tǒng)中是否存在所述文件;
[0017]如果不存在,則需要請求方手動建立所述文件;
[0018]如果存在,則為所述請求新建一個寫任務(wù),獲取所述文件的元數(shù)據(jù),并為所述任務(wù)分配存儲空間。
[0019]優(yōu)選地,所述寫請求的參數(shù)包括文件名、寫入文件的起始偏移和寫入文件的結(jié)束偏移。
[0020]優(yōu)選地,所述方法還包括:
[0021]為所述寫請求建立寫任務(wù),為所述寫任務(wù)分配任務(wù)空間,將所述文件名的哈希值、待寫入數(shù)據(jù)的起始偏移和待寫入數(shù)據(jù)的結(jié)束偏移存入所述任務(wù)空間。
[0022]優(yōu)選地,所述方法還包括對任務(wù)進行預(yù)處理:
[0023]如果所述待寫入流式數(shù)據(jù)的起始偏移對應(yīng)于磁盤扇區(qū)(頭扇區(qū))中的位置不在扇區(qū)頭,則從磁盤中讀出頭扇區(qū)數(shù)據(jù)并緩存;如果所述待寫入流式數(shù)據(jù)的結(jié)束偏移對應(yīng)于磁盤扇區(qū)(尾扇區(qū))中的位置不在扇區(qū)尾,則從磁盤中讀出尾扇區(qū)數(shù)據(jù)并緩存。
[0024]優(yōu)選地,將分離出的流式數(shù)據(jù)寫入磁盤,所述方法還包括:
[0025]計算當前寫操作對應(yīng)的起始偏移和結(jié)束偏移;
[0026]如果所述當前寫操作對應(yīng)的起始偏移等于寫任務(wù)的起始偏移,則所述當前寫操作為第一次寫操作;如果所述當前寫操作對應(yīng)的結(jié)束偏移等于寫任務(wù)的結(jié)束偏移,則當前寫操作為最后一次寫操作。
[0027]優(yōu)選地,執(zhí)行第一次寫操作時,所述方法還包括:
[0028]當?shù)谝淮螌懖僮鲗?yīng)的起始偏移對應(yīng)于磁盤扇區(qū)中的位置不為扇區(qū)頭時,則將第一次寫操作對應(yīng)的起始偏移與扇區(qū)頭對齊,并利用緩存的頭扇區(qū)數(shù)據(jù)填充第一次寫操作中擴充的數(shù)據(jù)。
[0029]優(yōu)選地,執(zhí)行最后一次寫操作時,所述方法還包括:
[0030]當最后一次寫操作對應(yīng)的結(jié)束偏移對應(yīng)于磁盤扇區(qū)中的位置不為扇區(qū)尾時,則將最后一次寫操作對應(yīng)的結(jié)束偏移與扇區(qū)尾對齊,并利用緩存的尾扇區(qū)數(shù)據(jù)填充最后一次寫操作擴充的數(shù)據(jù)。
[0031]優(yōu)選地,執(zhí)行寫操作時,從緩存的流式數(shù)據(jù)中取出指定長度的待寫數(shù)據(jù),具體包括:
[0032]根據(jù)當次寫操作欲寫入磁盤的數(shù)據(jù)長度,找到分離節(jié)點,將緩存流式數(shù)據(jù)的鏈表從分離節(jié)點后截斷,復(fù)制所述分離點,將復(fù)制的分離點作為剩余鏈表的頭結(jié)點,調(diào)整原始分離節(jié)點和復(fù)制分離點中的數(shù)據(jù)起始偏移和數(shù)據(jù)長度。
[0033]優(yōu)選地,文件系統(tǒng)收到上一批數(shù)據(jù)寫入磁盤成功的消息后,所述方法還包括:
[0034]寫操作既可在緩存的數(shù)據(jù)量達到設(shè)定閾值時被觸發(fā),也可由數(shù)據(jù)寫入磁盤成功的消息觸發(fā),兩種觸發(fā)方式通過任務(wù)鎖進行互斥,確保同一時間只有一個寫任務(wù)被觸發(fā);
[0035]當文件系統(tǒng)收到上一批數(shù)據(jù)寫入磁盤成功的消息后,嘗試觸發(fā)下一次寫操作,若任務(wù)鎖尚未被搶占,則下一次寫任務(wù)觸發(fā)成功;否則,觸發(fā)失敗。
[0036]本發(fā)明實施例提供的基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法,將接收的流式數(shù)據(jù)以鏈表結(jié)構(gòu)進行組織,且每次寫入磁盤的流式數(shù)據(jù)為一段邏輯和物理上均連續(xù)的數(shù)據(jù),確保了流式數(shù)據(jù)寫入的時序正常,寫入流式數(shù)據(jù)時采用異步1機制,還支持多核協(xié)作,提高了流式數(shù)據(jù)寫入的效率。寫入流式數(shù)據(jù)成功后,文件系統(tǒng)下層的寫接口會發(fā)送寫操作成功的通知消息,所述消息將觸發(fā)下一次寫操作。
【附圖說明】
[0037]圖1為本發(fā)明實施例一提供的基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法流程圖;
[0038]圖2為本發(fā)明實施例一提供的基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法的消息驅(qū)動流程圖;
[0039]圖3為本發(fā)明實施例一提供的流式數(shù)據(jù)以鏈表的結(jié)構(gòu)緩存的示意圖;
[0040]圖4為本發(fā)明實施例一提供的寫入流式數(shù)據(jù)的時序圖;
[0041]圖5為本發(fā)明實施例一提供的從緩存中取出數(shù)據(jù)時分離子鏈表的示意圖。
【具體實施方式】
[0042]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明具體實施例作進一步的詳細描述。
[0043]實施例一
[0044]下面以圖1為例詳細說明本發(fā)明實施例一提供的基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法,圖1為本發(fā)明實施例提供的基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法流程圖,在本發(fā)明實施例中實施主體可以為文件系統(tǒng)。圖2為本發(fā)明實施例提供的基于嵌入式文件系統(tǒng)的流式數(shù)據(jù)寫入方法的消息驅(qū)動流程圖。結(jié)合圖1和圖2所示,該方法包括如下步驟:
[0045]步驟101、接收待寫入磁盤的流式數(shù)據(jù);
[0046]流式數(shù)據(jù)指將數(shù)據(jù)看作是數(shù)據(jù)流的形式來處理,數(shù)據(jù)塊是數(shù)據(jù)流的最小組成單元。這里接收的流式數(shù)據(jù)來自內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network, CDN)分發(fā)的流式數(shù)據(jù)。
[0047]具體地,在接收寫入文件的流式數(shù)據(jù)之前,還包括以下步驟來為寫請求創(chuàng)建一個新的與任務(wù):
[0048]步驟11,接收到一個新的流式數(shù)據(jù)寫入請求后,判斷系統(tǒng)中是否存在所述文件;
[0049]寫請求的參數(shù)包括文件名、寫入文件的起始偏移和寫入文件的結(jié)束偏移。
[0050]具體地,計算待寫的所述文件的文件名的哈希
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
淮滨县| 固镇县| 临清市| 寻甸| 海丰县| 富蕴县| 桂阳县| 木里| 宁蒗| 望都县| 雷波县| 当涂县| 兴安盟| 百色市| 丹凤县| 汶上县| 桦甸市| 玛曲县| 灵寿县| 嘉黎县| 林芝县| 铁力市| 靖宇县| 仙游县| 察隅县| 阿鲁科尔沁旗| 滨海县| 曲阜市| 九台市| 朝阳县| 宜良县| 江津市| 淮滨县| 九龙县| 龙州县| 平利县| 安宁市| 怀集县| 元阳县| 任丘市| 延川县|