在32位操作系统中,可寻址范围为4GB,因为操作系统都是从0开始寻址,RAM跟ROM的绝对物理地址也是从0开始,所以操作系统需要进行地址映射,保证系统只有一个0地址,这个工作由操作系统完成,按照规则分配好,我们只需要学习这个规则,知道内存中的地址分配,但是像flash跟SATA这类外存设备,都不是CPU可直接访问的,都需要通过一个相应控制器去访问,所以地址不是直接映射在CPU地址空间里的,CPU只需要映射很小的一块地址作为IO映射(寄存器)。访问时告诉控制器读写命令以及地址,然后外存设备会返回相应的数据,当然不是一个字节一个字节返回然后从寄存器中读取数据,这事很早以前的方法。
现在的控制器都支持DMA访问,直接把读的数据放到相应的内存地址中,然后发送一个中断告诉CPU完成数据读写,CPU就可以去使用这些
数据了。