3.3 存储器管理
3.3.1 存储管理概述
问题的提出:
n 计算机处理的数据和程序都是存放在外存中,使用时才调入内存。
n 调入内存过程中如何分配存储空间?
n 多个程序的存储空间怎样分配?
n 在小内存中能否运行大程序?
n 同一程序多次装入内存其地址相同吗?即如何解决程序的重定位问题?
n 怎样解决存储保护?
(1)存储器管理的功能
主要有4个功能:
n 存储分配。按分配策略和算法分配主存空间;
n 地址变换。将程序在外存中的逻辑地址转换为在内存中的物理地址;
n 存储保护。保护各类程序(系统的、用户的、应用程序的)及数据区免遭破坏;
n 存储扩充。解决在小的存储空间中运行大程序的问题,即虚拟存储问题。
(2)存储分配
n 直接分配 在源程序中直接使用主存的物理地址。对用户要求高、使用不方便、易出错。早期计算机系统中使用。
n 静态分配 在装入内存前,一次性说明程序所需要的地址空间。确定后在整个程序执行过程中不再改变。简单、利用率低、难于实现多道程序对资源的共享。
n 动态分配 在程序被装入主存或在执行过程中,才确定其存储分配。管理复杂、但利用率高,容易实现主存的资源共享。
在现代操作系统中,主要采用动态分配方式。
(3)地址变换
由源程序中的符号名空间→目标程序的逻辑地址空间→主存中的物理地址空间。
(4)存储保护
n 内存中存放了各类程序。为确保它们在各自的存储区内独立运行,互不干扰,系统必须提供安全保护功能。
n 用“分隔法”把各类程序使用区域隔开,使得各类程序之间不可能发生有意或无意的损害行为。
n 存储区域划分为:用户区域和系统区域
(5)存储扩充
如何在有限的主存空间中,处理大于主存的程序。
扩充主存常用的有效方法:
ü “自动覆盖”技术:采用分段方法,将大的程序划分为在主存中可以容纳的独立的逻辑段。每次只调入其中的一段进行处理。后调入的程序使用前面程序使用过的存储空间。
ü &