拨开云雾学习之虚拟内存

我不得不强调一个观点,在计算机的世界里,内存是由电平组成的,它只会根据外界来记录电平的变化。除此之外,内存什么用处都没有了。而cpu呢,它也是只会加减乘除逻辑运算而已。而这些所谓的加减与或运算当真cpu懂得吗?no no no! cpu什么都不懂,它只是展现了数字电路里与,或,非的门的特性罢了。还记得黑客帝国里,先知oracle经常说的那句话吗,“oh,no,i dont down!”  她什么都不知道。cpu与内存都是遵循一定的物理规则各司其职。对于那些非常繁杂的操作系统,应用程序了,cpu和内存一概不知。

       起初,物理内存好端端的,为什么要引入虚拟内存的,百度百科里说因为RAM有时候会吃紧,需要调用硬盘来充当内存。我觉得有些欠妥。硬盘充当不了内存的。程序指令数据要想被cpu处理只能丢在内存里。 首先,人性是贪婪的,总是在不停榨取计算机的资源。我们总想尽可能多的将应用程序放到内存里。内存是有限的,住不了过多的进程。但是cpu的计算能力在那摆着,这些进程明显是不够cpu塞牙缝的。然后我们把目光集中到了进程,看看进程有没有什么可榨取的地方? 进程是由代码数据组成的,在计算机里,有个大名鼎鼎的局部性定律。就是说进程里的资源总是有一部分在使用,其它的都保持沉默,这些保持沉默的代码和数据,就跟俗话里说的 占着茅坑不拉屎的人 一个道理。 我们是不是可以设想把这些不怎么用到的指令数据,倒腾出内存,为新的进程腾出空间呢。虽然这样有些冒险,但是为了让内存资源得到充分使用,可以一试。  

       进程要分成两部分,一部分在内存里,一部分在硬盘里。可以说进程应该多分成几块,这样便于管理,也便于内存与硬盘交换的,总不能每次交换都交换很大的一块吧,那样会慢死。于是索性就将整个内存都分成大小相等合适的块,这就是分页管理,当然分页管理的作用不止于此。

       万事万物,我们想控制它,就要能够描述它。进程也是如此,我们想让进程里被经常访问到的资源常驻内存,而不经常用的丢在硬盘里,想达到这样的一个目的,你起码要知道进程的每页的地址吧。我们用地址来管理一个进程。但是进程一部分在内存,一部分在硬盘,地址不统一,如果就这样子,进程的资源由于内存和硬盘的交换,地址随时改变,资源是一种信息,信息所表达的内容是固定的。而这个固定的事物A被分配了一个经常变的名字,你下次再去找A,怎么去找呢,是不是很麻烦。由此,我们可以将固定的事物和固定的地址结合起来。虚拟存储器就能够为进程提供不变的线性的地址。当系统没有命中的时候,会请求资源,通过虚拟存储器的线性空间来找到对应的页面,将其地址翻译成物理地址即可。

     虚拟存储器的作用远不止于此,它在将线性地址翻译到物理地址的过程中,顺便保护着操作系统所盘踞的区域不被侵犯。

     按需页面调度和独立的虚拟地址空间间的结合,对系统中存储器的使用和管理造成了深远的影响。此句出自 深入理解计算机系统。

     还要强调一句话,自始至终,内存,cpu都在各司其职,它们根本就不懂得这些条条框框的术语。操作系统,在它们眼里也只是一串的0和1而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值