我是靠谱客的博主 野性烧鹅,最近开发中收集的这篇文章主要介绍物理内存和虚拟内存概念作用进程访问页表的工作原理虚拟内存机制的优点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

物理内存和虚拟内存

  • 概念
  • 作用
  • 进程访问
  • 页表的工作原理
  • 虚拟内存机制的优点

概念

  • 物理内存
    物理内存指通过物理内存条而获得的内存空间
  • 虚拟内存
    虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换

作用

  • 物理内存
    在计算机运行时为操作系统和各种程序提供临时储存
  • 虚拟内存
    1、因为我的物理内存时有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内存的操作是很没效率的
    2、由于指令都是直接访问物理内存的,那么我这个进程就可以修改其他进程的数据,甚至会修改内核地址空间的数据,这是我们不想看到的
    3、因为内存时随机分配的,所以程序运行的地址也是不正确的

进程访问

进程得到的这4G虚拟内存是一个连续的地址空间(这也只是进程认为),而实际上,它通常是被分隔成多个物理内存碎片,还有一部分存储在外部磁盘存储器上,在需要时进行数据交换。

进程开始要访问一个地址,它可能会经历下面的过程
1、每次我要访问地址空间上的某一个地址,都需要把地址翻译为实际物理内存地址
2、所有进程共享这整一块物理内存,每个进程只把自己目前需要的虚拟地址空间映射到物理内存上
3、进程需要知道哪些地址空间上的数据在物理内存上,哪些不在(可能这部分存储在磁盘上),还有在物理内存上的哪里,这就需要通过页表来记录
4、页表的每一个表项分两部分,第一部分记录此页是否在物理内存上,第二部分记录物理内存页的地址(如果在的话)
5、当进程访问某个虚拟地址的时候,就会先去看页表,如果发现对应的数据不在物理内存上,就会发生缺页异常
6、缺页异常的处理过程,操作系统立即阻塞该进程,并将硬盘里对应的页换入内存,然后使该进程就绪,如果内存已经满了,没有空地方了,那就找一个页覆盖,至于具体覆盖的哪个页,就需要看操作系统的页面置换算法是怎么设计的了。

在这里插入图片描述

页表的工作原理

在这里插入图片描述
1、我们的cpu想访问虚拟地址所在的虚拟页(VP3),根据页表,找出页表中第三条的值.判断有效位。 如果有效位为1,DRMA缓存命中,根据物理页号,找到物理页当中的内容,返回。
2、若有效位为0,参数缺页异常,调用内核缺页异常处理程序。内核通过页面置换算法选择一个页面作为被覆盖的页面,将该页的内容刷新到磁盘空间当中。然后把VP3映射的磁盘文件缓存到该物理页上面。然后页表中第三条,有效位变成1,第二部分存储上了可以对应物理内存页的地址的内容。
3、缺页异常处理完毕后,返回中断前的指令,重新执行,此时缓存命中,执行1。
4、将找到的内容映射到告诉缓存当中,CPU从告诉缓存中获取该值,结束。

虚拟内存机制的优点

1、既然每个进程的内存空间都是一致而且固定的(32位平台下都是4G),所以链接器在链接可执行文件时,可以设定内存地址,而不用去管这些数据最终实际内存地址,这交给内核来完成映射关系
2、当不同的进程使用同一段代码时,比如库文件的代码,在物理内存中可以只存储一份这样的代码,不同进程只要将自己的虚拟内存映射过去就好了,这样可以节省物理内存
3、在程序需要分配连续空间的时候,只需要在虚拟内存分配连续空间,而不需要物理内存时连续的,实际上,往往物理内存都是断断续续的内存碎片。这样就可以有效地利用我们的物理内存

最后

以上就是野性烧鹅为你收集整理的物理内存和虚拟内存概念作用进程访问页表的工作原理虚拟内存机制的优点的全部内容,希望文章能够帮你解决物理内存和虚拟内存概念作用进程访问页表的工作原理虚拟内存机制的优点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部