作業系統實驗 系統記憶體使用統計

2021-10-06 21:18:54 字數 2442 閱讀 7701

(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 ...