南郵作業系統 實驗3 儲存管理

2021-09-29 22:20:13 字數 2408 閱讀 6031

實驗目的

1、理解作業系統儲存管理原理

作業系統的發展使得系統完成了大部分的記憶體管理工作。對於程式設計師而言,這些記憶體管理的過程完全透明不可見。因此,程式設計師開發時從不關心系統如何為自己分配記憶體,而且永遠認為系統可以分配給程式所需要的記憶體。在程式開發時,程式設計師真正需要做的就是:申請記憶體、使用記憶體、釋放記憶體,其他一概無需過問。 2、

研讀linux

記憶體管理所用到的檔案

include/linux/mm.h,

主要包括兩個資料結構:

mem_map

、free_area 3、

在linux 下,用malloc()函式實現cat或copy命令。

1、定義學號的.c檔案

vi b17070306.c

2、編寫.c檔案

**如下;

#include #include //exit函式,實驗指導上少了這乙個標頭檔案

#include #include int main(void)

strcpy(str,"hello");

printf("string is %s\\n",str);

free(str);

return 0;

}

3、編譯執行gcc b17070306.c

./a.out

4、過程與結果及結果分析

實驗一執行結果:

結果分析:

函式通過

void  *malloc(size_t  size) 分配指定大小size個位元組的記憶體空間,成功時返回分配記憶體的指標(即所分配記憶體的位址)。該記憶體區域沒有清空。

然後通過strcpy(str,"hello");將hello賦值給該記憶體空間,然後輸出並通過

void free(void * addr);函式釋放由malloc()分配的記憶體,addr是要釋放記憶體空間的起始位址,並且addr必須是被以前malloc( )呼叫返回的。

1、建立.c檔案

vi sanyanjie.c

2、編寫.c檔案

最初**:

#include#include #include #include #include main()

報錯:

原因是return-type:函式有無返回值以及返回值型別不匹配;這是因為c標準裡規定main返回值必須為int。具體可參看這篇

故修改為

#include#include #include #include #include int main()

然後有報錯

原因是使用open函式使用錯誤,仔細檢視open函式發現其相關性質,具體參考這篇

1. 標頭檔案:

#include #include #include
2. 定義函式:

int open(const char * pathname, int flags);

int open(const char * pathname, int flags, mode_t mode);

引數pathname指向欲開啟的檔案路徑字串

故再次修改標頭檔案,及其open函式的引數,根據題意,修改為上一檔案的目錄。

#include#include #include #include #include #include #include int main()

3、編譯執行gcc sanyanjie.c

./a.out

4、結果與過程

結果分析:

該函式通過fstat()獲得檔案長度,然後通過malloc()系統呼叫申請響應大小的記憶體空間,通過read()將檔案內容完全讀入該記憶體空間,並顯示出來。

南郵作業系統實驗三(儲存機制的模擬實現)

本實驗要求使用最佳置換演算法 opt 先進先出置換演算法 fifo 以及最近最久未使用置換演算法 lru 來模擬實現頁面的置換。本文章實現了先進先出置換演算法 fifo 和最近最久未使用演算法 lru includeusing namespace std define n 12 define m 3...

作業系統 儲存器管理實驗

實驗過程 理解windows中堆 棧的記憶體布局 通過wndows系統提供的系統呼叫heapcreate heapalloc heapfree 等函式的應用,理解虛擬記憶體管理技術中的記憶體分配原理。使用工具軟體vmmap檢視某個程序的虛擬位址空間,並理解虛位址空間中的相關術語。本實驗要求用c語言書...

作業系統程序管理實驗 3

繼上次的建立執行緒後,我又帶著一段新的 來了qaq 死鎖是什麼呢?死鎖是指兩個或兩個以上的執行緒在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。啥是互相競爭資源?我上次...