进程的虚拟地址空间划分

虚拟地址 (virtual address): CPU启动保护模式后,程序运行在虚拟地址空间中。注意,并不是所有的“程序”都是运行在虚拟地址中。CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。

每一个进程被给予它的非常私有的虚拟地址空间。对于32位的进程,地址空间是4G因为一个32位指针能够有从0x00000000到0xffffffff之间的任意值。这个范围允许指针有从4294967296个值的一个,覆盖了一个进程的4G范围。对于64位进程,地址空间是16eb因为一个64位指针能够指向18,446,744,073,709,551,616个值中的一个,覆盖一个进程的16eb范围。这是十分宽广的范围。

因为每一个进程接受它的自己的私有地址空间,当在一个进程中的线程正在运行,线程能够访问仅仅属于它的进程的内存。属于所有其他进程的内存被隐藏并且对运行的线程来说无法访问。

进程的虚拟地址空间的划分

栈空间:存放的是局部变量,函数形参,自动变量

特点:先进后出

      管理权限:系统

                  生命周期:所在函数被调用结束

           在栈空间的变量如果没有初始化,系统随机赋值

堆空间:malloc  ralloc calloc分配的空间

 特点: 先进先出

             管理权限:用户

             未初始化的全局变量为0

数据段:bss:保存未初始化的全局变量

              rodata:常量,不可以做修改的

             ./data:静态数据区,初始化的全局变量,static修饰变量

代码段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值