程序执行过程

编译

链接

形成逻辑地址的阶段

程序的动态链接与程序的逻辑结构相关,因此分段存储管理有益于动态链接。

装入

在整个系统中设置一个重定位寄存器(寄存器是昂贵的硬件)。

  1. 绝对装入:只适用于单道程序环境。
  2. 可重定位装入:又叫静态重定位,一个作业装入内存时,必须分配要求的全部内存。(固定分区)
  3. 动态运行装入:把地址转换推迟到程序真正要执行时才进行。

可重入程序

优点:减少了对程序段的调入/调出,因此减少了对换数量。

连续分配管理方式

单一连续分配

可以覆盖技术,无外部碎片

固定分区

有内部碎片,无外部碎片

可用于多道程序设计的最简单的存储分配,存储管理的代价小。

动态分区分配

又叫可变分区分配。

在进程装入内存时进行分配

  1. 首次适应(First Fit)算法
  2. 最佳适应(Best Fit)算法,会产生最多的外部碎片。
  3. 最坏适应(Worst Fit)算法
  4. 临近适应(Next Fit)算法

紧凑(Compaction)技术

合并空闲区

非连续分配管理方式

页表的段表同样存储在内存中,系统提供给用户的物理地址空间为总空间大小减去页表(段表)的长度。

基本分页存储管理方式

设置页表寄存器(PTR),存放页表在内存的起始地址F和页表长度M。

页式管理中地址空间是一维的。

逻辑地址分配是按页为单位进行分配的,主存的分配即物理地址分配是以内存块为单位分配。

系统为每个进程建立一张页表,它记录页面在内存中对应的物理块号,页表驻留在内存中。

多级页表:减少页表所占的连续内存空间。

主存的分配:以物理块为单位进行

主存的访问:以字节或字为单位

基本分段存储管理方式

段页式管理方式

系统为每个进程建立一张段表,每个分段有一张页表。

先分段,方便用户编程;再分页,方便操作系统页面调度。

虚拟内存管理

硬件

实现虚拟内存管理必须有相应硬件的支持

  • 内存+外存
  • 页表机制
  • 中断机构
  • 地址变换机构,地址变换需要硬件(强调)

特点

基于非连续分配技术,补充了内存逻辑空间。

  1. 多次性
  2. 对换性
  3. 虚拟性

与基本分页(段)存储管理方式的区别:不必将作业全部装入内存

虚拟存储器的最大容量:由计算机的地址结构决定

页表

状态位:供程序访问时参考。

修改位、访问位:供置换算法参考。

合法位:决定是否会发生页故障。

缺页处理

缺页处理过程中,操作系统可能执行的操作:修改页表、分配页框、分配内存、磁盘I/O(内存没有页面时需要从外存读入)

页面置换算法

Belady异常

FIFO算法还会产生所分配的物理块数增大而页故障数不减反增的异常现象。

有FIFO算法可能会出现Belady异常!

抖动

所有页面置换算法都可能引起抖动。

主要原因:页面置换算法不合理。

采取措施:撤销部分进程。

对换区大小和进程优先级与抖动无关。

LRU算法

实现时耗费高的原因:需要对所有的页进行排序。

CLOCK置换算法

未使用(访问)的页面优先换出;都使用过,则优先换出未修改的页面。

磁盘交换区利用率

交换区利用率高,说明系统处于频繁的换入/换出过程中,内存短缺

处理方法:

  1. 增大内存容量
  2. 减少多道程序的度数

页面分配策略

  1. 固定分配局部置换
  2. 可变分配全局置换
  3. 可变分配局部置换

工作集

内存管理 - 图1

t时刻,工作集窗口大小为6,工作集为{6, 0, 3, 2}