Linux 进程地址空间

目录

程序地址空间                                                  

进程地址空间

Linux2.6内核进程调度队列

一个CPU拥有一个runqueue

优先级

活动队列

过期队列

active指针和expired指针


程序地址空间                                                  

以下这张空间分布图大家应该都见过

在Linux操作系统中,我们可以通过以下代码对该布局图进行验证:

运行结果如下,与布局图所示吻合的:

下面我们来看一段代码:

代码中使用fork函数创建了一个子进程,其中让子进程将全局变量g_val从100变为200后打印,而父进程先休眠3秒,再打印全局变量的值

但是按道理来说,子进程打印全局变量值为200,而父进程是在子进程将全局变量修改之后在执行的,照理说打印时全局变量也应该是200

但是代码运行结果如下:

两个完全相同地址处的全局变量,居然打印出来两个不同的值

如果我们是在同一个物理地址处获取的值,那必定是相同的,而现在同一个地址处获取得到的值居然不相同,那我们可以推断,这个打印出来的地址绝对不是物理地址!!!

实际上我们在语言层面上打印出来的地址都不是物理地址,而是虚拟地址,物理地址用户都是看不到的,是由操作系统进行统一管理的

所以就算父子进程中打印出来的全局变量的地址࿰

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值