ioremap 和 mmap 作为 linux 内存的关键操作
对于一个系统来讲,会有很多的外设,那么这些外设的管理都
是通过(CPU)完成。那么 CPU 在这个过程中是如何找到外设的呢?
尽管在一个系统中会有诸多的外设,在每个外设的接口(电
路)中会有多个端口。但是如果系统能够每个端口都被赋予一个具
体的地址值,那么在系统中就能轻易的找到任何一个外设。系统在
管理的时候,不管是内存还是外设都需要分配一个内存地址。对于
一个 32bit 的系统来讲,可寻址的范围为 2^32=4G 的地址空间。
既然说到地址空间,就要明确地址空间的种类:物理地址、总
线地址、虚拟地址。
(1)物理地址
CPU 地址总线传来的地址,由硬件电路控制其具体含义。物理
地址中很大一部分是留给内存条中内存的,但也常被映射到其他存
储器上(如显存、b(ios)等)。在程序指令中的虚拟地址经过段
映射和页面映射后,就生成了物理地址,这个物理地址被放到 CPU
的地址线上。