【Linux】进程地址空间

一、什么是进程地址空间

1.进程地址空间回顾

📌本文默认针对32位CPU计算机系统进行阐述

地址空间描述的基本空间大小是字节,而在32位下,CPU去内存中寻址,最多能形成2^32个地址

2^32个字节也就是4GB的大小

我们在之前学习C语言时,学习指针、压栈等知识的时候,肯定画过下面这样的图🎞️

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DyCJ3gxz-1670552051987)(C:\Users\DongYu\AppData\Roaming\Typora\typora-user-images\image-20221205210651206.png)]

图中这块地址是分布在哪呢?我们在前面已经学习过操作系统、进程方面的知识,那难道图中的这块地址是在内存中吗?

答案:不是!图中这块是叫做虚拟地址空间!
那什么是虚拟地址空间?让我们来慢慢了解🚩

来段代码感受一下

我们定义一个全局变量然后让父子进程分别去打印其值,并将其地址也打印出来

 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 
 int g_val = 0;
 
 int main()
 {
   
     pid_t id  = fork();
     if(id < 0)
     {
   
         perror("fork fail");
         return 0;
     }
     else if(id == 0)
     {
   
         //child
         printf("我是子进程,pid:%d,ppid:%d  g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
     }
     else
     {
   
         //father
          printf("我是父进程,pid:%d,ppid:%d  g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KGoDY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值