虚拟内存空间布局

默认分类 · 2024-04-22 · 32 人浏览

虚拟内存

为了防止不同进程同时访问同一块物理内存而导致冲突的问题,内核给每一个进程都分配了一个自己的虚拟地址空间,进程只能访问虚拟内存地址,内核会将虚拟内存地址翻译为真实的物理内存地址。这样就解决了冲突的问题。

空间布局

虚拟内存空间分为两个部分

  • 内核空间
  • 用户空间
    用户空间由低地址到高地址分为以下几个部分 :

    • Text Segment(代码段) 是存放二进制可执行代码的位置
    • Data Segment(数据段) 存放已初始化的全局变量和已初始化的静态变量
    • BSS Segment (BSS 段) 存放未初始化的全局变量和未初始化的静态变量
    • heap (堆) malloc或 new 申请一小块内存,存放在堆中,从低地址向高地址增长
    • mmap (映射区) 文件映射的区域
    • stack (栈) 用来存放函数的形参, 局部变量等, 从高地址开始向低地址增长
Theme Jasmine by Kent Liao