一条进程的栈区、堆区、数据区和代码区在内存中的映射

发布者:BlissfulJourney最新更新时间:2016-07-28 来源: eefocus关键字:进程  栈区  堆区  数据区和  代码区  映射 手机看文章 扫描二维码
随时随地手机看文章
l          栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。

l          堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你能够 free和delete它们。

l          数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。

注意:

1)     堆向高内存地址生长;

2)     栈向低内存地址生长;

3)     堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk。

 

1、一条进程在内存中的映射

    假设现在有一个程序,它的函数调用顺序如下:

main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。

当一个程序被操作系统调入内存运行, 其对应的进程在内存中的映射如下图所示:

 

 

一条进程的栈区、堆区、数据区和代码区在内存中的映射 - U-BOOT - 少就是多,慢就是快!

 

 

注意:

l          随着函数调用层数的增加,函数栈帧是一块块地向内存低地址方向延伸的;

l          随着进程中函数调用层数的减少(即各函数调用的返回),栈帧会一块块地被遗弃而向内存的高址方向回缩;

l          各函数的栈帧大小随着函数的性质的不同而不等, 由函数的局部变量的数目决定。

 

l          未初始化数据区(BSS):用于存放程序的静态变量,这部分内存都是被初始化为零的;而初始化数据区用于存放可执行文件里的初始化数据。这两个区统称为数据区。

 

l          Text(代码区):是个只读区,存放了程序的代码。任何尝试对该区的写操作会导致段违法出错。代码区是被多个运行该可执行文件的进程所共享的。   

 

l          进程对内存的动态申请是发生在Heap(堆)里的。随着系统动态分配给进程的内存数量的增加,Heap(堆)有可能向高址或低址延伸, 这依赖于不同CPU的实现,但一般来说是向内存的高地址方向增长的。

 

l          在未初始化数据区(BSS)或者Stack(栈区)的增长耗尽了系统分配给进程的自由内存的情况下,进程将会被阻塞, 重新被操作系统用更大的内存模块来调度运行。

 

l          函数的栈帧:包含了函数的参数(至于被调用函数的参数是放在调用函数的栈帧还是被调用函数栈帧, 则依赖于不同系统的实现)。函数的栈帧中的局部变量以及恢复该函数的主调函数的栈帧(即前一个栈帧)所需要的数据,包含了主调函数的下一条执行指令的地址。

 

 

2、  函数的栈帧

    函数调用时所建立的栈帧包含下面的信息:

1)     函数的返回地址。返回地址是存放在主调函数的栈帧还是被调用函数的栈帧里,取决于不同系统的实现;

2)     主调函数的栈帧信息, 即栈顶和栈底;

3)     为函数的局部变量分配的栈空间;

4)     为被调用函数的参数分配的空间取决于不同系统的实现。

 

注意:

l          BSS区(未初始化数据段):并不给该段的数据分配空间,仅仅是记录了数据所需空间的大小。

l          DATA(初始化的数据段):为数据分配空间,数据保存在目标文件中。

关键字:进程  栈区  堆区  数据区和  代码区  映射 引用地址:一条进程的栈区、堆区、数据区和代码区在内存中的映射

上一篇:用C语言和ARM汇编语言设置SDRAM的惯用方法
下一篇:C语言程序执行的第一条指令,并不在 main 函数中

推荐阅读最新更新时间:2024-03-16 15:01

医疗影像存储与传输左右信息化进程
  医疗信息化需要对数据资产的管理有一个通盘的考虑。   在在去年本刊举办的“富营”活动中,曾有多数医疗行业CIO表示,目前国内80%的医院已经实施管理信息系统(MIS),系统建设状况相对成熟;而HCIS(临床管理信息化系统)则相对不足。人们普遍关注的电子病历系统、医疗影像存储与传输系统(PACS)系统以及临床决策支持系统,其中绝大部分尚处于部分应用或试用探索阶段,近半数医院仍是空白。    双重架构优势   医疗信息化大致要经历三个阶段:医院管理信息化阶段(HMIS)、临床管理信息化阶段(HCIS)和局域医疗卫生服务阶段(GMIS)。例如,郑州市中医院是一所大型综合性中医医院,在信息化建设方面已先后建成了“医院信息系统(HI
[医疗电子]
澜起加速中国本土数据中心解决方案进程
    2016年4月12日,澜起科技(上海)有限公司今日举办主题为“携手创新 融聚未来”的生态联盟通气会,与数十位来自合作伙伴的嘉宾分享了其针对新一代数据中心处理器平台津逮的相关规划。该平台应国内用户对数据中心解决方案的新需求而设计,满足数据中心对能量效率及安全可控性的要求,其首款解决方案有望于2017年底至2018年初就绪。澜起科技同时宣布了“子晋联盟”的成立,该联盟将在技术开发、市场分销以及基于津逮平台的软硬件技术解决方案部署实施等方面提供支持。目前,已有多家国内外合作伙伴表达了加入联盟的浓厚兴趣,包括联想、浪潮、HPE/华三、戴尔、百敖软件、三星、SK海力士、美光、记忆科技和中国电子信息产业集团(CEC)等。澜起科技期待更多
[手机便携]
Nios SoC系统中的BCH编解码IP核的设计
   0 引 言   循环码是最重要的一类线性分组纠错码,而BCH码又是目前发现的性能很好且应用广泛的循环码,它具有严格的代数理论,对它的理论研究也非常透彻。BCH码的实现途径有软件和硬件两种。软件实现方法灵活性强且较易实现,但硬件实现方法的工作速度快,在高数据速率和长帧应用场合时具有优势。FPGA(现场可编程门阵列)为DSP算法的硬件实现提供了很好的平台,但如果单独使用一片FPGA实现BCH编解码,对成本、功耗和交互速度都不利。最新的SoC(片上系统)设计方法可以很好地解决这个问题。   本文基于Altera公司的Nios软核+可编程资源的SoC平台设计了BCH编解码IP核,这样,在Nios系统中可以将BCH码作为一种片内资源
[家用电子]
应用METROTOM断层扫描测量技术优化试模进程
一套注塑模具如何实现由设计进而到生产的转变?业界大部分模具从业者皆从产品CAD模型出发最终生产出相对应的模具。此刻,模具安装于精密注塑机上,某种塑料颗粒原料被注入模具内,从业者热切聚集查看生产出来的塑件。首件看起来不错但明显仍有很大的提升空间。注塑工程师介入其中并以他的专业技能及经验在注塑参数间寻求最佳的参数值,在试模 — 包括基本测试以后,你会得到一些相当好的部件 — 至少看起来还不错。 探索—在质量实验室的数周 或许您此刻正关注生产此类塑料阀门组件所付出的努力,并采用试验设计法(DOE)不断优化机器的参数设定。为此,您组织着您的技术智囊团,研究关键的可变因素,设定并规范DOE并由您的注塑工程师负责项目实施。进而生产出许多样品
[测试测量]
应用METROTOM断层扫描测量技术优化试模<font color='red'>进程</font>
进程上下文与中断上下文的理解
一.什么是内核态和用户态 内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。 用户态:用户程序运行空间。 二.什么是进程上下文与中断上下文 1.进程上下文: (1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。 (2)进程下文:其是指切换到内核态后执行的程序,即进程运行在内核空间的部分。 2.中断上下文: (1)中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也
[单片机]
<font color='red'>进程</font>上下文与中断上下文的理解
stm32f103串口实现映射功能
在实际开发中,经常遇到串口的默认输出IO口被其他模块占用了,所以我们要用到串口IO口映射功能,是指将原来实现功能的IO口映射到其他指定IO口,其他不变。具体操作如下: 先贴出默认下的串口初始化设置: void USART1Conf(u32 baudRate) { USART_InitTypeDef USART_InitSturct;//定义串口1的初始化结构体 GPIO_InitTypeDef GPIO_InitStruct;//定义串口对应管脚的结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIO
[单片机]
德国新法令所映射出的车辆趋势
北京时间 10 月 9 日消息,据外媒报道,德国联邦参议院已经通过了一项决议,将在 2030 年禁掉内燃机。作为欧盟第一强国,德国一直是欧盟及欧洲经济委员会各项法律法规的塑造者。此举或许将引起全欧洲从内燃机到新能源汽车的大规模转化。 从畜力到蒸汽机再到内燃机,人类文明在火焰与车轮的推动下前行至今。畜力替代人力、蒸汽机淘汰马匹、内燃机又击败蒸汽机登上舞台。随着10月9日德国联邦参议院通过的一项决议我们也许可以嗅到这样一个信息 新能源汽车的时代来临了 图.1 历史进程 我是阿尔法,我是欧米茄,我是首先的,我是末后的;我是初,我是终 《圣经》中这样写道。当年发明了内燃机的德国最终竟是第一个站出来取缔内燃机的国家。历史的轮回往往就
[汽车电子]
德国新法令所<font color='red'>映射</font>出的车辆趋势
国产手机品牌海外进程喜忧参半
    EnfoDesk易观智库通过对国产手机品牌的海外拓展之路的长期观察,总结国产手机在海外市场的表现:   1、拓展海外市场的品牌增多。联想依靠集团优势,在国际市场表现突出。传统设备厂商中兴、华为,在海外寻求与当地运营商的合作,销量提升较快。酷派瞄准新兴市场,打造自主品牌。   2、以新兴市场为主要战场。智能机时代来临,老牌国际手机品牌在高端市场竞争激烈,对新兴市场的战略空白给国产手机品牌带来机会,且国内的生成和研发相对较低,新兴市场成为了国产手机品牌出征海外的必争之地。   3、寻求与当地运营商的合作成为首选。华为、中兴这样的通讯设备一边帮助海外新兴市场的运营商搭建3G网络,一边依靠双方良好的合作关系销售定制终端。  
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved