CH4 存储管理存储管理有下面几个方面的功能:
l 主存储空间的分配和去配 。
l 地址转换和存储保护 。
l 主存储空间的共享 。
l 主存储空间的扩充 。
4.1 主存储器
4.1.1 存储器的层次寄存器高速缓存主存储器磁盘缓存固定磁盘可移动存储介质例如,某台计算机的存储器层次其配置如下:
CPU中的寄存器 100个字;高速缓存
512KB,存取周期 15ns;
主存储器 128MB,存取周期 60ns;
磁盘容量 20GB,存取周期毫秒级;
后援存储容量 1TB,存取周期秒级。
4.1.3 快速缓存 (Chaching)
快速缓存 Caching
Cache的管理
Cache数据的一致性问题
4.1.4 地址转换与存储保护
逻辑地址(相对地址) 与 物理地址(绝对地址)
地址转换或重定位
存储保护
4.2 连续存储空间管理
4.2.1 单用户连续存储管理单用户连续存储管理的地址转换多采用静态定位栅栏寄存器重定位和存储保护操作系统区作业 i的程序、数据等界限地址栅栏寄存器作业 2
作业 1
界限地址 + 逻辑地址装入程序单用户连续存储管理只适合单道程序系统,采用这种管理有几个主要缺点:
l当正在执行的程序因等待某个事件,比如,等待从外部输入数据,处理器便处于空闲状态;
l不管用户作业的程序和数据量的多少,
都是一个作业独占主存储空间,这就可能降低存储空间的利用率;
l计算机的外围设备利用率不高 。
动态重定位的单连续存储管理操作系统区用户区界限地址定位寄存器逻辑地址
CPU
绝对地址
4.2.2 固定分区存储管理
分区存储管理的基本思想是给进入主存的用户进程划分一块连续存储区域,把进程装入该连续存储区域,使各进程能并发执行,这是能满足多道程序设计需要的最简单的存储管理技术 。
固定分区存储管理是预先把可分配的主存储器空间分割成若干个连续区域,每个区域的大小可以相同,也可以不同。
操作系统区( 8K)
用户分区 1( 8K)
用户分区 2( 16K)
用户分区 3( 16K)
用户分区 4( 16K)
用户分区 5( 32K)
用户分区 6( 32K)
固定分区存储管理的地址转换可以采用静态定位方式
固定分区存储管理的地址转换也可以采用动态定位方式固定分区存储管理的地址转换和存储保护
B下限寄存器逻辑地址
CPU
绝对地址操作系统区用户分区 1
用户分区 2
用户分区 3
B+L2上限寄存器
<B+L2
越界中断用户分区 1
用户分区 2
用户分区 3
作业进入分区有两种排队策略,
一是每个分区排一个等待处理的队列,随着等待处理作业大小不均,导致有的分区空闲而有的分区忙碌 ;
二是所有等待处理的作业排成一个进程队列,当调度其中一个进入分区运行时,选择可容纳它的最小可用分区,以充分利用主存。
4.2.3 可变分区存储管理
4.2.3.1 主存空间的分配和去配可变分区 (variable partition) 存储管理是按作业的实际大小来划分分区。
由于分区的大小是按作业的实际需要量来定的,且分区的个数也是随机的,所以可以克服固定分区方式中的主存空间的浪费,有利于多道程序设计,实现了多个作业对内存的共享,进一步提高了内存资源利用率 。
采用可变分区方式的主存分配示例如图操作系统作业 1
空闲区作业 2
空闲区
4K
10K
46K
52K
128K
操作系统作业 1
空闲区作业 2
空闲区
4K
10K
40K
46K
52K
128K
作业 3
操作系统作业 1
空闲区
4K
10K
40K
128K
作业 3
主存分配表可由两张表格组成,一张称”已分配区表”,
另一张是”未分配区表”
可变分区的回收算法较为复杂,当一个进程
X撤离时,可分成以下四种情况,其邻近都有进程 (A和 B),一边有进程 (A或 B),两边均为空闲区 (黑色区域 )。 回收后如下图 4-9右边所示,同时应修改主存分配表或链表 。
A X B A B
A X A
X B B
变为变为变为变为 少李二了二大削少一
X终止前 X终止后采用链表是较好的另一种空闲区管理方法
每个内存空闲区的开头单元存放本空闲区长度及下一个空闲区的起始地址,于是所有的空闲区都被链接起来,系统设置一个第一块空闲区地址指针,让它指向第一块空闲区的地址 。 使用时,
沿链查找并摘下一个长度能满足申请要求的空闲区交给进程,修改链接 ;归还时,把空闲区链入空闲区链即可 。 空闲区链表管理比空闲区表格管理较为复杂,但其优点是链表自身不占用存储单元 。
常用的可变分区管理的分配算法有:
1)最先适用分配算法
2)最优适应分配算法
3)最坏适应分配算法三种查找和分配算法比较
4.2.3.2 地址转换与存储保护基址基址寄存器逻辑地址
CPU
绝对地址操作系统区空闲分区 1
用户作业 1
空闲分区 2
限长限长寄存器
<限长越界中断多对基址 /限长寄存器
允许一个进程占用两个或多个分区 。 可以规定某对基址 /限长寄存器的区域是共享的,用来存放共享的程序和常数,当然对共享区域肠的信息只能读出不能写入 。 于是几个进程共享的例行程序就可放在限定的公用区域中,而让进程的共享部分具有相同的基址 /限长值就行了 。
4.2.3.3 移动技术操作系统作业 1
空闲区作业 2
空闲区作业 3
空闲区操作系统作业 1
作业 2
作业 3
空闲区操作系统作业 1
作业 2
作业 3
空闲区作业 4
有关 移动问题讨论
移动条件
移动时机
动态申请 主存 产生的死锁
赶进 /赶出与映象区