浅谈虚拟内存转换为物理内存

虚拟内存是一种操作系统管理内存的技术,它通过页表和内存管理单元(MMU)将虚拟地址映射到物理地址。每个进程有自己的页表,当访问不在物理内存的页时,会触发缺页中断,可能采用页面置换算法如LRU或OPT来决定哪个页面调出。实际应用中,TLB作为缓存加速地址转换,降低缺页率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅谈虚拟内存转换为物理内存

什么是虚拟内存?

虚拟内存是操作系统管理内存的一种技术,它使应用程序有一段连续可用的地址空间的假象,实际上是很多个物理内存碎片,它可以使应用程序拥有比实际物理内存更大的逻辑内存,实际上上将程序中不需要的数据放到硬盘上,需要时在进行数据交换。

主要原理:每个进程拥有独立地址空间,这个地址空间被分多个大小相等的快,称为页,这些页被映射到物理内存,但不需要映射的连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

虚拟内存如何转换成物理内存

虚拟地址通过mmu(内存管理单元)进行物理地址和虚拟地址的转化。其中每个进程都有一个也表里面映射着页号与帧号,通过页号查询到帧号,cpu判断当前的帧号是否访问越界,如果是就中断,否则就通过页内偏移量和帧号计算出物理地址。但是这样访问速度较慢,所以MMU里面就会有TLB,可以看成是个缓存,操作系统会先查TLB中虚拟地址与物理地址的映射,如果有的话,就不要查页表了,否则查询页表,然后更新TLB的数据。

查询页表的时候还要检测标志为是否为1,如果是1说明有页在内存中,如果0的话说明没有页在内存中这是时候就发生缺页中断从而将该页调入内存中,此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。这时候就会用到页面置换算法

页面置换算法:
最佳置换算法(opt)

所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。

是一种理论上的算法,因为无法知道一个页面多长时间不再被访问。

最近最久未使用

虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。

在实际的应用中会保持较低的缺页率。

先进先出

选择换出的页面是最先进入的页面。

该算法会将那些经常被访问的页面换出,导致缺页率升高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值