目录
一、引言
传统存储管理方法,包括内存空间的分配与回收、地址转换,以及内存扩充技术,并在此基础上引出现代虚拟存储技术。
二、内存空间的分配与回收
三、内存空间的扩充
覆盖技术
覆盖技术是一种早期的内存空间扩充方法,它通过将程序分为多个段来实现。这些段通常包括固定区和若干个覆盖区。固定区包含程序中始终需要驻留在内存中的部分,而覆盖区则包含程序中在不同时间执行的不同部分。
-
工作原理:当程序执行时,操作系统会根据需要将覆盖区的代码段加载到内存中的覆盖区。一旦某个覆盖区的代码执行完毕,操作系统可以将其替换为另一个需要执行的覆盖区代码,从而实现内存空间的重复利用。
-
优点:覆盖技术可以有效地扩充内存空间,允许系统运行大于物理内存的程序。
-
缺点:对用户不透明,需要程序员明确声明覆盖结构,增加了编程的复杂性。此外,覆盖技术的管理开销较大,且可能导致性能下降。
-
应用限制:覆盖技术主要适用于早期的操作系统,随着虚拟内存技术的发展,它已经逐渐被淘汰。
交换技术
交换技术,也称为对换技术,是另一种内存空间扩充方法。它允许系统在内存空间紧张时,将部分内存中的进程暂时换出到外存(通常是硬盘),从而为其他进程腾出空间。
-
工作原理:当内存不足以容纳所有运行中的进程时,操作系统会选择一个或多个进程,将其整个或部分内存映像写入到外存的对换区。这些进程的状态会从运行变为挂起。当需要执行这些进程时,操作系统会将它们从外存换回内存,并恢复其运行状态。
-
优点:交换技术可以动态地管理内存,提高内存利用率,允许系统运行更多的进程。
-
缺点:频繁的换入换出操作会增加系统的开销,可能导致性能下降。此外,交换技术需要足够的外存空间作为对换区。
-
应用场景:交换技术适用于多道程序系统和分时系统,它可以帮助系统在有限的物理内存中运行更多的任务。
四、内存保护与共享
内存保护
内存保护机制是为了防止一个进程无意或恶意地访问或修改另一个进程的内存空间。这是通过硬件和软件的协同工作来实现的。
-
越界检查:系统为每个进程设置了一对寄存器,通常包括基址寄存器和界限寄存器(或上、下限寄存器)。基址寄存器存储了进程内存空间的起始地址,而界限寄存器则存储了进程内存空间的大小。
-
工作原理:当进程试图访问内存时,硬件会自动检查访问地址是否在基址寄存器和界限寄存器定义的范围内。如果访问请求超出了这个范围,系统会触发一个异常,通常是保护故障,从而防止进程访问不属于它的内存空间。
-
优点:内存保护确保了系统的稳定性和安全性,防止了进程间的相互干扰。
-
缺点:实现内存保护需要额外的硬件支持,可能会增加系统的复杂性。
内存共享
内存共享允许多个进程访问相同的内存区域,这对于提高效率和资源利用率非常重要。以下是几种实现内存共享的方法:
-
方法一:通过操作系统传达
- 工作原理:操作系统维护一个共享内存表,当进程需要访问共享内存时,它通过系统调用请求操作系统介入。操作系统然后检查权限并允许或拒绝访问。
- 优点:控制力强,可以精细化管理共享内存的访问权限。
- 缺点:每次访问共享内存都需要操作系统介入,增加了系统负担。
-
方法二:在所有分区保存共享代码/数据
- 工作原理:系统在每个需要访问共享内存的分区中保存一份共享代码或数据的副本。
- 优点:简化了访问控制,因为每个分区都有共享数据的副本。
- 缺点:浪费内存空间,因为相同的代码或数据被多次存储。此外,如果共享数据被多个进程修改,可能会导致数据不一致。
-
方法三:修改基址/界限寄存器
- 工作原理:系统通过修改基址寄存器和界限寄存器,允许一个进程访问另一个进程的内存空间。
- 优点:可以实现高效的内存共享,因为不需要复制数据。
- 缺点:实现复杂,需要特定的硬件支持,并且可能增加系统开销。此外,不当的管理可能导致安全问题。
五、虚拟存储技术
传统存储管理方法虽然在一定程度上解决了内存空间的问题,但仍然存在诸多局限性。随着计算机技术的发展,虚拟存储技术应运而生。虚拟存储技术通过将内存与外存相结合,为用户提供一个比实际物理内存大得多的虚拟内存空间,从而提高内存利用率和系统性能。