实验四

2020-02-21 17:52

实验四、内存监视 1120121965 周佳琪

一.实验目的

了解当前系统中内存的使用情况,包括系统地址空间的布局,物理内存的使用情况;能实时显示某个进程的虚拟地址空间布局和工作集信息等。

二.实验内容

设一个内存监视器,能实时地显示当前系统中内存的使用情况,包括系统地址空间的布局,物理内存的使用情况;能实时显示某个进程的虚拟地址空间布局和工作集信息等。 相关的系统调用:

GetSystemInfo, VirtualQueryEx,VirtualAlloc, GetPerformanceInfo, GlobalMemoryStatusEx …

三.实验环境

四.程序设计与实现

调用getsysteminfo(),getperformanceinfo(,),getprocessmemoryinfo(,,)

int main(int argc, char* argv[]) {

printf(\物理内存的使用率:%ld%%\\n\, statex.dwMemoryLoad); SYSTEM_INFO si;

ZeroMemory(&si, sizeof(si)); GetSystemInfo(&si);

statex.dwLength = sizeof(statex); GlobalMemoryStatusEx(&statex); MEMORYSTATUSEX statex;

cout << \分页大小为:\ << si.dwPageSize << \ << si.dwPageSize / 1024 << \ << cout << \进程可寻址的最小空间为:0x\ << si.lpMinimumApplicationAddress << endl; cout << \进程可寻址的最大空间为:0x\ << si.lpMaximumApplicationAddress << endl; printf(\用户可用物理内存的总容量:%.2f GB = %.2f MB = %.2f KB\\n\,

endl;

(float)statex.ullTotalPhys / 1024 / 1024 / 1024, (float)statex.ullTotalPhys / 1024 / 1024, (float)statex.ullTotalPhys / 1024);

printf(\物理内存的空闲量:%.2f GB = %.2f MB = %.2f KB\\n\, (float)statex.ullAvailPhys / 1024 / 1024 / 1024, (float)statex.ullAvailPhys / 1024 / 1024, (float)statex.ullAvailPhys / 1024);

printf(\进程虚拟地址空间布局和工作集信息查询\\n\); printf(\请输入您想查询的进程的ID:\); //获得每个进程的信息 PROCESSENTRY32 pe; pe.dwSize = sizeof(pe);

HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); BOOL bMore = ::Process32First(hProcessSnap, &pe); while (bMore) { }

HANDLE hP = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID); PROCESS_MEMORY_COUNTERS pmc; ZeroMemory(&pmc, sizeof(pmc));

if (GetProcessMemoryInfo(hP, &pmc, sizeof(pmc)) == TRUE) { }

bMore = ::Process32Next(hProcessSnap, &pe);

cout << \进程ID:\;

wcout << pe.th32ProcessID << endl; cout << \进程名称:\;

wcout << pe.szExeFile << endl; cout << \虚拟内存大小:\;

cout << (float)pmc.WorkingSetSize / 1024 << \ << endl;

cout << \系统当前提交的页面总数:\ << pi.CommitTotal << endl; cout << \系统当前可提交的最大页面总数:\ << pi.CommitLimit << endl; cout << \系统历史提交页面峰值:\ << pi.CommitPeak << endl; cout << \按页分配的总的物理内存:\ << pi.PhysicalTotal << endl; PERFORMANCE_INFORMATION pi; pi.cb = sizeof(pi);

GetPerformanceInfo(&pi, sizeof(pi));

}

int x; cin >> x;

HANDLE hP = OpenProcess(PROCESS_ALL_ACCESS, FALSE, x); WalkVM(hP); getchar(); getchar(); return 0;

五.实验结果


实验四.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:骨髓移植护理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: