20240619 虚拟内存

没看知识前的主观回忆
-
有虚拟内存和物理内存
-
一般调用的时候是先去得到虚拟内存,才去通过虚拟内存计算真实的物理内存
从而拿到数据和函数的真正入口
-
为什么我们需要设置虚拟内存?虚拟内存是用来解决什么问题的?
-
虚拟内存和物理内存的计算关系和抽象关系是什么?
为什么我们需要设置虚拟内存
- 假设我们都是物理寻址的话,
1.操作系统的地址直接暴露给用户程序,用户程序可以破坏操作系统
2.多个用户程序如果都直接引用物理地址,很容易互相干扰。
3.此外,进程申请的内存可能并没有使用,如果有太多的进程同时申请了大量的内存,也会导致物理内存不够用。
针对以上三种情况,我认为虚拟内存的作用应该是
1.内存保护:使得每个进程只能访问其自己的虚拟地址空间,无法直接访问操作系统的内存区域
2.虚拟内存为每个进程提供了独立的地址空间,进程之间的地址空间互不干扰,避免了多个用户程序引用相同物理地址导致的互相干扰。
3.虚拟内存通过使用磁盘使得系统可以支持比实际物理内存更多的内存需求。这种技术允许进程申请的内存超过物理内存的大小,从而有效解决了物理内存不足的问题。
简单描述一下虚拟内存的工作过程
-
程序运行:CPU执行程序代码,生成虚拟地址0x1234。
地址转换:MMU查找页表,发现虚拟地址0x1234对应的物理地址为0x5678。
内存访问:MMU使用物理地址0x5678访问内存中的数据。
页面缺失:如果页表中没有找到对应的物理地址,发生页面缺失。
操作系统将所需页面从磁盘换入内存,并更新页表。
页面置换:如果物理内存已满,操作系统使用页面置换算法选择一个页面换出到磁盘,以腾出空间加载新页面。
现在常用的操作系统们大多是分页并非分段!
Comments
Comment plugin failed to load
Loading comment plugin