物理内存和虚拟内存

物理内存和虚拟内存的区别

物理内存

  • 1.插在板子上的内存是多大就是多大了
  • 2.在cpu概念中物理内存就是cpu的地址线可以直接进行寻址的内存空间大小。
例子:比如8086只有20根地址线,那么它的寻址空间就是1MB,我们就说8086能支持1MB的物理内存,及时我们安装了128M的内存条在板子上,我们也只能说8086拥有1MB的物理内存空间。同理我们现在大部分使用的是32位的机子,32位的386以上CPU就可以支持最大4GB的物理内存空间了。

虚拟内存

    1. 正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的.
  • 2.但是并不是所有数据都一起加到物理内存的,势必有一部分数据放入到其他介质(磁盘)。当进程需要的时候,再通过调度将其
    从磁盘捞取到物理内存。
  • 3.因此虚拟内存可以理解为进程所需的内存空间总和,其中一部分可能不在我们物理内存。

早期没有虚拟内存的时候出现的问题:

  • 1.现在有多个程序需要运行,但是内存空间不足了,就需要将其他程序暂时拷贝到硬盘当中,然后将新的程序装入内存运行.由于大量的数据装入装出,内存的使用效率会十分Low。

  • 2.由于程序都是直接访问物理内存的,所以一个进程可以修改其他进程的内存数据,甚至修改内核地址空间中的数据。

  • 3.因为内存地址是随机分配的,所以程序运行的地址也是不正确的。

假设你的计算机是32位,那么它的地址总线是32位的,也就是它可以寻址00xFFFFFFFF(4G)的地址空间,但如果你的计算机只有256M的物理内存0x0x0FFFFFFF(256M),同时你的进程产生了一个不在这256M地址空间中的地址,那么计算机该如何处理呢?

  • 1.计算机对虚拟内存进行分页产生页,对物理内存分页产生页帧。
  • 2.这里的页和页帧大小一样,因此我们的页个数一般大于页帧数。
  • 3.计算机上有一个页表,类似于map。是虚拟内存页和物理内存帧号的映射(一对一)。
  • 4.因为是一对一所以有些虚拟内存页无法再页表上找到对应的页帧,这个时候如果需要物理内存但是找不到页帧,
    只能调用操作系统进行覆盖最少使用的页帧,然后将页帧上修改的数据刷入磁盘。然后把我们该页需要的内容写入该页帧然后修改页表的映射。
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 想起之前上过的操作系统课,没认真听啊。。 1. 每个进程都有自己独立的4G内存空间,各个进程的内存...
    顶儿响叮当阅读 3,851评论 1 1
  • 物理内存就是你的机器本身内存了(如内存条的大小)。物理内存就是CPU的地址线可以直接进行寻址的内存空间大小。比如8...
    光剑书架上的书阅读 11,579评论 0 11
  • 物理内存和虚拟内存的关系 进程容器中4GB空间的内容分布 在所谓的4GB空间内,系统内核占据了高2GB的空间,普通...
    Asura_Luo阅读 4,017评论 0 0
  • 本文转载自 https://juejin.im/post/59f8691b51882534af254317 参考:...
    xingdong阅读 7,761评论 0 3
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 10,845评论 1 22