操作系统复习篇(8)——内存管理(memory management)

第8章 内存管理(memory management)

  • 内存硬件的组织方法
  • 内存管理计数,包括分页跟分段

背景

  • 解决内存与CPU之间的速度问题,在两者之间插入高速缓存(cache)
  • 基址寄存器:规定了最小的合法地址
  • 界限地址寄存器:决定了范围的大小
  • 绝对代码:编译时即知道进程最后在内存中的地址,直接生成绝对地址
  • 重定位代码:编译时不知道进程最后在内存中的地址,从而生成重定位地址,在链接(加载)时再进行地址的绑定
  • CPU产生的是逻辑地址,通过重定位寄存器的修改后,变成内存中的绝对地址

交换

类似轮换算法等,都是需要不断交换CPU中的进程来执行的

  • 滚出(roll out):低优先级的进程被高优先级的进程置换出来
  • 滚入(roll in):高优先级的进程执行完毕后,低优先级的进程再次进入

连续内存分配(Contiguous Allocation)

  • 操作系统一般放置在低内存,即小端,跟随中断向量的位置
  • 连续内存分配(contiguous memory allocation):每个进程位于一个连续的内存区域中

内存分配(分区:partition)

  • 固定分区:将内存分成固定大小的分区,每个分区只允许放置一个进程
  • 可变分区(variable-partition):通过一张表记录哪些内存可用或不可用,每次需要增加进程时,查询足够大的空闲内存(即孔hole)

动态分区的算法

  • 首次适应法(first-fit):分配第一个足够大的孔
  • 最佳适应法(best-fit):分配最小的足够大的空,必须遍历整张表
  • 最差适应法(worst-fit):分配最大的空,必须遍历整张表
  • 再次适应法(next-fit):从上一次插入的位置,往下寻找可以足够大的孔

碎片

  • 外部碎片(external fragmentation):动态分配内存的时候,两个进程之间的空闲的小块
  • 内部碎片(internal fragmentation):固定大小分区时,插入的进程小于固定分配的内存大小,产生的内部碎片
  • 紧缩(compaction):通过移动内容,来使小的外部碎片合并成较大的外部碎片

分页

  • 目的:允许进程的物理空间地址是不连续的
  • 帧(frame):将物理地址分为固定大小的块
  • 页(page):将逻辑地址分为固定大小的块
  • CPU产生的地址分为两个部分:页号(p)和页偏移(d)
  • 页号:页表中的索引,对应每一页的基地址
  • 页偏移:在页号对应的基地址的基础上的偏移
  • 分页不会产生外部碎片,但是会产生外部碎片,在最后一页未用完的内存即成为内部碎片
  • 硬件支持:需要有页表,帧表以及重定位的寄存器,同时可以通过TLB(转换表缓存区)来实现快速查找
  • 共享也的相关说明

页表结构

  • 层次页表(Hierarchical Paging):多重索引
  • 哈希页表()
  • 反向页表

分段

  • 分页的问题:用户视角跟实际物理内存是不一样的
  • 分段(segmentation):支持用户视角的内存管理方案,将数据够跟程序等继续分开,分成大小不一的内存段,即分段
  • 硬件:段表
展开阅读全文

没有更多推荐了,返回首页