当前位置:   article > 正文

进程中bss、数据段、代码段、堆、栈之间的关系_进程bss

进程bss

进程指的是一个程序在操作系统中的动态执行,进程是操作系统资源分配和调度的基本单位。
线程是程序执行的最小单位,一个进程中会有一个或者多个线程。

进程与线程的最大区别在于: 进程是系统资源分配的基本单位,线程是系统调度的基本单位。

linux进程中有5个数据段:
BSS段(bss segment):  通常指用来存放程序中未初始化的全局变量中的一块内存区域。BSS段属于静态内存分配。
数据段(data segment):    通常指用来存放程序中已初始化的全局变量中的一块内存区域,也属于静态内存分配。
代码段(code segment/text segment): 中场指用来存放程序执行代码的一块内存区域,这部分区域的大小在程序运行前就已经确定,并且内存区域通常会被设置为只读权限,当然在某些架构中也允许代码段可写,即允许修改程序,在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

堆(heap):  用于存放进程运行中被动态分配的内存段,大小并不固定,可动态扩张或缩减,当进程调用malloc等函数分配时,新分配的内存就被动态的添加到堆上,当调用free等函数释放内存时,被释放的内存就会从堆中被剔除(堆被缩减)。

栈(stack): 又称为堆栈,是用户存放程序临时创建的局部变量,当函数被调用时,其参数(本质是寄存器,eax,ebx)会被压入堆栈中,待调用函数执行完毕后,被压入堆栈的参数就会被pop出来。另外函数体中定义的临时变量会被存放于堆栈中,堆栈是由操作系统分配

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/699541
推荐阅读
相关标签
  

闽ICP备14008679号