(1).了解windows記憶體管理機制,理解頁式儲存管理技術。
(2).熟悉windows記憶體管理基本資料結構。
(3).掌握windows記憶體管理基本api的使用。
1.windows記憶體管理基本資料結構
系統結構memorystatus中包含當前物理記憶體和虛擬記憶體和虛擬記憶體資訊,使用函式globaimemorystatus()可以將這些資訊儲存在結構memorystatus中。
結構原型:
typedef struct_mrmorystatus memorystatus, *lpmemorystayus;
2.windows記憶體管理基本api的使用
(1).獲取系統物理記憶體和虛擬記憶體使用資訊
原型:vid globalmemorystatus(
lpmemorystatus lpbuffer //指向memorystatus資料結構的指標
);(2).保留或提交某一點虛擬位址空間 函式virtualalloc()可以在呼叫程序的虛擬位址空間中保留或提交若干頁面。保留意味著這段虛擬位址位址不能被使用,當提交時,這段虛擬位址才真正被分配給程序。
原型:
vpvoid virtuaialloc(
lpvoid lpaddress, //待分配空間的起始位置
dword dwsize, //待分配空間的大小
dword flallocationtype, //分配型別
dword flaprotect //訪問保護的型別
); 返回值:
如果函式呼叫成功,則返回值為已分配虛擬位址空間的起始位址。如果函式呼叫失敗,則返回值為null。
(3).釋放或登出某一段虛擬位址空間 函式virtualfree()用於釋放或登出某一段虛擬位址空間。
原型:bool virtualfree(
lpvoid lpaddress, //待分配空間的起始位置
dword dwsize, //待分配空間的大小
dword dwfreetype //釋放操作型別
); 返回值:
如果函式呼叫成功,則返回值為非零。
如果函式呼叫失敗,則返回值為零。
(4).分配記憶體空間
原型:void *malloc(site_t size //要分配記憶體大小,單位為b(位元組)
);返回值:
該函式返回分配記憶體空間void型別的指標。如果返回null,說明沒有有效的記憶體空間可供分配。
(5).釋放記憶體空間
原型:void free(void * memblock //*memblock:要釋放的記憶體位址。
);
(一)實驗內容使用windows系統提供的函式和資料結構顯示系統儲存空間的使用情況,當記憶體和虛擬儲存空間變化時,觀察系統顯示變化情況。能正確使用系統函式globalmemorystatus()和資料結構memorystatus了解系統記憶體和虛擬儲存空間使用情況,會使用virtualallocation()函式和virtualfree()函式分配和釋放虛擬儲存空間。
(二)主要**
//#include "stdafx.h"
#include "06.h"
#ifdef _debug
#define new debug_new
#undef this_file
static char this_file = __file__;
#endif
void getmemsta(void);
using namespace std;
int _tmain(int arcg, tchar* ar**,tchar* envp)
void getmemsta(void)
(1).程式開始執行時,顯示可用物理記憶體為330mb,可用頁檔案大小為1091mb,可用虛擬記憶體為2031mb。
(2).當分別使用函式virtualalloc()和malloc()分配了66mb虛擬記憶體和5mb物理記憶體後,系統顯示可用物理記憶體為325mb,可用頁檔案大小為1086mb,可用虛擬記憶體為1960mb。
(3).當分別使用函式virtualfree()和free()釋放了66mb虛擬記憶體和5mb物理記憶體後,系統的顯示情況又恢復到了(1)的情況。
通過本次實驗學會使用windows系統提供的函式和資料結構顯示系統儲存空間的使用情況,學會了使用系統函式globalmemorystatus()和資料結構memorystatus了解系統記憶體和虛擬儲存空間使用情況,會使用virtualallocation()函式和virtualfree()函式分配和釋放虛擬儲存空間。
SWJTU 作業系統實驗 記憶體管理
和之前的實驗一樣,仍然是模擬,這次是模擬作業系統的記憶體管理。要求實現opt置換演算法與clock演算法。演算法具體不再贅述,參考下文。clock演算法概要 當頁表未滿時,若新到達程序未在頁表中,進表且指標 1,若新到達程序已在頁表中,指標不移動。頁表滿後,若新到達程序已在頁表中,將該程序使用狀態改...
作業系統實驗
一 實驗目的 理解vi的三種執行模式及其切方法。學會使用vi的各種操作命令進行文字檔案的編輯。用vi編寫linux下c程式,會用gcc編譯。二 實驗環境 一台裝有linux的機器 這裡預設是red hat linux 9 系統裡面有gcc編譯器。三 實驗內容 寫出主要的內容 首先用合法使用者登入系統...
作業系統實驗
分析bootloader進入保護模式的過程。在剛進入bootloader的時候,最先執行的操作分別為關閉中斷 清除eflags的df位以及將ax,ds,es,ss暫存器初始化為0 globl start start code16 cli 關中斷 cld 清除方向標誌 xorw ax,ax ax清0 ...