什么是物理/虚拟/共享内存——Linux内存管理小结一
发布网友
发布时间:2024-10-14 04:05
我来回答
共1个回答
热心网友
时间:2024-10-15 07:48
Linux内存管理中,物理内存、虚拟内存和共享内存各自扮演着关键角色。首先,物理内存,即系统实际可用的RAM,被划分为固定大小的内存页,通常为4KB。它主要分为内核使用、slab分配器、进程使用(驻留内存)和页缓存(包括page cache和buffer)等部分。
虚拟内存则是一种内存管理策略,为每个进程提供了一个虚拟地址空间,它并不直接对应物理内存,而是通过页表映射到物理内存。虚拟内存中的代码段、数据段、堆和文件映射区等是动态分配的,可以根据进程需要动态扩展。引入虚拟内存的原因在于,物理内存有限,而进程可能需要大量内存,通过虚拟内存,进程可以使用远超物理内存的虚拟地址空间,而实际只占用物理内存中被映射的部分。
共享内存则涉及到操作系统中的动态库,比如libc和libld等。这些库在内存中只加载一份,被多个进程共享,这部分内存也是驻留内存的一部分,体现在进程的RSS( Resident Set Size)值中。
总结来说,物理内存是实实在在的RAM,而虚拟内存和共享内存是内存管理策略,虚拟内存通过映射机制有效地管理内存,共享内存则减少了重复加载,提高了效率。在监控系统时,关注驻留内存大小RSS,是判断进程内存使用情况的关键指标。