目录
0 引言
对操作系统的虚拟内存、进程空间、页面置换算法进行了知识点总结,文中的图片均来自小林coding
1 虚拟内存
1.1 为什么引入虚拟内存
虚拟内存是我们操作系统用来做内存管理的,我们应用进程看到的就是虚拟内存,而不是物理内存。不直接使用物理内存的原因也很简单,倘若我们的应用进程直接操作物理内存,则在多线程并发的场景下就很有可能出现一个进程的数据覆盖掉另外一个进程数据的情况,所以引入一层虚拟内存来帮助我们进行内存管理,进程直接操作的是虚拟内存地址,然后通过CPU中的MMU单元帮助我们将虚拟内存地址转换为物理内存地址。

1.2 虚拟地址和物理地址如何实现转换
-
内存分段
程序是有若干个逻辑分段组成,可由代码段,数据段,堆段和栈段组成,不同的段有不同的属性,所以可以用分段的方式把这些段分离出来

即通过段表实现虚拟地址与物理地址之间的映射
存在的问题:
-
内存碎片(外部与内部)
-
内存交换效率低(由于内存碎片导致要进行内存交换)
-
-
内存分页
内存分段会导致内存碎片和内存交换效率低的问题,为了解决这些问题,引入了内存分页,这样我们的内存碎片就会更小,内存交换的区域也就更小,内存交换的效率也就提升了(页表是
操作系统内存管理详解:虚拟内存与页面置换

本文深入探讨了操作系统的内存管理,重点介绍了虚拟内存的作用、虚拟地址到物理地址的转换,包括内存分段和分页,以及Linux系统内存管理措施。此外,还讨论了页面置换算法如最优置换、FIFO、LRU和LFU等,并概述了内存分配流程、swap机制及其优缺点。
最低0.47元/天 解锁文章
3596

被折叠的 条评论
为什么被折叠?



