进程地址空间(11)

目录

1、什么是进程地址空间

2、地址空间中各个区域的划分

3、为什么要存在地址空间?


1、什么是进程地址空间

小故事:假如有一个大富翁,有100亿资产,有10个私生子(因为是私生子,所以不知道其他人的存在)。大富翁对每个私生子都说:如果你以后好好学习,就可以继承这100亿资产。所以每个私生子都认为自己能独占100亿资产。

说人话就是:大富翁给每个私生子都画了一张大饼,每个私生子都以为自己能独占100亿资产。


对应到计算机就是:大富翁(操作系统)、大饼(进程地址空间)、私生子(进程)、100亿资产(物理内存)。

每个进程都有一个进程地址空间,都以为自己在独占物理内存。

因为系统中有大量的进程,每个进程都有一个地址空间,所以操作系统要对地址空间进行管理(先描述,再组织),地址空间就是一个结构体struct  mm_struct。

 总结:进程地址空间就是内核中的一种数据结构类型,struct  mm_struct,本质就是操作系统给进程画的饼,在32位机器中,这个饼也就是地址空间有4GB。

2、地址空间中各个区域的划分

划分区域的本质就是:一个整形的开始到另一个整形的结束。

进程地址空间也是相同的划分方法。

这里只有start和end,但是每个进程都可以认为mm_struct可以代表整个内存,且所有的地址为0x000...0 ~ 0xFFF...F。每个进程都认为地址空间的划分是按照4GB空间划分的,每个进程都认为自己拥有4GB。

通过页表将虚拟地址转化为物理地址。

3、为什么要存在地址空间?

1、通过添加一层软件层,完成有效的对进程操作内存进行风险管理(权限管理),本质是为了保护物理内存以及各个进程的数据安全。

例如:如果进程直接访问物理内存,如果进程中的代码出现越界,可能会直接将其他进程的代码和数据修改了,这样是不安全的。

2、将内存的申请和内存的使用的概念,在时间上划分清楚,通过虚拟地址空间,来屏蔽底层申请内存的过程,达到进程读写内存和操作系统进行内存管理操作进行软件上的分离。

例如:我们申请了100个字节,但是我们可能存在暂时不会全部使用的情况,站在操作系统的角度,你申请就立马给你,是不是整个系统会有一部分空间,本来可以给别人立马用的,现在却被你占着。所以将内存申请和内存使用分开,当你要进行内存读写操作再给你。

3、站在cpu和应用层角度,进程统一可以看作统一使用4GB空间,而且每个空间区域的相对位置是确定的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值