美文网首页
Linux进程的虚拟地址空间描述

Linux进程的虚拟地址空间描述

作者: haiiiiiyun | 来源:发表于2020-03-20 16:53 被阅读0次

通过虚拟内存的概念,操作系统为每一个进程提供完全一致的内存视图,这个内存视图的地址空间,叫虚拟地址空间。

从每个进程的角度来看,内存中只存在操作系统内核及本进程,即内存是被本进程独占的。

Linux进程虚拟地址空间

从向往上看,分为进程代码和数据区、堆数据区、共享库区、堆栈区、内核内存区。

进程代码与数据区

可执行程序文件的内容加载到该区域,该区域又分成2部分,低地址部分包含程序的代码及只读数据,为只读部分;另一区域存放可执行文件的可读写数据,为可
读写区。

该区域不是从0地址开始的,它有一个偏移地址。

堆数据区

堆数据区即heap区,在C程序中,该区域的分配和回收由mallocfree进行。随着区域分配的进行,区域不断从低地址向高地址方向延伸。

共享库区

即共享库内存映射区,在C语序中,printf等函数所在库文件的目标代码加载到该区域。

该区域的开始地址是固定的,并向高地址延伸。

堆栈区

Stack区,程序运行时,函数调用产生的堆栈存放在该区域。

该区域的开始地址是固定的(紧挨着内核内存区),随着调用函数时堆栈的产生,该区域不断从高地址向低地址方向延伸。

内核内存区。

内核虚拟内存区,在虚拟地址空间的最高地址处的一块地址空间内。该区域用户进程不能访问。

相关文章

  • Linux进程的虚拟地址空间描述

    通过虚拟内存的概念,操作系统为每一个进程提供完全一致的内存视图,这个内存视图的地址空间,叫虚拟地址空间。 从每个进...

  • glibc内存管理那些事儿

    Linux内存空间简介 32位Linux平台下进程虚拟地址空间分布如下图: Linux提供了如下几个系统调用,用于...

  • Android Binder面试详解

    一、Linux内核的基础知识 1、进程隔离/虚拟地址空间 2、系统调用 3、Linux跨进程通信机制 目前linu...

  • Linux - 内存管理

    虚拟内存 Linux 内核给每个进程都分配了一个独立的连续的虚拟地址空间,每个进程都不能访问物理地址,至于虚拟地址...

  • 操作系统内存

    Linux 内存 一、虚拟内存 这个虚拟内存指的是“进程的虚拟内存”,或者说是虚拟地址空间,注意与” Linux ...

  • IO知识小记

    Linux内存知识: 内存和进程的关系: 创建进程时,系统会为每个进程分配一个4G大小的虚拟地址空间,且每个进程都...

  • Binder详解(进程间通信)

    一、Linux内核基础知识 1. 进程隔离/虚拟地址空间 进程隔离: 为了确保操作系统中某些 进程互不干扰 避免进...

  • Linux 内存管理:虚拟内存空间布局

    虚拟内存布局 Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以...

  • Binder面试详解

    一.Linux内核的基础知识 1.进程隔离/虚拟地址空间 2.系统调用(用户空间访问内核) 3.binder驱动 ...

  • 可执行文件的装载与进程一点小总结 《程序员的自我修养》·笔记

    可执行文件的装载与进程小结 进程的虚拟地址空间  每个程序被运行起来之后都拥有自己独立的虚拟地址空间,这个虚拟地址...

网友评论

      本文标题:Linux进程的虚拟地址空间描述

      本文链接:https://www.haomeiwen.com/subject/agojyhtx.html