前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux 内核 内存管理】内存映射原理 ① ( 物理地址空间 | 外围设备寄存器 | 外围设备寄存器的物理地址 映射到 虚拟地址空间 )

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

作者头像
韩曙亮
发布2023-03-30 14:27:55
3.2K0
发布2023-03-30 14:27:55
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、物理地址空间


" 物理地址空间 “ 是 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 函数 , 将 " 外围设备寄存器 “ 对应的 ” 物理地址 “ 映射到了 ” 虚拟地址空间 " 中 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、物理地址空间
  • 二、外围设备寄存器
  • 三、外围设备寄存器物理地址 映射到 虚拟地址空间
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档