侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

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

2023-12-05 星期二 / 0 评论 / 0 点赞 / 92 阅读 / 2402 字

概念: 物理内存:真实的内存条,CPU可以直接寻址的内存空间。 虚拟内存:利用磁盘空间虚拟出一块逻辑内存。 区别: Linux会在物理内存不足时,使用虚拟内存,内核会把暂时不用的内存块信息写到虚拟内存

概念:

物理内存:真实的内存条,CPU可以直接寻址的内存空间。

虚拟内存:利用磁盘空间虚拟出一块逻辑内存。

区别:

Linux会在物理内存不足时,使用虚拟内存,内核会把暂时不用的内存块信息写到虚拟内存,这样物理内存就得到了释放,这块儿内存就可以用于其他目的,而需要用到这些内容的时候,这些信息就会被重新从虚拟内存读入物理内存。

内存分页机制:

计算机对虚拟内存地址空间(32位为4G)进行分页----产生页(page),对物理内存地址空间(假设2G)进行分页----产生页帧(page frame),页和页帧的大小相同,所以,虚拟内存页的个数势必要大于物理内存页帧的个数。

在计算机上有一个页表(page table),就是映射虚拟内存页到物理内存页的,更确切的说是页号到页帧号的映射,而且是一对一的映射。

但是虚拟内存页的个数 > 物理内存页帧的个数,岂不是有些虚拟内存页的地址永远没有对应的物理内存地址空间?不是的,操作系统是这样处理的。操作系统有个页面失效(page fault)功能。操作系统找到一个最少使用的页帧,让他失效,并把它写入磁盘,随后把需要访问的页放到页帧中,并修改页表中的映射,这样就保证所有的页都有被调度的可能了。

虚拟内存地址和物理内存地址:

虚拟内存地址由页号(与页表中的页号关联)和偏移量组成。页号对应的映射到一个页帧。偏移量就是页(或者页帧)的大小,即这个页(或者页帧)到底能存多少数据。举个例子,有一个虚拟地址它的页号是4,偏移量是20,那么他的寻址过程是这样的:首先到页表中找到页号4对应的页帧号(比如为8),如果页不在内存中,则用失效机制调入页,否则把页帧号和偏移量传给MMU(CPU的内存管理单元)组成一个物理上真正存在的地址,接着就是访问物理内存中的数据了。总结起来说,虚拟内存地址的大小是与地址总线位数相关,物理内存地址的大小跟物理内存条的容量相关。

广告 广告

评论区