一、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介绍