【Linux驱动】Linux内存映射机制(mmap实现)

 

一、Linux内存映射:

1、截止arm7没有MMU,其之后片上加入了MMU器件

2、MMU的作用:

(1)负责虚拟地址到物理地址的转换

1)确定的数学公式进行转换;

2)用表格存储虚拟地址对应的物理地址:

tiny210使用第二种方法,并根据每次转换时查表的次数分为一级页表方式(以段的方式转换)和二级页表方式(以页的方式进行转换)。

128M分成4K的块进行映射,并通过struct page进行管理;

(2)提供硬件机制的内存访问权限检查;

 

二、虚拟空间地址管理机制:

1、进程虚拟地址空间(0——(3G-1)):

 

 

三、用户空间的mmap:

1、概念:

把文件或者设备映射到内存中:在当前调用进程的虚拟空间中创建一个文件或者设备映射到内存中的映射,则可直接通过mmap()函数访问文件或者设备。

 

 

2、read/write和mmap对比(效率)

写时的copy_from_user( )和读时的copy_to_user( )都有开销,相比之下mmap是把文件或者设备映射到当前的进程,从而直接访问其内容,没有数据拷贝的开销。

3、mmap内核实现:

4、mmap实例:

P141

 

参考:https://blog.csdn.net/u014085791/article/details/39298639  MMU详解

https://www.linuxidc.com/Linux/2011-09/43526p4.htm  内存管理单元MMU介绍

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值