虚拟存储器之存储器映射

Linux通过将一个虚拟存储器区域与磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射.虚拟存储器可以映射到两种类型对象中的一种:

1):文件系统中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分,例如一个可执行目标文件.文件区被分成页大小的片,每一片包含一个虚拟页面的初始化内容.因为按需进行页面调度, 所以这些虚拟页面没有实际交换进入物理存储器,直到CPU第一次引用到该页面(即发射一个虚拟地址,落在地址空间这个页面的范围之内),如果区域比文件区要大,那么就用0来填充这个区域余下的部分.

2):匿名文件:一个区域页可以映射到一个匿名文件,匿名文件是由内核创建,包含的全是二进制零,CPU第一次引用这样一个区域内的虚拟页面时,内核就在物理存储器中找到一个合适的牺牲页面,如果已经被修改,就写回磁盘,用二进制的零覆盖牺牲页面并更新页表.

共享区域

进程都有自己私有的虚拟地址空间,可以防止其它进程修改其数据.但是,许多进程都有相同的只读文本区域,例如内核代码,数据等,如果每个进程运行时都拷贝一份,那就是极端的浪费了.因此,存储器映射正好解决了这个问题,当一个进程将一个共享对象映射到它的虚拟存储器的一个区域时,那么这个进程对这个区域的任何写操作,对于其它把这个共享对象页映射到自己的虚拟存储器也是可见的.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值