System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
【】本申請涉及數據存儲,尤其涉及一種磁盤數據讀取方法及裝置。
技術介紹
0、
技術介紹
1、用戶進程運行過程中經常需要從磁盤文件中讀取數據作為應用程序的輸入,同時,操作系統需要將應用程序的核心信息持久化存儲到磁盤文件中,以支持操作系統后續調度應用程序的操作和應用程序出錯時的狀態恢復行為。在這些數據讀取過程中,應用程序對文件的讀取并不是一次性從頭到尾完成的,而是通過將文件拆分后進行多次小數據量的片段讀取來完成的。在此基礎上,在文件讀取過程中很可能因系統中斷而讀取失敗,或因檢測到文件結束而觸發eof條件,使讀取操作出現不足值的情況,這都會影響數據讀取的可靠性。
2、對此,相關技術中提出了多種數據讀取方式來緩解這一問題帶來的弊端。
3、其中,可采用內聯匯編方式進行文件讀取。具體地,可根據磁盤控制器廠商提供的磁盤端口信息,確定磁盤中安裝的文件系統中文件的元信息,在c程序中內嵌直接訪問硬件端口的程序,直接將磁盤數據讀入到內存,避免了系統中斷帶來的磁盤文件讀取失敗問題。然而,這一方式需要使用者充分了解計算機系統中所使用硬盤對外發布的接口信息,以及需要使用者能夠基于該接口信息選擇合適的端口對磁盤文件進行訪問,所消耗人工成本較高。并且,此種方式對讀取操作不足值的情況并不敏感,需要額外為讀取操作不足值的情況增加代碼判斷,而多代碼的引入會增加系統本身的安全隱患。
4、另外,相關技術中還指出,可使用syscall系統提供的統一系統調用函數進行磁盤數據讀取。此系統調用函數是對操作系統中所有軟中斷的對象實
5、因此,如何更為安全有效地應對磁盤文件讀取過程中出現的問題,成為目前亟待解決的技術問題。
技術實現思路
0、
技術實現思路
1、本申請實施例提供了一種磁盤數據讀取方法及裝置,旨在解決相關技術中針對磁盤文件讀取失敗問題的解決方式便利性不足的技術問題。
2、第一方面,本申請實施例提供了一種磁盤數據讀取方法,包括:
3、獲取應用程序針對目標文件的數據讀取請求;
4、檢測應用級緩沖區內為所述目標文件已緩存的未處理數據是否達到指定數據量,其中,所述指定數據量指的是讀取所述目標文件所需的多次讀取操作中單次讀取操作的數據讀取量;
5、在所述未處理數據未達到所述指定數據量的情況下,為所述數據讀取請求執行磁盤數據讀取操作,其中,所述磁盤數據讀取操作用于在磁盤中讀取所述目標文件的所述未處理數據以外的部分;
6、在所述未處理數據達到所述指定數據量的情況下,在所述應用級緩沖區中選擇所述指定數據量的未處理數據轉移至用戶緩沖區,使所述應用程序在所述用戶緩沖區獲取所述指定數據量的未處理數據。
7、在本申請的一個實施例中,可選地,在所述獲取應用程序針對目標文件的數據讀取請求之前,還包括:
8、在用戶進程所在的用戶態地址空間中建立所述應用級緩沖區,其中,
9、為所述應用級緩沖區設置用于統計所述應用級緩沖區內的未處理數據的計數器,以及為所述應用級緩沖區設置用于指示所述未處理數據所在的磁盤訪問位置的地址指針。
10、在本申請的一個實施例中,可選地,在所述應用級緩沖區中選擇所述指定數據量的未處理數據轉移至用戶緩沖區后,還包括:
11、更新所述應用級緩沖區的所述計數器和所述地址指針。
12、在本申請的一個實施例中,可選地,在為所述數據讀取請求執行磁盤數據讀取操作之后,還包括:
13、獲取執行所述磁盤數據讀取操作的返回結果;
14、若所述返回結果為磁盤數據讀取成功,返回所述檢測應用級緩沖區內為所述目標文件已緩存的未處理數據是否達到指定數據量的步驟,直至所述未處理數據達到所述指定數據量時,停止所述磁盤數據讀取操作。
15、在本申請的一個實施例中,可選地,該方法還包括:
16、若所述返回結果為因系統阻塞導致磁盤數據讀取失敗,返回所述為所述數據讀取請求執行磁盤數據讀取操作的步驟,直至磁盤數據讀取成功或執行所述磁盤數據讀取操作的次數達到預設次數上限。
17、在本申請的一個實施例中,可選地,該方法還包括:
18、若所述返回結果為因磁盤文件錯誤導致磁盤數據讀取失敗,終止磁盤數據讀取進程,并向所述應用程序返回數據讀取失敗信息。
19、在本申請的一個實施例中,可選地,該方法還包括:
20、若所述返回結果為因磁盤文件錯誤導致磁盤數據讀取失敗,檢測所述數據讀取請求所針對的磁盤內是否存在與所述磁盤數據讀取操作的讀取目標具有相同數據特征的替換數據,其中,所述數據特征包括數據主體、數據內容和數據置信度;
21、若所述磁盤內存在所述替換數據,向所述應用程序返回所述替換數據和預設的替換提示信息。
22、第二方面,本申請實施例提供了一種磁盤數據讀取裝置,包括:
23、數據讀取請求獲取單元,用于獲取應用程序針對目標文件的數據讀取請求;
24、數據量檢測單元,用于檢測應用級緩沖區內為所述目標文件已緩存的未處理數據是否達到指定數據量,其中,所述指定數據量指的是讀取所述目標文件所需的多次讀取操作中單次讀取操作的數據讀取量;
25、第一處理單元,用于在所述未處理數據未達到所述指定數據量的情況下,為所述數據讀取請求執行磁盤數據讀取操作,其中,所述磁盤數據讀取操作用于在磁盤中讀取所述目標文件的所述未處理數據以外的部分;
26、第二處理單元,用于在所述未處理數據達到所述指定數據量的情況下,在所述應用級緩沖區中選擇所述指定數據量的未處理數據轉移至用戶緩沖區,使所述應用程序在所述用戶緩沖區獲取所述指定數據量的未處理數據。
27、在本申請的一個實施例中,可選地,該裝置還包括:
28、應用級緩沖區建立單元,用于在獲取應用程序針對目標文件的數據讀取請求之前,在用戶進程所在的用戶態地址空間中建立所述應用級緩沖區,其中,為所述應用級緩沖區設置用于統計所述應用級緩沖區內的未處理數據的計數器,以及為所述應用級緩沖區設置用于指示所述未處理數據所在的磁盤訪問位置的地址指針。
29、在本申請的一個實施例中,可選地,該裝置還包括:
30、信息更新單元,用于在所述應用級緩沖區中選擇所述指定數據量的未處理數據轉移至用戶緩沖區后,更新所述應用級緩沖區的所述計數器和所述地址指針。
31、在本申請的一個實施例中,可選地,該裝置還包括:
32、返回結果獲取單元,用于在為所述數據讀取請求執行磁盤數據讀取操作之后,獲取執行所述磁盤數據讀取操作的返回結果;
33、第一執行單元,用于若所述返本文檔來自技高網...
【技術保護點】
1.一種磁盤數據讀取方法,其特征在于,包括:
2.根據權利要求1所述的磁盤數據讀取方法,其特征在于,在所述獲取應用程序針對目標文件的數據讀取請求之前,還包括:
3.根據權利要求2所述的磁盤數據讀取方法,其特征在于,在所述應用級緩沖區中選擇所述指定數據量的未處理數據轉移至用戶緩沖區后,還包括:
4.根據權利要求1至3中任一項所述的磁盤數據讀取方法,其特征在于,在為所述數據讀取請求執行磁盤數據讀取操作之后,還包括:
5.根據權利要求4所述的磁盤數據讀取方法,其特征在于,還包括:
6.根據權利要求4所述的磁盤數據讀取方法,其特征在于,還包括:
7.根據權利要求4所述的磁盤數據讀取方法,其特征在于,還包括:
8.一種磁盤數據讀取裝置,其特征在于,包括:
9.一種計算機設備,其特征在于,包括:至少一個處理器;以及,與所述至少一個處理器通信連接的存儲器;
10.一種計算機可讀存儲介質,其特征在于,存儲有計算機可執行指令,所述計算機可執行指令用于執行如權利要求1至7中任一項所述的方法。<
...【技術特征摘要】
1.一種磁盤數據讀取方法,其特征在于,包括:
2.根據權利要求1所述的磁盤數據讀取方法,其特征在于,在所述獲取應用程序針對目標文件的數據讀取請求之前,還包括:
3.根據權利要求2所述的磁盤數據讀取方法,其特征在于,在所述應用級緩沖區中選擇所述指定數據量的未處理數據轉移至用戶緩沖區后,還包括:
4.根據權利要求1至3中任一項所述的磁盤數據讀取方法,其特征在于,在為所述數據讀取請求執行磁盤數據讀取操作之后,還包括:
5.根據權利要求4所述的磁盤數據...
【專利技術屬性】
技術研發人員:邊博,
申請(專利權)人:北銀金融科技有限責任公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。