进程地址空间

地址空间

虚拟地址空间和进程地址空间的区别

  虚拟地址空间是操作系统给进程提供的一个完整的虚拟内存环境,包括内存内核空间和用户空间;而进程地址空间是进程实际使用的那部分虚拟地址空间,只有用户空间。

  每个进程地址空间都是虚拟地址空间的一个实例,虚拟地址空间强调整个虚拟内存的管理,包括动态分配、分页和映射等,进程地址空间更关注进程如何使用这些虚拟的地址空间。

进程地址空间

mm_struct

  Linux内核中的一个结构体,用于管理进程虚拟地址空间中的那些数据结构。(task_struct中包含mm_struct指针,指向该进程的内存管理结构)

在 Linux 内核中, mm_struct 包含了以下信息:

  1. 页表(Page tables):用于将虚拟地址映射到物理地址。
  2. 虚拟内存区域(Virtual memory areas, VMAs):描述进程地址空间中的不同区域,如代码段、数据段、堆、栈等。
  3. 内存权限和属性:定义了不同内存区域的访问权限,例如可读、可写、可执行等。
  4. 内存分配策略:描述了进程如何分配和管理内存,包括堆和栈的增长方向。
  5. 文件映射(File mappings):如果进程映射了文件到其地址空间,这些信息也会被记录在 mm_struct 中。

为什么要有进程地址空间?

1、让父子进程可以用统一的视角看待内存。

(父子进程都分配了一个大小相同的进程地址空间,进程地址空间的区域划分是确定的,堆栈、代码区等,子进程可以将父进程的代码数据在虚拟内存里的安排直接拷贝过来)

2、设置进程地址空间可以让我们访问内存的时候,增加一个转换的过程(虚拟地址通过页表到物理地址的映射)。

在转换过程中,系统可以对寻址请求进行审查,一旦访问异常,直接拦截,该请求不会到达物理内存,保护物理内存。

3、进程地址空间和页表的存在,将进程管理模块和内存管理模块进行解耦合,独立开来。

相关推荐
码途行者22 分钟前
Linux 服务器 Golang 安装及环境变量配置
linux·运维·服务器
叼烟扛炮23 分钟前
Linux 学习笔记(四十七):TCP 状态机与 tcpdump 抓包排雷实战
linux·网络·笔记·学习·tcp/ip·tcpdump
爱和冰阔落31 分钟前
【Linux网络】UDP 聊天室怎么实现?从在线用户管理、消息广播到双线程收发与线程池
linux·运维·网络·udp
雪落漂泊41 分钟前
Linux进程(三)概念:进程优先级与进程切换篇
linux·运维·服务器
拂拉氏42 分钟前
【知识讲解】 Linux信号与可重入函数的认识
linux·运维·服务器
cynicism??1 小时前
Linux 与 ZXISOS 驱动开发架构对比
linux·驱动开发·架构
djjjx.1 小时前
Linux进程篇(十二):从零构建属于你的自定义 Shell 解释器
linux·运维·服务器
承渊政道2 小时前
Linux网络学习【数据链路层、ARP工作过程与ARP欺骗详解】
linux·网络·学习·数据链路层·arp
CS_Zero2 小时前
安卓开发:Linux的android工具命令
android·linux·运维
女神下凡2 小时前
芯参谋(84):Linux eMMC 驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件