- 参考 :
- 4 ways to check size of physical memory (RAM) in Linux
https://kerneltalks.com/linux/4-ways-to-check-size-of-physical-memory-in-linux/ - 深入理解虚拟内存机制
https://www.jianshu.com/p/13e337312651 - linux内存分配与回收
http://luodw.cc/2016/08/13/linux-cache/ - VirtualMemory
https://linux-mm.org/VirtualMemory - 什么是内存(二):虚拟内存
https://www.cnblogs.com/yaoxiaowen/p/7805964.html
拟内存技术很复杂,但是思想很朴素,物理内存的空间是有限的,进程所需要的RAM数量总和远远超过存储所能支持的范围,所以引入了虚拟内存的思想。
举个例子来形容就是,我有个酒店,里面有几间房你不用关心,反正要住之前你要先预约,假设有100个人预约了今天来住,我只有10个房间,100个预约都可以成功,我只能祈求一下上苍同时只来10个人,其他90个都别来了吧。这样面子上看这就像是我可以做100个人的生意~~
大约就是这个样子吧:
- 未分配的(Unallocated): VM系统还未分配(或者创建)的页,未分配的页没有任何数据和它们关联,因此不占用任何内存/磁盘空间。
- 缓存的(Cached): 当前已缓存在物理内存中的已分配页
- 未缓存的(UnCached): 该页已经映射到磁盘上,但是还没缓存在物理内存中。
总结一下,巧妇难为无米之炊,但是有一点米还想装成达则兼济天下的样子的话就得多想办法~
官方套话再总结一下,虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。和没有使用虚拟内存的技术的系统相比,使用这种技术的系统会让大型程序的编写变得更容易,对真正的物理内存(如RAM)的使用也更有效率。
回答题目中提出来的问题,采用虚拟内存机制一个可以把生意做大,另外一方面很重要的就是提供了内存的读写安全。
本文仅仅作为药引子,不做过多展开,后续文章会针对具体问题深入阐述。
欢迎内核大佬指点以及纠正错误,谢谢~