实验四
更新时间:2023-12-16 05:46:01 阅读量: 教育文库 文档下载
实验四、内存监视 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;
五.实验结果
六.实验心得
掌握了许多关于Windows内存信息的系统函数,了解了系统内部内存工作的方式及情况。
对于getsysteminfo(),getperformanceinfo(,),getprocessmemoryinfo(,,)等获取系统以及进程特征信息的函数有了深入和直观的了解。准确认知函数内参数的意义与应用。同时知道进程占用的存储空间远没有想象中多。Windows把每个进程的虚拟内存地址映射为物理内存地址。物理内存地址即计算机配置的RAM,windows通过分配RAM、页面文件或两者中的空间,可准确知道应用程序所需要的内存。通过本次实验的学习。我了解到想要知道当前电脑正在运行的进程。处理查看任务资源管理器外。也可以通过系统信息函数调用,用cmd来查看当前正在运行的程序。很有收获,更加深入和清楚的了解了许多以前模糊的地方。
正在阅读:
实验四12-16
学生选课系统完整的UML建模11-21
2016入党谈话内容大全05-25
一次性使用无菌医疗用品监督管理制度08-11
2010年12月18日郑州龙泊圣地销售说辞整体部分06-26
浅析中小企业代理记账存在的问题及对策10-18
大葱的七大食疗功效03-28
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 浙教版2010年中考科学模拟试卷33(含答题卷与答案) - 图文
- 新闻采访与写作复习资料
- 关于适用《劳动争议调解仲裁法》、《劳动合同法》
- 电大项目管理小抄
- 2017年12月社会学概论网络试题100%通过
- 基于LabVIEW 8.5的实验平台
- 浅谈教师队伍的管理与建设
- 基于AT89C52单片机的双路数字电压表设计 精品
- 中国重汽2005年竞争策略方案
- net软件工程师发展前景和职业规划
- 四川省高校毕业生创业大赛通知
- 恒大御府二期砖胎模施工方案设计(正式)
- 安全管理制度
- 2002年全国房地产经纪人执业资格考试
- 八上周末练习13(平行四边形性质)
- 福建省泉州一中2010届高三上学期期末考试物理试题doc
- 2017-2022年中国再生橡胶屋面防水涂料行业供需趋势及投资风险研究报告目录
- 民诉司考选择题
- 企业法律风险评估报告
- 四川省宜宾市2018年中考语文真题试题(含答案)