方式功能 | 单一连续 | 分区 | 分页 | 分段 | 段页式 | ||||
固定 | 可变 | 基本 | 请求 | 基本 | 请求 | 基本 | 请求 | ||
分配方式 | 连续 | 连续 | 离散 | 离散 | 离散 | ||||
虚拟空间 | 一维 | 一维 | 一维 | 二维 | 二维 | ||||
使用环境 | 单道 | 多道 | 多道 | 多道 | 多道 | ||||
共享 | 不能 | 不能 | 可以,但限制多 | 可以 | 可以 | ||||
内存扩充 | 交换 | 交换 | 交换 | 虚拟存储器 | 交换 | 虚拟存储器 | 交换 | 虚拟存储器 | |
内存分配单位 | 内存中整个用户分区 | 分区 | 页 | 段 | 页 | ||||
运行条件 | 一次性全部装入内存 | 一次性全部装入内存 | 全部装入内存 | 部分装入内存 | 全部装入内存 | 部分装入内存 | 全部装入内存 | 部分装入内存 | |
地址重定位 | 静态 | 静态 | 动态 | 静态 | 动态 | 静态 | 动态 | 静态 | 动态 |
硬件支持 | 保护用寄存器 | 保护用寄存器,重定位机构 | 地址变换和保护机构 | 同左,增加中断机构 | 地址变换和保护机构 | 同左,增加中断机构 | 地址变换和保护机构 | 同左,增加中断机构 |
交换技术、覆盖技术和虚拟存储器的区别:
参考博客:虚拟存储技术和交换技术的区别_微微辣史密斯维奇的博客-CSDN博客_交换技术和虚拟内存技术的区别
内存覆盖和内存交换_cany1000的博客-CSDN博客_内存覆盖
- 交换:把内存中暂时不能运行的进程或者不用的程序,数据换出到外存上,把外存中具备运行条件的进程或进程所需的程序和数据换入内存。是将程序一次性全部装入。交换是在不同的进程(作业)间的,以进程为单位,若进程所需内存大于系统内存,则该进程无法进入内存。特点:打破了一个进程一旦进入主存就一直运行到结束的限制,但运行的进程大小仍受到主存的限制。
- 虚拟存储器是在进程运行过程中,将作业的数据进行换入换出。虚拟存储器是在一个作业间的,以页或段为单位,即便其整个容量大于内存,仍可以进入内存中运行,因为其部分是可以换出到外存上。
- 覆盖技术也是在同一个程序或进程中的。在程序运行时并非任何进程都要访问程序及数据的各个部分,可以将用户空间划分成若干个覆盖区。将经常活跃的放在固定区,其余部分分段,按照合适时间放到覆盖区,用不到的放在外存中。
大概来说就是将程序划分成一些功能上相对独立的程序段,把那些不会同时运行的程序段共享同一块内存区域。当运行到后续程序就调入内存覆盖前一段。特点:打破了必须将一个进程的全部信息装入内存后才能运行的限制,但是当同时运行程序的主代码量大于内存时仍不能运行。
静态重定位和动态重定位辨析:
静态重定位:
静态重定位是在程序装入内存,在程序执行开始前,其各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。在装入时就对程序里的各种地址、指向等进行修改。
动态重定位:
在程序运行过程中要访问数据时再进程逻辑地址与物理地址的变化,故可以不作任何改动直接装入内存。