进程地址空间

进程的地址空间

  • 由允许进程使用的全部线性地址组成
  • 与创建、删除线性区相关的系统调用

内存描述符

  • 内存描述符:包含与进程地址空间有关的全部信息。详细字段见P354

线性区

  • 每个线性区描述符表示一个线性地址空间
  • 线性区对象的字段

  • 线性区数据结构
    • 进程所拥有的所有线性区通过链表链接在一起
    • 内核通过进程的内存描述符的mmp字段查找线性区(该字段指向链表中第一个线性区描述符)

  • 线性区访问权限

  • 线性区的处理

    • 查找给定地址的最邻近区
    • 查找与给定地址相重叠的线性区
    • 查找空闲的地址空间
    • 向文件描述符表中插入线性区
  • 分配与释放线性地址区间(P369)

缺页异常处理程序

  • 两种引起缺页的情况

    • 编程错误引起的异常
    • 引用属于进程地址空间但是还没有分配物理页框的页引起的异常
  • 缺页异常处理程序的方案

  • 缺页程序处理流程

  • 请求调页

    • 一种动态内存分配技术,把页框的分配推迟到进程要访问的页不在RAM中为止
    • 动机:真正在引用的进程页只有一小部分,临时用不到的页所在的页框可由其他程序使用。
  • 写时复制

    • 父进程和子进程共享页框而不是复制页框
  • 处理非连续内存区的访问

创建和删除进程的地址空间

堆的管理

  • 堆:用于满足进程的动态哦内存请求
  • 请求和释放动态内存
    • malloc
    • calloc
    • realloc
    • free
    • brk
    • sbrk