【Linux】 缺页中断 与 页面类型

缺页中断   

        Linux利用虚拟内存极大的扩展了程序的地址空间,使得原来的物理内存不能容下的程序也可以通过内存和硬盘之间的不断交换(把暂时不用的内存页交换到硬盘,把需要的内存页从硬盘读到内存)来赢得更多的内存,看起来像物理内存被扩大了一样。事实上这个过程对程序是完全透明的,程序完全不用理会自己哪一部分,什么时候被交换进内存,一切都有内核的虚拟内存管理来完成。当程序启动的时候,Linux内核首先检查CPU的缓存和物理内存,如果数据已经存在就忽略,如果数据不在内存里就引起一个缺页中断,然后从硬盘中读取缺页,并把缺页缓存到物理内存里。缺页中断可分为主缺页中断和次缺页中断,从磁盘读取数据而产生的中断是主缺页中断,数据已经被读入内存并被缓存起来,从内存缓存区而不是直接从硬盘中读取数据而产生的中断就是次缺页中断。

           内存缓存区起到了预读硬盘的作用,内核在物理内存中寻找缺页,没有的话产生次缺页中断从内存缓存里面找,如果还没有发现的话就从硬盘读取。很显然,把多余的内存拿出来做成内存缓存区提高了访问速度,这里还有一个命中率的问题,运气好的话如果缺页每次都能从内存缓存区读取的话会极大的提高性能,要提高命中率一个简单的方法就是增大内存缓存区的面积,缓存区越大预存的页面也就越大。

 

页面类型

1 只读页

          那些通过主缺页中断从硬盘读取的页面,包括不能修改的静态文件,可执行文件,库文件等。当内核需要它们的时候把它们读取到内存中,当内存不足的时候,内核就释放它们到空闲列表。当程序再次需要它们的时候通过缺页中断再次读到内存。

2  脏页

         指那些在内存中修改过的数据页,比如文本文件。这些文件由pdflush负责同步到硬盘,内存不足的时候由kswapd和pdflush把数据写会硬盘并释放内存。

3 匿名页

          那些属于某个进程但是又和任何文件无关联,不能被同步到硬盘上,内存不足的时候由kswapd负责将他们写到交换分区并释放内存。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值