zoukankan      html  css  js  c++  java
  • 进程的内存布局

    32位内存经典布局

      / +----------------------------------------+ 0xFFFFFFFF
    1GB |              Kernel Space              |
      \ +----------------------------------------+ 0xC0000000 == TASK_SIZE
      / |                  Stack ↓               |
     |  +----------------------------------------+
     |  |                                        |
     |  +----------------------------------------+
     |  |         Memory Mapping Region ↑        |
     |  +----------------------------------------+ 0x40000000
    3GB |                                        |
     |  +----------------------------------------+
     |  |                  Heap ↑                |
     |  +----------------------------------------+
     |  |              BSS Segment               |
     |  +----------------------------------------+
     |  |              Data Segment              |
     |  +----------------------------------------+
     |  |            Text Segment (ELF)          |
     |  +----------------------------------------+ 0x08048000
      \ |                                        |
        +----------------------------------------+ 0x00000000

    Linux操作系统为安全性做了地址空间随机化

      / +----------------------------------------+ 0xFFFFFFFF
    1GB |              Kernel Space              |
      \ +----------------------------------------+ 0xC0000000 == TASK_SIZE
      / |                                        | \
     |  |                                        | Random stack offset
     |  |                                        | /
     |  +----------------------------------------+ \
     |  |                  Stack ↓               | RLIMIT_STACK
     |  +----------------------------------------+ /
     |  |                                        | \
     |  |                                        | Random mmap offset
     |  |                                        | /
     |  +----------------------------------------+
     |  |         Memory Mapping Segment ↓       |
     |  +----------------------------------------+
     |  |                                        |
    3GB |                                        | program break
     |  +----------------------------------------+ brk
     |  |                  Heap ↑                |
     |  +----------------------------------------+ start_brk
     |  |                                        | \
     |  |                                        | Random brk offset
     |  |                                        | /
     |  +----------------------------------------+
     |  |              BSS Segment               |
     |  +----------------------------------------+ end_data
     |  |              Data Segment              |
     |  +----------------------------------------+ start_data
     |  |            Text Segment (ELF)          |
     |  +----------------------------------------+ 0x08048000
      \ |                                        |
        +----------------------------------------+ 0x00000000
    存放函数参数/返回值和局部变量

    存放 malloc/new 动态分配的数据

    BSS(Block Started by Symbol)存放未初始的全局/静态变量

    数据段 存放初始化的全局/静态变量,可以进一步分成RO(只读)和RW(读写)区

    文本段 存放程序代码

  • 相关阅读:
    Linux 忘记密码解决方法
    Linux 系统目录结构
    【Linux】正确的关机方法
    CentOS7设置系统/yum以及firefox web代理上网
    怎样安装CentOS 6.6之三:磁盘分区的划分和修改
    在虚拟机(VMware)中安装Linux CentOS 6.4系统(图解) 转
    LiveCD、LiveDVD和BinDVD区别在哪里
    关于对FLASH开发,starling、starling feathers、starling MVC框架的理解
    【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取
    javascript实现代码高亮-wangHighLighter.js
  • 原文地址:https://www.cnblogs.com/chenkkkabc/p/2990023.html
Copyright © 2011-2022 走看看