作業系統實驗 採用快取記憶體實現檔案讀 寫

2021-10-07 17:43:36 字數 2329 閱讀 5198

(1).了解windows系統檔案快取記憶體的概念。

(2).熟悉windows系統檔案讀寫相關api。

(3).掌握採用緩衝方式實現檔案讀寫相關引數的設定。

快取記憶體

原理: 訪問快取必將訪問磁碟,而磁碟的訪問速度遠遠低於記憶體的訪問速度,快取記憶體就是利用記憶體中的儲存空間,來加快磁碟傳輸資料,因此快取記憶體不是真正的物理裝置,而是一種記憶體映像機制。由於它被設定在記憶體中,因此速度非常快,可以在一定程度上解決cpu與磁碟速度不匹配的問題。

快取記憶體的原理是:

⑴讀檔案

假設乙個程序讀檔案的第一塊資料,它常常會按順序讀取第二個資料,第三塊資料等等,直到讀出所有需要的資料。利用這個規律可以進行檔案的預先讀,即在程序沒有讀第二塊資料,第三塊資料之前,作業系統提前把這些資料讀入記憶體的快取記憶體。當程序請求訪問這些資料時,就可以快速的將這些資料從快取記憶體中讀出交給程序使用。另外,由於檔案可能會被多次讀出,在第一次讀出後,將檔案儲存在快取記憶體中, 以後再讀時就不用去磁碟中去讀而直接從快取記憶體中讀取即可。利用lru(最少使用頁面置換演算法)原則,可以將不使用的檔案資料從快取記憶體中刪除以節約快取記憶體空間。

⑵ 寫檔案

寫檔案可使用延遲寫機制,具體地說,如果乙個程序要求寫檔案,它首先把要寫的內容交給快取記憶體。而快取記憶體並不立即把它寫回磁碟,而是在cpu空閒時再完成寫操作。這樣,要寫磁碟的程序就可以不必等待寫操作完成再繼續工作,從而節省了整個程序的執行時間。此外,如果另外乙個程序要訪問還沒有寫回磁碟的資料,在作業系統的管理下,就可以從快取記憶體中得到剛剛更新的資料,而不是磁碟上的舊資料,從而保障了檔案內容的一致性。

(一)實驗內容
建立乙個函式,使用該函式將原始檔source.txt中的內容讀出,在寫到目標檔案sequence.txt去。
(二)主要**

//#include "stdafx.h"

#include "08.h"

#ifdef _debug

#define new debug_new

#undef this_file

static char this_file = __file__;

#endif

handle handle_src, handle_dst;

dword numberofbyteread, numberofbytewrite;

char buffer[1024];

void filereadwrite_nobuffer(char* source,char* destination);

int _tmain(int argc, tchar* ar**, tchar* envp)

void filereadwrite_nobuffer(char* source,char* destination)

else

if(handle_dst==invalid_handle_value)

else

numberofbyteread = 1024;

numberofbytewrite = 1024;

int write_flag, read_flag;

printf("請輸入內容:\n");

scanf("%s",buffer);

write_flag = writefile(handle_src,buffer,numberofbytewrite,&numberofbytewrite,null);

if (write_flag!=0)

else

read_flag = readfile(handle_src,buffer,numberofbyteread,&numberofbyteread,null);

if (read_flag!=0)

else

write_flag = writefile(handle_dst,buffer,numberofbytewrite,&numberofbytewrite,null);

if (write_flag!=0)

else

//關閉檔案控制代碼

closehandle(handle_src);

closehandle(handle_dst);}

由於要採用快取記憶體進行檔案操作,在使用函式createfile()建立檔案時,其引數dwflagsandattiibutes應選用file_flag_sequent_scan。該實驗完成緩衝方式的檔案讀寫操作。先建立兩個檔案,即source.txt和sequential.txt,然後反覆從檔案source.txt中讀出資料塊,並寫到檔案sequential.txt中去,直到檔案尾為止。掌握了採用緩衝方式實現檔案讀寫相關引數的設定。

作業系統實驗八 採用快取記憶體實現檔案讀寫

1 了解windows系統檔案快取記憶體的概念。2 熟悉windows系統檔案讀寫相關api。3 掌握採用緩衝方式實現檔案讀寫相關引數的設定。快取記憶體 訪問快取必將訪問磁碟,而磁碟的訪問速度遠遠低於記憶體的訪問速度,快取記憶體就是利用記憶體中的儲存空間,來再存磁碟傳輸資料,因此快取記憶體不是真正的...

作業系統中的主儲存器 快取記憶體

儲存管理是作業系統的重要組成部分,它負責管理計算機系統中的主儲存器。任何程式 及資料在執行前必須進入主存空間,因此儲存管理的優劣直接影響系統的效能,主儲存空間一般分為兩部分 一部分是系統區,存放作業系統的核心程式以及標準子程式等 另一部分是使用者區,存放使用者的程式和資料等,供當前正在執行的程式使用...

作業系統實驗05 訊號量實現和應用

本次實驗的基本內容是在linux 0.11的核心中實現訊號量,並向使用者提供使用訊號量的介面,使用者使用該介面解決乙個實際的程序同步問題。實驗的主要內容包括如下兩個部分 在linux 0.11核心上 linux 0.11核心中沒有定義訊號量 實現訊號量,並建立相應的系統呼叫以供使用者使用。應提供的系...