内存管理

内存管理

分区、分段、段页式

  • 操作系进行内存管理的原因

    • 划分内存而满足多道程序的需求。
    • 内存需要被高效地分配而能够装入尽可能多的进程。
  • 分类

    • 连续:分区
    • 离散:分段、分页

固定分区

  • 系统初始启动时将内存划分为数目固定尺寸固定的多个分区。
  • 这些分区的尺寸可以相等也可以不等。

特点

  • 如果一个程序太大而不能进入分区需要程序员使用覆盖技术(早期计算机系统)设计程序。
  • 内存使用不够高效。无论程序多小必须占据整个分区,这被称为内零头(内部碎片)。
  • 以上问题虽然可以通过大小不相等的分区设计加上算法减小影响,但是不能根治问题。
  • 优点
    • 实现简单。
    • 系统开销小。
  • 缺点
    • 存在内零头,存储利用率不高。
    • 分区尺寸固定,系统无法运行大程序。
    • 分区数目固定,活动的进程数目受限。

动态分区

  • 分区的大小和数量多样。
  • 进程可以分配到精确的所需的内存大小。
  • 会在内存中产生很多“小空隙”,称为外零头。
  • 必须使用紧凑技术,调整进程使它们相邻,从而拼接所有较小的空闲内存形成一块较大的。
  • 动态分区消除了内零头,却产生了外零头。

简单分页

  • 内存被分为大小相等的块,每一个进程被分成和内存块相等大小的块。
  • 这些进程的块,被称为页而内存的块被称为页帧(页框)。
  • 没有外零头,仅有很少的内零头出现在进程的最后一页。

分页系统地址转换

  • 根据逻辑地址及页大小求出页号和页内偏移量。
  • 用页号检索页表,查找页对应的页框号。
  • 根据页框号、页内偏移以及页框尺寸求出物理地址。

简单分段

  • 基于模块化设计时,程序员根据需要将进程分割成许多大小不一的,系统则将物理内存动太划分成许多尺寸不一定相等的部分
  • 当一个进程装入物理内存时,系统将该进程的每个段独立分配一个分区;同一进程的多个段不必存放在连续的多个分区中。
  • 没有内部碎片,比较与动态分区,内存利用率更高,开销小。

段页式

区别和对比

  • 页面是信息的物理单位;在特定的系统中,其大小是固定不变的,不随进程的不同而不同。
  • 段是信息的逻辑单位,其长度不定;即使是属于同一进程的两个段长度也可能不等。
  • 分页活动源于系统管理物理内存的需要,在系统内部进行,由系统实施,用户看不见。
  • 分段活动源于用户进行模块化程序设计的需要,在系统外部进行,由用户实施,用户是知道的。
  • 在分页系统中,逻辑地址是一维的。
  • 在分段系统中,逻辑地址是二维或多维的。

段页式为什么存在

  • 分页系统中,内零头得到了有效的抑制,外零头则被完全消除;因此使用分页技术可以提高物理内存的利用率。
  • 分段系统中,动态数据结构、程序和数据共享、程序和数据保护等问题得到了妥善的解决;因此,分段技术有利于模块化程序设计。
  • 段页技术汲取了分页技术和分段技术的上述优点。

如何划分

  • 在段页存储管理系统当中,每个进程均被编程人员分割成多个,每个段又被系统分割成多个
  • 相应的,物理内存被系统划分成多个页框(页帧)
  • 当一个进程装入物理内存时,系统为该进程的每个段的各页面独立地分配一个页框;一个进程的同一段的多个页面不必存放在连续的多个页框中。

虚拟内存分页

  • 与简单分页相比,不需要将进程所有的页装入主存。
  • 优点
    • 没有外部碎片。
    • 巨大的虚拟内存空间。
    • 更高程度的多道程序设计。
  • 缺点
    • 复杂的内存管理开销。

虚拟内存分段

  • 与简单分段相比,不需要进程所有的段都装入主存。
  • 优点
    • 具有虚拟内存分段的三个优点,并支持保护和共享。
  • 缺点
    • 复杂的内存管理开销。
作者

TIANYUZHOU

发布于

2020-10-30

更新于

2021-02-17

许可协议

评论