技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> 内存学习――虚拟内存

内存学习――虚拟内存

浏览:2530次  出处信息

    接着上次学习虚拟内存的文章继续学习。

虚拟内存如何实现

    虚拟内存是以虚拟页面的单位组成的。

     虚拟页面使用磁盘来作为自己的存储,一些经常使用到的页面,才会被load到内存中,此时,就相当于把内存看成是磁盘的一个缓存。

     因为每次都load到内存的是一个虚拟页面,所以对应的,内存就需要有一个物理页面能过装下这个虚拟页面。因此,物理内存也被分隔为一个一个的物理页面。虚拟页面和物理页面应该是相等的。

     既然要把虚拟页面和物理页面关联起来,那么就需要维护虚拟页面和物理页面之间的关系。

     因此,就又需要这样一张页面来维持这样的关系,通常,这张表是放在物理内存中,由操作系统来维护的,叫做页表。

    基于这种实现,实际上虚拟内存就有能力解决之前所遇到的问题:每个进程都可以使用相同的虚拟地址,操作系统会将虚拟地址翻译成不同的物理地址,但对进程来说,是透明的;每个进程也都不会因为物理内存受限而不能加载运行,实际上虚拟内存是存在磁盘的,而通常磁盘要比内存大很多(虚拟页面一般放在磁盘的swap分区);同时,虚拟内存通过维护虚拟页面和物理页面的页面,可以实现权限控制,而这种权限控制,就是搭载在页面上面的,因此,一般的内存权限控制,都是以页为单位的。

虚拟内存的访问过程

    当程序访问的虚拟地址在页表中找不到对应的物理页时,这时候,就会向磁盘读取此虚拟页面,并且将此虚拟页面与一个物理页面关联起来,并且在页面记录这种关系。当物理页面都已经被占满的时候,操作系统就会踢掉一个用的少的物理页面,从而让这个新的虚拟页面装入物理页面。 ―― 这和我们使用缓存的逻辑没有什么不同 ―― 操作系统将虚拟页面放入物理页面的动作,是由异常机制触发的。

     而当程序中访问的虚拟地址已经在页表中有对应的物理页面时,这一切就变得相当轻松了。同时,内存权限的控制,也是通过在页表中的记录进行的。

总结

    虚拟内存通过一个存储器层次的概念,将使用物理内存碰到的几个限制,就都统统解决了。我想,这和大学时候老师教我们在解决难题时候的思路一样,进行空间的坐标转换,换个角度,问题说不定就得以迅速解决,而且简单,高效。

建议继续学习:

  1. 内存学习――为什么需要虚拟内存    (阅读:4256)
  2. 虚拟内存的作用    (阅读:4108)
  3. linux磁盘管理学习笔记补充:连接ln、虚拟内存    (阅读:2933)
  4. 关于虚拟内存的一点理解    (阅读:2915)
  5. 虚拟内存机制浅析    (阅读:2819)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1