进程的地址空间

进程的地址空间本质是一个数据结构

一个进程包含的有代码和数据,以及操作系统所维护的相关数据结构,PCB模块,mm_struct,页表,MMU等

可以从下图中深入的理解进程的地址空间

首先说明一句话的,每个进程都认为自己是独享内存资源的!!!

每个进程都有自己的地址空间,也是虚拟的地址,认为自己是独享内存资源的,也就是内存有多大,它的虚拟空间就有多大,但是实际上的空间是由物理内存也就是真正的内存决定的,其中通过页表和MMU两个共同作用将虚拟地址和物理内存建立映射关系,从而存储数据。

为什么要引入地址空间呢?

1、通过添加一个软件层,完成有效的对进程操作内存进行权限管理,目的是为了保护物理内存和每个进程之间的数据,保证了每个进程都是独立的。

也就是说,每个进程不能直接的去访问物理内存,这样做有可能会导致进程访问到不属于他的空间,容易出现内存泄漏,不容易被管理。添加地址空间之后,进程需要通过页面访问对应的物理空间,不会出现越界的情况。而且操作系统可以通过权限的设置,来保护数据,看是否给你执行这个进程

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

也就是说,写一个程序的时候,需要申请空间,虚拟的地址空间已经开辟好了,然后等真正使用的时候会从物理空间上进行操作, 基于缺页中断进行物理内存申请

3、站在CPU和应用层的角度来看,进程可以统一的使用4GB的空间,而且由于每个空间的相对位置是比较确定的,管理起来是很方便的。

也就是说,CPU每次可以找main函数的在虚拟地址空间上是确定的,然后通过页表的映射去找到代码的位置,统一的形式比零散起来管理更加方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值