面试回答草稿:操作系统篇:2、虚拟内存

面试回答草稿:操作系统篇:2、虚拟内存

Q:请你讲一讲虚拟内存

  • 虚拟内存主要是解决内存空间不足的问题,但其实它面对的问题又是内存空间利用率低的问题。
  • 产生这个矛盾的原因在于,进程的创建的时候操作系统会给进程分配内存空间,但是进程在程序运行过程中,在每一个时间段内,只会用到程序中的一部分数据,而存储的其他数据实际上被没有被用到。但是还是要给每个进程划分一块内存,并且确保这一块内存能把进程在执行过程中的所有数据都存储起来,所有内存又显得很不足。
  • 这种内存分配的方式是一种对外抠门,对内大方的方式,在分配时,尽量多拿,拿到之后用不用是另一回事,正就像某些社会团体的表现了。
  • 虚拟内存就是解决这个问题的,它首先认识到每个进程分配到内存没有被有效利用的问题,第二,它有效利用了硬盘这个存储空间大,但是读写性能较差的存储设备。
  • 虚拟内存的方案是:把内存分为很多大小相同,空间连续的页框,然后给每一个进程分配一个4G的逻辑地址,逻辑地址也是按照页去划分的,页和页框之间存在一个映射关系,但是每一个进程中,只有一部分的页对应的页框中存储了对应的数据,大多数的页框其实并不会存储映射的数据,这些数据交给硬盘来存储,当发生缺页中断时,从硬盘中读取相应的数据,并按照一个策略将页框中每一个数据与之置换(页面置换),同时会修改对应的页表的标志位。
  • 这时候4G的内存被充分的利用了起来,并且对于每个进程来说,自己似乎独占了4G的内存,双赢的方案,膜拜计算机的前辈吧。

PS:缺页中断:页与页框映射时,对应的页框没有存储数据,这个是用一个标志位来标识的

PS:页面置换:当没有空闲的页框来存储新数据(缺页终端后从硬盘中读到的)时,按照某种策略将内存中一个页框的数据替换为新数据,替换的策略有四种(OPT、LRU、FIFO、LFU),按我的理解,这时候应该需要更新两个页表,该页框对应的原进程页表的对应标志位置为1(该页不在内存中),当前进程的页表,该页框的对应标志位置为0(该页在内存中)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值