关于外部设备存储空间的地址映射--摘自情景分析

来源:互联网 发布:怎么收藏淘宝店铺 编辑:程序博客网 时间:2024/05/22 10:25

一般说来,对外部设备的访问有两种不同的方式:

1.内存映射:外部的存储单元,比如寄存器,作为内存的一部分出现在系统中,应该是常说的与内存统一编址,向以前调试过的ARM芯片S3C2410。(ARM是不是都这样?)

2.I/O映射:外设的存储单元和内存分属两个不同的体系。访问内存的指令不能访问外设的存储单元。如X86中专门设立了IN/OUT指令。

无论哪种映射方式,都需要一个办法将外设上的存储器映射到虚拟地址空间。-ioremap方法。

  • 对于内存页面,通常先在虚存空间分配一个虚拟区间,然后为此区间分配相应的物理内存页面并建立映射,而且这样的映射也不是一次就建立完毕,可以在访问这些虚存页面引起页面异常时逐步建立。

  • ioremap不同,先存在一个物理存储区间,需要从此物理地址出发找到一片虚存空间并建立起映射。另外,这样的需求只发生于对外部设备的操作,属于内核的事情,所以虚存空间位于系统空间。(3G以上)。这样的页面不服从动态的物理内存页面分配,也不服从kswapd的换出。