【Linux 内核 内存管理】内存映射原理 ① ( 物理地址空间 | 外围设备寄存器 | 外围设备寄存器的物理地址 映射到 虚拟地址空间 )

2023-03-30 14:27:55 浏览数 (1)

文章目录

  • 一、物理地址空间
  • 二、外围设备寄存器
  • 三、外围设备寄存器物理地址 映射到 虚拟地址空间

一、物理地址空间


" 物理地址空间 “ 是 CPU 处理器 在 ” 总线 " 上 访问内存的地址 ,

RISC 处理器 只能访问 物理地址空间 , 系统的 外围设备 与 物理内存 都使用 统一的物理地址空间 访问 ;

RISC 全称 " Reduced Instruction Set Computer " , 精简指令集计算机 ;

分配给 " 外围设备 " 的 物理地址 , 又称为 " 设备内存 " ;

ARM64 架构的系统中 , 物理地址空间 分为

2

类 :

  • ① 正常内存 : Normal Memory , 指的是 随机存取存储器 RAM 和 只读存储器 ROM ;
  • ② 设备内存 : Device Memory , 指的是 分配给 " 外围设备寄存器 " 的 物理地址 ;

ARM64 架构 , 参考 【Linux 内核 内存管理】Linux 内核内存布局 ④ ( ARM64 架构体系内存分布 | 内核启动源码 start_kernel | 内存初始化 mm_init | mem_init ) 博客 , 物理地址最大支持

48

位 ;

二、外围设备寄存器


CPU 处理器 访问 " 外围设备 “ 是通过 ” 外围设备控制器 " 的 " 寄存器 " 实现的 ;

处理器芯片 中的 寄存器 分为

3

大类 :

  • 控制寄存器
  • 状态寄存器
  • 数据寄存器

外围设备寄存器 有

2

种 编址方式 :

  • ① I/O 映射方式 , I/O-Mapped
  • ② 内存映射方式 , Memory-Mapped

外围设备寄存器 一般是 连续编址 的 ,

三、外围设备寄存器物理地址 映射到 虚拟地址空间

用户空间 的 应用进程 , 访问 " 外围设备寄存器 " 只能通过 " 虚拟地址 " 实现 ,

Linux 内核 提供了 相关 API 函数 , 将 " 外围设备寄存器 “ 对应的 ” 物理地址 “ 映射到了 ” 虚拟地址空间 " 中 ;

0 人点赞