美文网首页
第15章 进程地址空间

第15章 进程地址空间

作者: 涵仔睡觉 | 来源:发表于2021-01-17 20:19 被阅读0次

内核除了管理本身的内存外,还必须管理用户空间中进程的内存,也就是进程地址空间。

一、地址空间

进程地址空间由进程可寻址的虚拟内存组成,内核允许进程使用这种虚拟内存中的地址。每个进程都有一个32或64位的平坦地址空间,取决于体系结构。平坦是指地址空间范围是一个独立的连续区间。

内存地址要在地址空间范围之内。地址空间中,可被进程访问打的合法地址空间称为内存区域。通过内核,进程可以给自己的地址空间动态增加或减少内存区域。若进程访问了不在有效范围中的内存区域或以不正确的方式访问了有效地址,那么内核就会终止该进程,并返回“段错误”信息。

内存区域可以包含各种内存对象:

  • 可执行文件代码的内存映射,称为代码段(text section);
  • 可执行文件的已初始化全局变量的内存映射,称为数据段(data section);
  • 包含未初始化全局变量,也就是bss段的零页的内存映射
  • 用于进程用户空间栈的零页的内存映射
  • 每一个诸如C库或动态链接程序等共享库的代码段、数据段和bss也会被载入进程的地址空间;
  • 任何内存映射文件
  • 任何共享内存段
  • 任何匿名的内存映射

二、内存描述符

内核使用内存描述符结构体mm_struct表示进程的地址空间。

该结构体是进程创建时通过allocate_mm宏分配的。若希望父进程和子进程共享地址空间,可以调用clone时设置CLONE_VM标志,这样的进程称为线程。内存描述符通过exit_mm撤销。

三、虚拟内存区域

内存区域在Linux内核中也称作虚拟内存区域(virtual memory Areas,VMAs) 。vm_area_struct结构体描述了指定地址空间内连续区间上的一个独立内存范围。内核将每个内存区作为一个单独的内存对象管理,每个内存区域都拥有一个一致的属性,相应的操作也一致。

四、页表

应用程序访问虚拟地址时,需要将其转化为物理地址,然后处理器才能解析地址访问请求。地址转化需要将虚拟地址分段,使每段虚拟地址都作为一个索引指向页表,而页表项则指向下一级别的页表或指向最终的物理页面。Linux使用三级页表完成地址转化:


image.png
  • PGD:顶级页表,页全局目录
  • PMD:中间页目录
  • PTE:页表,指向物理页面

搜索内存中的物理地址速度有限,为了加快搜索速度,多数体系结构实现了翻译后缓冲器(TLB),TLB作为一个将虚拟地址映射到物理地址的硬件缓存,当请求访问一个虚拟地址时,处理器将首先检查TLB中是否有对应缓存,如果命中则立刻返回物理地址;否则就需要通过页表搜索物理地址。

相关文章

  • 第15章 进程地址空间

    内核除了管理本身的内存外,还必须管理用户空间中进程的内存,也就是进程地址空间。 一、地址空间 进程地址空间由进程可...

  • linux之进程地址空间和物理内存管理

    所谓进程地址空间(process address space),就是从进程的视角看到的地址空间,是进程运行时所用到...

  • Linux内核简述

    进程 创建 创建进程用fork()函数。fork()为子进程创建新的地址空间并且拷贝页表。子进程的虚拟地址空间...

  • 操作系统个人见解之内存篇

    1.逻辑地址和物理地址?进程的地址空间。内存,虚拟内存和交换空间是怎么回事? 为什么进程地址空间可以比物理内存大?...

  • 20-进程_pstree_kill_fork_execl_wai

    进程 * 进程 程序的一次动态执行过程 进程生命周期: 创建:创建虚拟地址空间、地址空间分段,创建task_...

  • python多线程、锁、event事件机制的简单使用

    线程和进程 1、线程共享创建它的进程的地址空间,进程有自己的地址空间 2、线程可以访问进程所有的数据,线程可以相互...

  • 逻辑地址vs物理地址

    一、地址空间定义 物理地址空间 :硬件支持的地址空间逻辑地址空间 :在CPU运行的进程看到的地址 二、逻辑地址生成...

  • 8.进程地址空间

    进程地址空间 内核除了管理自身的内存外,还必须管理用户空间中进程的内存,称该内存为进程地址空间,也就是系统中每个用...

  • 进程内存布局

    ARM64内核的内存布局 进程有用户态和内核态,同样进程的地址空间包括用户地址空间和内核地址空间,用户态访问用户地...

  • 知识总结(一)

    操作系统 线程和进程的区别(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程...

网友评论

      本文标题:第15章 进程地址空间

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