[英]How to get physical memory and cpu used by particular process in windows?
[英]How does Linux know how much physical memory is used by a process?
我正在调查示例进程的内存使用情况。 首先我分配一些内存,检查虚拟内存和驻留内存的大小(在RAM中)。 然后我将数据写入分配的内存并再次检查这些值。
int main()
{
int pid = getpid();
std::stringstream s;
s << "cat /proc/" << pid << "/status | grep \"VmSize\\|VmRSS\"";
std::string command = s.str();
std::cout << "Before allocation\n";
system(command.c_str());
char* mem = new char[10000000];
std::cout << "After allocation\n";
system(command.c_str());
memset(mem, 0, 10000000);
std::cout << "After writing\n";
system(command.c_str());
return 0;
}
输出:
Before allocation
VmSize: 3412 kB
VmRSS: 852 kB
After allocation
VmSize: 13180 kB
VmRSS: 852 kB
After writing
VmSize: 13180 kB
VmRSS: 10568 kB
当操作员new分配内存时,只有VmSize的值发生变化。 当数据写入内存时,VmRSS的值会发生变化。 Linux如何知道进程使用了多少物理内存(VmRSS)?
Linux如何知道进程使用了多少物理内存(VmRSS)?
当进程尝试访问尚未映射到物理内存的虚拟内存时,CPU(假设它具有硬件内存管理单元)将触发由操作系统处理的中断(特别是页面错误)。 操作系统将物理内存分配给进程并更新转换后备缓冲区(MMU的一部分,用于将虚拟内存映射到物理)。
因此,由于操作系统是分配物理内存的,因此它还可以跟踪为每个进程分配的内存量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.