操作系统东南大学滕至阳chapter(4)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
◆图3-15
41
pw 页号
页号 块号 ┇┇
Bw 块号
图3-15 快表的使用
42
第三章 存储管理
3.4.3.4 性能研究
◆设置快表后访问主存的流程如下:
(1)CPU给出虚地址 (2)按p值联查快表,若找到块号B则转④否则转③ (3)按p值找页表得号B,把p指向的页表表目读入快表,
置换“旧表目” (4)由B、w形成物理地址 (5)访问主存 (6)结束本次访问
32
图3-11 虚空间表与各页表的关系
33
head N-1
N-2 ┅ 0 ^
(a) 空闲块链
001
来自百度文库
10
(b) 位示图 图3-12 主存空闲块表的数据结构
34
块号 0 1 ┇ ┇ ┇ N-1
状态
进程号
页号









n=当前空闲块数
(c) 主存分块表 图3-12 主存空闲块表的数据结构
35
下界寄存器 LR 2000
基址/限长保护法(左)
上下界保护法(右)
17
第三章 存储管理
3.4.2 可变分区
◆根据进程空间的实际大小按需分配主存空间
◆这种管理方法下,主存分区的个数,各区域的
大小,在主存内活动的进程个数等都是随时间而 变化的。所以,可变分区又称为动态分区
图3-5 图3-6
18
PS5 PS4 PS3 PS2 PS1 主存需求量:50K 70K 30K 100K 60K FCFS 估计运行时间: 15 8 20 5 10
以首次适应算法和FBC结构为例,请求大小为 x的自由存储区分配程序如下:
PROCEDURE get_block(x, p); BEGIN i:=1; WHILE (FBC[i].size<>0) AND (FBC[i].size<x) DO i:=i+1; IF FBC[i].size=0 THEN p:=0 ELSE BEGIN
24
第三章 存储管理
3.4.2.3分配/回收程序与优先级考虑
p:=FBC[i].adder; y:=FBC[i].size-x; IF y>= THEN BEGIN
FBC[i].size:=y; FBC[i].adder:=FBC[i].adder+x: END END END
25
第三章 存储管理
28
第三章 存储管理
3.4.2.4 地址变换与保护
基址寄存器 基址
CPU 有效地址寄存器 虚地址
主存 12345
比较电路 越界信号
分区长度
限长寄存器
图3-9 地址变换与保护
29
第三章 存储管理
3.4.2.5 分区共享
◆ 只要2个进程空间包含相同的虚地址 (如Windows 95),物理主存分区即被2 进程所共享。同理,允许多进程共享 分区
0K OS
40K
图3-5 可变分区管理初始状态示例
256K
19
40K
PS1
PS1
60K
100K
PS1
PS1 释放
分配 PS5
50K
PS5
PS2 PS2
PS4
分配
PS4
PS4
100K 释放
PS4 70K
70K
70K
170K
200K
PS3
PS3
PS3
PS3
PS3
30K
230K
30K
30K
30K
30K
256K
21
大小 始址
0 60K 40K
1 30K 170K
2 26K 230K
(a) FBT
主存现状
已分
40K 60K 170K
170K
60K FREE 已分
30K 230K
30K 40K 已分
230K 26K FREE
26K 170K 已分
(b) FBC
始端指针 当前指针 尾端指针
FREE 结点
22
第三章 存储管理
43
第三章 存储管理
3.4.3.5 页面共享
主存
块号
附接的共享页
主存
进程甲的原有页
块5(共享例程第0页)
页号
块号
附接的共享页
进程乙的原有页
页表
图3-16 共享例程的页面
块7(共享例程第1页) 块9(共享例程第2页)
44
第三章 存储管理
3.4.4 段式管理
◆所谓“段(segment)”是指在逻辑上有完整意义的一组
3.4.2.2 分区分配算法
◆首次适应法(First Fit)
找到第1个能满足长度要求的自由区,从中截取所需空间
◆最佳适应法(Best Fit)
从自由区链中挑选能满足申请长度的最小自由区
◆最坏适应法(Worst Fit)
总是挑选最大的自由区分割给申请者
23
第三章 存储管理
3.4.2.3分配/回收程序与优先级考虑
块 11
块 12
密钥
现行PSW ┄2 ┄
正确访问:(密钥=密码) LOAD1块:不违反写保护 STORE1块:不违反读保护
非法访问 STORE2块:违反写保护
LOAD1块:密钥=密码
图3-14 存储键保护法
40
第三章 存储管理
3.4.3.4 性能研究
◆通常在CPU和主存之间增设高速小型的联想寄
存器组,称之为“快表”,用它存放现行进程页 表 中最近常用的部分表目
DWORD flOptions;
// 堆的分配标记
DWORD dwInitialSize;
// 堆的初始长度
DWORD dwMaximumSize; // 堆的最大长度
6
第三章 存储管理
3.2 存储概念和虚存管理 ◆ (2)保留虚空间
LPVOID VirtualAlloc(lpvAddress, cbSize, fdwAllocationType, fdwProtect)
END. 其中x为进程所申请的主存空间大小,p为指向页表的指针。回收算法留3给7 读者
第三章 存储管理
3.4.3.3 地址变换和保护措施 ◆图3-13 ◆图3-14
38
控制寄存器 页表长度 页表始址
有效地址寄存器 pw
块号
块B

w
B

页表
图3-13 页式地址变换
12345 主存
39
密码权限

10
么么么么方面
• Sds绝对是假的
第三章 存储管理
3.4.3.2 主存的分配与回收
PROCEDURE cmalloc(x, p); BEGIN K:=x/Block_size; IF N>=K THEN BEGIN p:=get a PT; // 申请一个页表区 FOR i=1 TO K DO PT[i]:=get a free block END // 申请一个空闲块,把块号添入页表 ELSE p:=0 // 分配失败,返回零
第三章 存储管理
◆存储管理是指主存管理(外存管理见文件系统), 包括给进程分配主存片段,收回进程释放的主 存片段,为分配出去的主存片段提供保护与共 享,以及为作业提供一个虚拟的存储空间
1
第三章 存储管理
3.1 物理主存
◆物理主存简称主存,它是计算机系统中的存储装置
◆个人计算机上通常都配有128MB的RAM,除了操作系 统代码占用一部分外,余者皆为用户区域,由用户进 程瓜分
3.4.2.3分配/回收程序与优先级考虑 ◆回收过程(free_block)
◆回收时要考虑回收的自由区是否与原自由区邻接
图3-8
26
已分配 回收区 已分配
已分配
回收区 已分配
已分配 回收区
已分配
已分配
回收区
已分配
27
第三章 存储管理
3.4.2.3分配/回收程序与优先级考虑
◆ get_block算法越快,系统的性能越好 ◆要研制快速get_block算法并且给予它以 高的优先级以便尽快得到CPU响应
S0 0
1

┋ 段
Si 0 1

┋ 段
S m-i 0 1
┉ ┋
其 他

K0-1
V1={0,1,2,…,2v-1} V2={0段{0,1,2,…,n0},1段{0,1,2,…,n1},…,s段{0,1,2,…,ns}}
9
第三章 存储管理
3.3 地址变换
◆所谓地址变换(又称地址映射)就是把多个V空间映
射到M空间上去,或者说是把虚存地址变换成物理主 存地址
10
第三章 存储管理
3.4 进程空间不大于主存空间的管理
通过存储映射支持共享虚存区域 LPVOID MapViewOfFile(hmapObect, fdwAccess,OffsetHigh,
dwOffsetlow, cbMap)
HANDLE hmapObject; // 存储映射对象的句柄
DWORD fdwAccess;
// 访问模式
DWORD dwOffsetHigh; // 32位地址的高位部分
30
第三章 存储管理
3.4.3 页式管理
◆把进程空间划分成较小的片段(称为页面),把主存
也划分成较小的片段(称为块),使页长等于块长, 恰好1页能占用主存的1块 (图3-10)
3.4.3.1 数据结构 ◆ 图3-11 ◆ 图3-12
31

0

1
0
2
1
3
2
4
进程空间分页
5
6
7
主存分块
图3-10 页式管理示意图
◆从0开始的指令地址和数据段地址组成作业 的地址空间,它是逻辑上的,与主存地址 毫不相干,因此称为虚拟空间或虚拟存储 器。虚存的容量与主存大小无关,它是由 计算机系统的地址结构和寻址方式确定的
4
系统区
进 共享区 程 区 私用区
4GB 512MB
0
FFFFFFFF 00000000
系统 VxD 及 4GB
LPVOID lpvAddress; // 该区虚地址 DWORD cbSize; // 该区域的长度 DWORD fdwAllocationType; // 该区域被指定的类型 DWORD fdwProtect; // 该区域的访问保护即访问权限
7
第三章 存储管理
3.2 存储概念和虚存管理
◆ (3)存储映射文件.最主要的虚存管理特性是
图3-2
11
图3-2 固定分区原理图
12
第三章 存储管理
3.4.1 固定分区
◆由于进程空间(PS)的虚地址是从0开始递增编址的,
因此装入模块在把它装入到分区时,必须把所有 虚地址变换成从分区始址为起点的物理地址,其 变换公式是 :
物理地址=虚地址+分区的始址
13
第三章 存储管理
3.4.1 固定分区 ◆静态重定位(static address relocation) ◆动态重定位(dynamic address relocation)
(a)
(b)
(c)
(d)
20 (e)
第三章 存储管理
3.4.2.1 数据结构
◆有2种数据结构,即自由区表FBT(Free Block Table)
和自由区链FBC(Free Block Chain)供可变分区管理选 用 (图3-7)
◆ FBC的设计技巧在于,它利用自由区本身的空
间记录自由区的大小及前后自由区的位置
时保证其每个物理地址都不超越自己的上下界限
◆ 2种保护法(见图3-4)
◆对上下界保护法满足:(UR)≤物理地址<(LR)
◆对基址/限长保护法满足:(BR)≤物理地址<(BR)+(LR)
16
基址寄存器 BR 1000
限长寄存器 LR 1000
被保护 的区域
PSi
被保护 的区域 主存
上界寄存器 UR 1000
2
存储管理
3.2 存储概念和虚存管理
◆链接工作的实质是按照各个程序段之间的 调用关系把各段的地址统一成从0开始的一维 线性地址。链接既可在作业运行之前,也可 在作业的程序段执行过程中依调用关系动态 地进行。前者称为静态链接,由link程序完 成;后者称为动态链接
3
第三章 存储管理
3.2 存储概念和虚存管理
Windows 系统 DLL 3GB
共享对象
非系统 DLL 2GB
私用地址
空间
未用
4MB
16KB
不可寻址 0
5
第三章 存储管理
3.2 存储概念和虚存管理 ◆ Windows API控制进程的虚拟地址空间
◆ (1)私用堆 用户使用HeapCreate()来产生私用堆空间
HANDLE HeapCreate(flOptions, dwInitialSize, dwMaximumSize)
DWORD dwOffsetLow; // 32位地址的低位部分
DWORD cbMap; // 映射的字节数
8
第三章 存储管理
3.3 地址变换
◆物理主存空间地址是一维线性排列的,不妨记作
M={0,1,2,…,2m-1}, 表示主存容量为2m。例如,当m=23时,主存的容 量为8MB。虚存的一维线性空间和二维线性空间 分别记为:
如图3-3
14
虚址 0
┇ 物址 1000


VR(有效地址寄存器)

虚址 100
Load 1,500
500
┇ 空

虚址 500
12345
物址 1500
┇ 虚址

BR(基址寄存器) 1000
+
图3-3 动态重定位过程示意图
15
第三章 存储管理
3.4.1 固定分区
◆固定分区的保护是指各进程空间在主存内运行
连续编址的代码
◆段由程序员定义、能用<段名·段内符号地址>引用段
内的信息
◆经编译后,<段名·段内符号地址>转换成<段号·段内
位移>
45
第三章 存储管理
3.4.4 段式管理 ◆同一作业内的各段组成二维地址空间V2
图3-17
◆每个分段必须分配在主存的一片地址连 续的
区域内,但各段之间不强求连续主存
46
相关文档
最新文档