Linux进程的堆

进程的地址空间中有很大的一块区域是被称作“堆”的区域

其地址空间是在进程的.data和.bss的地址增长方向到动态库区域的低地址部分的范围

堆可以理解成是进程的一大块内存区域(已经分配实际物理内存,但并不是所有的地址空间都分配了物理内存,其大小根据系统类型和版本来定)

用来供进程中的程序动态分配内存空间

通常,进程通过向操作系统批发一大块实际的内存空间交给glibc管理以提高动态内存请求和释放的效率

在程序要请求动态分配比较小的内存空间的时候,glibc从这一大块内存空间中分配之

当程序要请求动态分配较大的内存空间的时候,由操作系统通过相应的系统调用来实现。

因为堆的特点是其中的内存区域可以动态(时机和大小都不确定)申请和释放

所以这一大块的物理内存的组织和管理方式通常有一下几种:

1)双向链表

2)位图

3)对象池

因为这块内存使用的动态性,所以相对栈来说,其性能稍差

Glibc是GNU发布的libc库,即C运行库,即C语言在运行时所依赖的运行环境,在C程序(main函数)运行前就已经加载到内存中

时间: 2024-10-05 17:26:51

Linux进程的堆的相关文章

Linux程序存储结构与进程结构 堆和栈的差别

摘要:本文主要讲述了Linux系统中.程序存储结构(代码区.数据段和BBS区)与进程的基本结构(代码区.数据段.BBS区.堆和栈).以及堆和栈的差别. Linux程序存储结构与进程结构 1.Linux程序存储结构 在Linux系统下,程序是一个普通的可运行文件,图1是一个Linux下ELF格式可运行文件的基本情况. 图1 ELF格式可运行文件的基本信息 能够看出,此ELF格式可运行文件在存储时,没有调入到内存,分为代码区(text),数据区(data)和为初始化区(bss)3个部分.各段基本说明

Linux程序存储结构与进程结构 堆和栈的区别

摘要:本文主要讲述了Linux系统中,程序存储结构(代码区.数据段和BBS区)与进程的基本结构(代码区.数据段.BBS区.堆和栈),以及堆和栈的区别. Linux程序存储结构与进程结构 1.Linux程序存储结构 在Linux系统下,程序是一个普通的可执行文件,图1是一个Linux下ELF格式可执行文件的基本情况. 图1 ELF格式可执行文件的基本信息 可以看出,此ELF格式可执行文件在存储时,没有调入到内存,分为代码区(text),数据区(data)和为初始化区(bss)3个部分.各段基本说明

Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)【转】

转自:http://blog.csdn.net/gatieme/article/details/51872659 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme 目录(?)[-] 前景回顾 1 Linux的调度器组成 2 调度工作 进程上下文 1 进程上下文的概念 2 上下文切换 context_switch进程上下文切换 1 context_switch完全注释 2 prepare_arch_switch切换前的准备工作

Linux进程环境

1.进程是什么 正在运行的程序,就是进程,进程是动态的,程序是静态的:进程在执行过程中具有状态的变化. 进程具有三个不同的状态 : 运行.就绪.阻塞; 三模型分析 : 查看进程的命令ps -ef 和 top,   kill PID(杀死进程) 运行态:进程获得CPU资源,能够使用CPU计算机程序中的指令,当CPU的使用时间用完时,则进入就绪状态. 就绪态:其它资源已经就绪,只差CPU资源. 阻塞态:处理CPU之外的其它资源还未就绪. 进程的调度:进程启动时处于就绪状态,为了调度进程对CPU的使用

Linux进程控制(一)

1. Linux进程概述 进程是一个程序一次执行的过程,它和程序有本质区别.程序是静态的,它是一些保存在磁盘上的指令的有序集合:而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建.调度和消亡的过程,是Linux的基本调度单位.那么从系统的角度看如何描述并表示它的变化呢?在这里,是通过进程控制块(PCB)来描述的.进程控制块包含了进程的描述信息.控制信息以及资源信息,它是进程的一个静态描述. 内核使用进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程序,

六、Linux进程控制

1. Linux进程概述 进程是一个程序一次执行的过程,它和程序有本质区别. 程序是静态的,它是一些保存在磁盘上的指令的有序集合:而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建.调度和消亡的过程,是Linux的基本调度单位. 那么从系统的角度看如何描述并表示它的变化呢?在这里,是通过进程控制块(PCB)来描述的.进程控制块包含了进程的描述信息.控制信息以及资源信息,它是进程的一个静态描述. 内核使用进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程

Linux性能及调优指南(翻译)之Linux进程管理

译文如下:1.1 Linux进程管理 进程管理是操作系统的最重要的功能之一.有效率的进程管理能保证一个程序平稳而高效地运行. Linux的进程管理与UNIX的进程管理相似.它包括进程调度.中断处理.信号.进程优先级.上下文切换.进程状态.进度内存等. 在本节中,我们将描述Linux进程管理的基本原理的实现.它将更好地帮助你理解Linux内核如何处理进程及其对系统性能的影响. 1.1.1 什么是进程?一个进程是一个运行在处理器的程序的一个实例.该进程使用Linux内核能够处理的任何资源来完成它的任

linux进程(1)--进程运行的环境

linux进程(1)–进程运行的环境 标签(空格分隔): linux 以下内容来自<UNIX环境高级编程>读书笔记 前引 首先想想下面几个问题能不能解答: 当程序被执行的时候,main函数时如何被调用的? 程序在内存的存储空间布局是怎样的? 命令行参数时如何传递给新程序的?进程如何读取环境变量? 进程堆空间的使用 进程的终止方式 进程是程序执行的基本,进程即为程序执行的活动体.下面是进程在系统上运行的一些环境. 一.main函数 int main(int argc, char *argv[])

linux 进程

什么是进程? 一个进程是一个程序的一次执行的过程.它和程序不同,程序是静态的,它是一些保存在磁盘上的可执行的代码和数据集合:而进程是一个动态的概念,也是操作系统分配资源的最小单位. 我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体.虽然在不同的操作系统中对进程的控制和管理机制不同,PCB中的信息多少也不一样,但是通常PCB应包含如下一些信息: 1.进程标识符(name): 每个进程都必须有一个唯一的标识符,可以是