进程的地址空间
- 由允许进程使用的全部线性地址组成
- 与创建、删除线性区相关的系统调用
内存描述符
- 内存描述符:包含与进程地址空间有关的全部信息。详细字段见P354
线性区
- 每个线性区描述符表示一个线性地址空间
- 线性区对象的字段
- 线性区数据结构
- 进程所拥有的所有线性区通过链表链接在一起
- 内核通过进程的内存描述符的mmp字段查找线性区(该字段指向链表中第一个线性区描述符)
线性区访问权限
线性区的处理
- 查找给定地址的最邻近区
- 查找与给定地址相重叠的线性区
- 查找空闲的地址空间
- 向文件描述符表中插入线性区
分配与释放线性地址区间(P369)
缺页异常处理程序
两种引起缺页的情况
- 编程错误引起的异常
- 引用属于进程地址空间但是还没有分配物理页框的页引起的异常
缺页异常处理程序的方案
缺页程序处理流程
请求调页
- 一种动态内存分配技术,把页框的分配推迟到进程要访问的页不在RAM中为止
- 动机:真正在引用的进程页只有一小部分,临时用不到的页所在的页框可由其他程序使用。
写时复制
- 父进程和子进程共享页框而不是复制页框
处理非连续内存区的访问
创建和删除进程的地址空间
堆的管理
- 堆:用于满足进程的动态哦内存请求
- 请求和释放动态内存
- malloc
- calloc
- realloc
- free
- brk
- sbrk