内存管理 - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Table of Contents

概述

  • 描述 UNIX 内存管理的策略

PDP-11的内存管理机制

UNIX 的内存管理机制

核心态内存管理机制

  • UNIX核心态内存使用 用KISA KISD寄存器管理(参看pdp11:内存管理)
  • 以下寄存器 在系统初启时固定
    • KISA0/KISD0 - KISA5/KISD5 载入 UNIX代码
    • KISA7/KISD7 为 系统I/O页
  • KISA6/KISD6 指向了现行进程的ppda区(参看 进程图像)

用户态内存管理机制


举例说明
设 有一用户进程,共享正文段占内存页2.5页,数据段2.25页,栈段0.5页 (128内存块/页,64字节/内存块)

  • ta 为 共享正文段的起始地址
  • da 为 ppda区的起始地址
  • 进程迁入内存时,地址映照表中da和ta取相应值
  • 进程迁出内存时,地址映照表中da取0,ta取16 (PPDA区长为16块)
  • 关于栈段起始地址的算法
    • 栈段起始地址 = 数据段结束地址 + 栈段长度 - 128
      • 数据段结束地址为 da+288
      • 栈段长度为 64 块
      • 栈段起始地址 = da + 288 + 64 - 128 = da + 224
⚠️ **GitHub.com Fallback** ⚠️