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(读写)区

    文本段 存放程序代码

  • 相关阅读:
    String类
    try catch异常捕获
    while循环语句
    编程中穷举法的运用
    for循环例题
    编程中的 if ()else() 语句
    代位符
    运算符_及_运算符优先级
    C#中的类型转换
    Asp.net基础知识
  • 原文地址:https://www.cnblogs.com/chenkkkabc/p/2990023.html
Copyright © 2011-2022 走看看