当前位置:文档之家› 软件技术基础_存储管理

软件技术基础_存储管理


10000 1000 MOV ax , [2500] 11000 [12500]
2500
365 12500
12500 = 10000+2500
物理地址
基地址
相对地址
C、动态重定位装入方式
装入模块中使用相对地址,装入时不变换地址, 在执行时才完成地址的变换 利用硬件地址变换机构 •方便了模块的动态装入 •动态重定位需特殊的硬件支持——重定位寄存器
(2)程序的链接
– 将任务所需的目标模块链接起来,形成一个完整 的装入模块 – 目标模块使用的地址是相对的,都是从0开始 – 形成统一地址空间的装入模块的过程——链接
0 0 0 目标模块 装入模块 0
A、静态链接
装入模块是完整的,包含所有的目标模块
B、装入时动态链接
装入模块并不包含所有目标模块 由系统装入程序在装入同时找到需要的其它模块,并链接
块号 0 1 … n 作业ID OS 作业1 … 作业n 状态 忙 闲 … 忙
(2)页表(PT)
每个作业一个,记录作业的 页与内存块的关系
页号 0 1 2
块号 2 10 4
页表在作业装入时创建,作业撤销时撤销。 作业被调度时,页表存放在页表控制寄存器PTCR中
(3)作业表(JT)
整个系统一个,记录所 有作业的页表情况。
作业 3 作业 1
作业 1
作业 2
作业 3 作业 4
分配算法(空白分区选择)
1、首次适应FF ( First Fit )
(1)将空白分区按地址递增顺序链接 (2)从链首开始查找适合的分区 (3)从选中的分区中分出所需的大小,其余部分 仍留在空白分区链表里
优先分配内存中低地址部分
优点:简单
缺点:在低地址部分会积累大量外零头
共享内存资源,程序并发执行; 共享内存中公共信息。
共 享
保 护
避免并发执行的程序相互干扰; 避免用户程序侵犯系统区。
三、地址变换
地址是以字节为单位的存储器编号 内存空间(绝对空间):
整个系统内存从0开始以字节为单位编址——物理地址
程序空间(相对空间):
程序由机器代码组成,以字节为单位,每个程序都从0开 始编址——逻辑地址
二、分页管理的基本方法
关键问题: 如何实现页到块的地址变换?
——通过页表实现。 用户程序 页号块号
0 1 2 n 0 3 1 m-2 2 1 n m-1
内存
0 1 2 …
页表
m
1. 页面地址转换
页面地址转换通过下述3种数据结构实现:
(1)存储分块表(MBT)
整个系统一个,记录所有 内存块的状况。
编译
装入 33600H 运行时动态链接
}
内存
2.4.2 连续分配存储管理
特点: – 为一个用户程序分配一个连续的内存空间 – 程序空间本来就是连续的 – 用连续的内存装入连续的程序,减少管理 工作的难度
可分为: – 单一连续区存储管理 – 分区存储管理
单一连续区存储管理
内存分为两个区域:系统区,用户区。
2.4 存储管理
存贮空间 保护 内存的分 配与管理
对主存储器 空间的管理
虚拟存 储技术
地址变换
存储器层次结构
寄存器(register) 命令处理程序 快速缓存(cache) DOS核心 内存(primary storage) 外存(secondary storage)
快速缓存:Cache 内存:DRAM, SDRAM, DRDRAM等; 外存:软盘、硬盘、光盘、磁带等;
JT 作业号 页表大小 页表始址 状态 已分配 J0 20 逻辑地址寄存器
J1
16
1024
已分配
2 页号
10 页内地址
PTCR 页表始址 页表大小
> 越界?
+
页号 块号
2
40
40 10 块号 块内地址 物理地址寄存器
J1的页表
例:设块大小为32,利用下面的页表,将逻辑 地址140变换为物理地址。 页号 块号 解: 0 6 1)逻辑地址——有效地址 1 7 页号=INT[140/32]=4 2 2 页内地址=140%32=12 3 4 2)查页表得到块号为5 4 5 3)物理地址=5×32+12=172 5 10
2、最佳适应BF ( Best Fit )
(1)将空白分区按大小递增顺序链接
(2)从链首开始查找适合的分区
选取最适合的空白分区
优点: 大分区保证 缺点: 效率不高 零头更小
3、最坏适应WF ( Worst Fit )
(1)将空白分区按大小递减顺序链接 (2)从链首开始分配分区
选取分区中最大的一个——最不适合的
存放

逻辑地址
非连续
地址映射

物理地址
一、分页管理的基本思想
页: 将逻辑地址空间划分为大小相同的块,称为
页或虚页面(Page)
块: 将实际物理空间划分为与页大小相等的块,
称为存储块或页框(Page Frame)
一个块可以装入一页 逻辑地址连续的页可以通过地址变换机构映射到 不连续的内存块中 优点: 没有外零头,仅有小于一个页面的内零头
12K
12000H 未分配
固定分区 (大小相同)
Operating System
8M 8M
固定分区 (多种大小)
Operating System 8M 2M 4M 6M
8M 8M 8M
8M
8M
12 M
•优点:易于实现,开销小。
•缺点:
–内零头造成浪费
–分区总数固定,限制了并发执行的程序数目
二、可变分区(动态分区)
2.4.1 存储管理的功能
内存的分配与管理
内存的共享与保护 地址变换
主存的“扩充”——虚拟内存
覆盖与交换技术
一、内存分配与管理
内存分配就是为进程分配内存空间,涉及以下问题: 管理内存分配表:记录分配情况、空闲情况等
放置策略
制定分配策略 调入策略 淘汰策略 制定内存划分方式 等分
不等分
二、内存共享与保护
2.4.3 覆盖与交换技术
引入原因: 在分区管理技术中,程序的地址空 间(逻辑地址空间)可能大于实际 存储器空间,使程序无法装入(无 法运行)。
覆盖(Overlay)
交换(Swapping)
一、覆盖(Overlay)
一段内存区可以先后被不同的程序段重复使用
初始段
常驻区 (非覆盖区) 覆盖区
处理段
虚空间大小 – 虚空间的逻辑大小 = 可寻址范围 – 虚空间的实际大小 = 内存+外存对换区 例:32位操作系统的可寻址范围是232=4GByte
程序的装入和链接
从用户源程序到内存中可执行的代码将经历:
– 编译:
• 完成源程序从高级语言到机器可理解代码的转换 • 根据任务的需要可能形成若干相对独立的目标模块
如果要访问的页不在内存中
——缺页中断处理
对页表扩充:
让系统了解页面状态
页号
块号 存取控1 已修改过
修改位 外存地址
状态位: 0 不在内存
引用位: 0 未访问过 修改位: 0 未修改
缺页中断的处理过程 :
页表 页号 状态位 块号
缺页中断
逻辑地址寄存器 相对地址 页号 页内地址 + 页表始址 页表大小 页表控制寄存器
作业号 页表大小 页表始址 状态 已分配 0 20 未分配 1 16 已分配 2 40
页面地址到物理地址转换过程:
(1) 作业被调度时首先通过JT找到相应页表的起始地址及 大小,并装入PTCR (2)将页号与PTCR中的页表大小进行比较,若页号>页表 大小则为非法访问,产生越界中断;否则为合法访问, 根据页表起始地址和页号找到该页页表表项 (3)通过页表表项找到逻辑页所对应的物理块号,然后将块 号与页内偏移地址结合形成物理地址
应用程序装入到用户区,可使用用户区 全部空间。 最简单,适用于单用户、单任务的OS。 优点:易于管理。 缺点:对要求内存空间少的程序,造成 内存浪费;程序全部装入,很少使用的 程序部分也占用内存。
0xFFF... 用户程序 位于RAM中的 操作系统 ROM中的 设备驱动程序
用户程序 位于RAM中的 操作系统 0 用户程序 0
优点: 查找效率显著提高,一次就找到 缺点: 大作业容纳 能力会下降

“拼接”/“紧缩”技术
多次分配、回收后,形成小空闲区无法使用。 这时需要使用拼接或紧缩技术将已分配分区移 动,使未分配分区合成较大分区。 对占用分区进行内存数据搬移占用CPU时间
如果对占用分区中的程序进行"浮动",则其重 定位需要硬件支持。 紧缩时机:每个分区释放后,或内存分配找不 到满足条件的空闲分区时。
2 3
1 0 1
50
60
块号 块内地址
> 越界?
物理地址寄存器
页面淘汰算法
若缺页中断处理时内存已无空闲分块?
页面置换 (页面淘汰)
页面淘汰算法
抖动 Thrashing
频繁地调进和调出页面,特别是被换出的页面在短时间内又
要被换入,系统开销显著增加,以至于系统吞吐量大大下降
常用页面淘汰算法:
(1) FIFO算法
基本思想: 根据作业任务的大小划分分区,分区 的大小和数目不再固定。
分配区 控制块 空闲区 控制块
AMCB (Allocation Memory Control Block) FMCB (Free Memory Control Block)
分配过程:
作业 1 作业 2 10 K 作业 4 作业 3 2K 1K 3K 4K
• 用户使用绝对地址编程 • 用户了解程序在内存中的存放位置 • 用户控制内存使用情况
相关主题