zoukankan      html  css  js  c++  java
  • 栈机制

    近些天开始看些操作系统的书,对内存管理这一块重新熟悉了下,在嵌入式操作系统中,内存布局有些不同。

    1.运行时内存布局

    一个程序要运行,就要先将可执行程序文件装载到计算机的内存中。装载是操作系统掌控的。一般而言,操作系统将程序装入内存后,将形成一个随时可以运行的进程空间,该进程空间分四个区域:

                                       进程空间

                    代码区    ----> | code area

                    全局数据区----> | data area

                    堆区      ----> | heap area

                    栈区      ----> | Stack area

    一个运行的程序在内存中表示为这四个空间区域

    其中代码区:存放程序的执行代码。所谓执行代码就是索引了一个个函数块代码,它由函数定义块的编译得到。

    全局数据区:存放全局数据、常量、文字量、静态全局量和静态局部量。

    堆区:存放动态内存,供程序随随机申请使用。

    栈区:存放函数数据区(即局部数据区),它动态反映了程序运行中的函数状态,其运行轨迹正好用来观察函数的调用与返回,从而研究其函数机制。

    栈---

    栈是一种数据结构

    C++在函数调用的过程,需要初始化和善后处理的环节。函数调用的整个过程就是栈空间操作过程。具体过程:

    1)建立北调函数的栈空间,栈空间的大小由函数定义体中的数据量多少来决定;

    2)保护调用函数的运行状态和返回地址;

    3)传递参数;

    4)将控制权转交给被调函数;

    5)函数运行完成后,复制返回值到函数数据块底部;

    6)恢复调用函数的运行状态;

    7)返回调用函数。

    调用一个函数,可以看作是一个栈中元素的压栈和退栈操作。

  • 相关阅读:
    MySQL——SELECT
    启动 MySQL
    Ethernet and ARP 及Wireshark实验
    ICMP 协议及Wireshark实验
    Wireshark实验——IP 协议
    关键路径
    用树结构存储的图博客(笑)
    拓扑排序
    云计算部署的未来趋势将从自动化转向为自主化
    苹果拥抱 Rust,正在将 C 代码移植到 Rust
  • 原文地址:https://www.cnblogs.com/beili/p/9272736.html
Copyright © 2011-2022 走看看