存储管理功能

上传人:1888****888 文档编号:39568178 上传时间:2021-11-11 格式:PPT 页数:54 大小:295KB
收藏 版权申诉 举报 下载
存储管理功能_第1页
第1页 / 共54页
存储管理功能_第2页
第2页 / 共54页
存储管理功能_第3页
第3页 / 共54页
资源描述:

《存储管理功能》由会员分享,可在线阅读,更多相关《存储管理功能(54页珍藏版)》请在装配图网上搜索。

1、第六章 存储管理 存储管理功能 内存资源管理 存储管理方式 外存空间管理 虚拟存储系统 6.1 存储管理功能 存储分配和去配 分配去配对象 内存、外存(相同方法) 分配去配时刻 进程创建、撤销、交换、长度变化 存储共享 目的:节省内存、相互通讯 内容:代码、数据 存储保护 防止地址越界 防止操作越权 6.1 存储管理功能(Cont.) 存储扩充 内存、外存结合,虚拟存储体系 速度接近内存,容量相当外存 地址映射 逻辑地址=物理地址 硬件支持 基址寄存器(base)、限长寄存器(limit)、快表; 使用上述寄存器完成地址映射过程; 不能正常完成地址映射时产生中断。 6.2 内存资源管理 6.2

2、.1 内存分区 分区时刻 静态分区:系统初始化时分; 动态分区:申请时分。 分区大小 等长分区:2i 异长分区:依程序、程序单位、对象大小。 通常作法 静态+等长(页式、段页式) 动态+异长(段式、界地址) 6.2.2 内存分配 静态等长分区的分配 字位映象图 空闲页面表 空闲页面链 动态异长分区的分配 最先适应 (First Fit) 最佳适应 (Best Fit) 最坏适应 (Worst Fit) 字位映象图(bit map) 1 0 0 1 . 1 0 第0 页 第2 页 第1 页 第 k 页 第 n 页 . . 分配:自头寻找第一个为0的位,改为1,返回页号; 去配:页号对应的位(bi

3、t)置为0。 用一个bit代表一页状态,0表空闲,1表占用。( 多单元) 空闲页面表 首页号 空页数 . . . . 120 4 特点:可以分配连续页面。 占用 占用 120页 121页 122页 123页 . . 空闲页面链 占用 占用 占用 Head: 优点:节省空间。 (不适合管理外存) 动态异长分区的分配 空闲区首址 空闲区长度 . . . . 2500 1500 数据结构: Criteria: 尽量使空闲区域连续。 初始时一个连续空闲区。 长度=0为表尾。 最先适应算法(First Fit) 空闲区首址 空闲区长度 128 64 1024 256 32 256 0 . . 空闲区:首

4、址递增排列; 申请:取第一个可满足区域; 优点:尽量使用低地址空间, 高区保持大空闲区域。 缺点:可能分割大空闲区。 Eg. 申请32将分割第 一个区域。 最佳适应算法(Best Fit) 空闲区:首址递增排列; 申请:取最小可满足区域; 优点:尽量使用小空闲区, 保持大空闲区。 缺点:可能形成碎片 (fragment)。 Eg. 申请30将留下长 度为2的空闲区。 空闲区首址 空闲区长度 128 64 1024 256 32 256 0 . . 最坏适应算法(Worst Fit) 空闲区:首址递增排列; 申请:取最大可满足区域; 优点:防止形成碎片。 缺点:分割大空闲区域。 空闲区首址 空闲

5、区长度 128 64 1024 256 32 256 0 . . UNIX存储分配-FF struct map char *m_size; char *m_addr; ; struct map coremapCMAPSIZ; struct map swapmapSMAPSIZ; define CMAPSIZ 100 define SMAPSIZ 100 malloc(mp,size) struct map, *mp; register int a; register struct map *bp; for(bp = mp; bp-m_size; bp+) if (bp-m_size = siz

6、e) a=bp-m_addr; bp-m_addr =+ size; if (bp-m_size =- size) = 0) do bp+; (bp-1)-m_addr = bp-m_addr; while(bp-1)-m_size = bp-m_size); return(a); return(0); mfree(mp,size,aa) struct map *map; register struct map bp; register int t,a; a = aa; for(bp=mp; bp-m_addrm_size !=0; bp+); if(bpmp & (bp-1)-m_addr+

7、(bp-1)-m_size = a) /与前合并 (bp-1)-m_size =+ size; if (a+size = bp-m_addr) /前后合并 (bp-1)-m_size =+ bp-m_size; while (bp-m_size) bp+; (bp-1)-m_addr = bp-m_addr; (bp-1)-m_size = bp-m_size; else if (a+size = bp-m_addr & bp-m_size) /与后合并 bp-m_addr =- size; bp-m_size =+ size; else if (size) do /无合并 t = bp-m_

8、addr; bp-m_addr = a; a = t; t = bp-m_size; bp-m_size = size; bp+; while (size = t); 6.2.3 碎片处理 紧凑:移动占用区域,使所有空闲区域连成一片(开销很大)。 OS P1(248k) P2(250k) 8k 6k 4k 256k: 512k: 768k: 264k: 518k: P1 OS P2 256k: 504k: 754k: 18k 6.3 存储管理方式 界地址管理方式(一维地址) 页式管理方式(一维地址) 段式管理方式(二维地址) 段页式管理方式(二维地址) 6.3.1 界地址管理方式 4.3.1.

9、1 基本原理 1. 内存空间划分:动态异长; 2. 进程空间划分:一个进程一个区域,逻辑地址0l-1 3. 进程空间与内存空间对应关系(可以浮动): 0: l-1: . . b: l b+l-1: 进程空间 内存空间 6.3.1 界地址管理方式 4. 所需表目: (1)内存分配表-在PCB中; (2)空闲区域表:array of (addr,size)。 5. 所需寄存器: (1)基址寄存器; (2)限长寄存器。 6. 地址映射: 6.3.1 界地址管理方式 0: l-1: . . b: l b+l-1: l b 逻辑地址 CP + a a+b 步骤:(1) 由程序确定逻辑地址a; (2) a

10、与l比较判断是否越界, 不满足:0al-1,越界; (3) a与b相加得到物理地址。 进程空间 内存空间 6.3.1 界地址管理方式 6.3.1.2 双对界 代码:一对界 数据:一对界 6.3.1.3 交换技术(swapping) 例:UNIX 交换进程sched (#0) 交换原则:外存 SRUN 状态进程内存 (1)内存有空间,直接移入; (2)内存空间不够,移出SWAIT, SSTOP状态进程; (3)如果还不够,移出SSLEEP, SRUN状态进程, 条件:在外时间3秒;在内时间2秒。 b1 l1 b2 l2 6.3.2 分页式存储管理(paging) 6.3.2.1 基本原理 1.

11、内存空间划分:静态等长,2i, 称为一个页架。 . . 第0页 第1页 第k页 第2n-i-1页 2i 02i: 12i: k2i: (2n-i-1)2i: 物理地址=页架首址+页内地址 =页架号 2i +页内地址 = 页架号 页内地址 i位 n-i位 6.3.2 分页式存储管理 2. 进程空间划分:静态等长,2i, 称为一个页面。 . . 第0页 第1页 第k页 第l-1页 2i 02i: 12i: k2i: (l-1)2i: 逻辑地址=逻辑页首址+页内地址 =逻辑页号 2i +页内地址 = 逻辑页号 页内地址 i位 3. 进程空间与内存空间对应关系 . 第0页 第1页 第2页 第3页 第1

12、6页 第22页 第32页 第15页 . . . 进程空间 内存空间 4. 所需表目: (1)页表,每个进程一个 物理页号 逻辑页号: 15 22 16 32 0 1 2 3 5. 所需寄存器 (2)总页表:系统一个 (1) 页表首址寄存器: b l (2) 页表长度寄存器: 系统一个 系统一个 (3) 快表:系统一组: 逻辑页号 页架号 . . . . f p 逻辑地址(p,d)物理地址(f,d) (1) 由程序确定逻辑地址(p,d); (2) 由p查快表得页架号f; 如查不到: (a) 由p与l比较,判别是否越界: 不满足:0pl-1,越界; (b) 由p和b查页表得f, (p,f)快表,如

13、满淘汰一个; (c) 转(2); (3) f与d合并得物理地址 6. 地址映射 : (p,d)(f,d) . 逻辑页号 页架号 . . . . f p l b b l . . PCB 页架号 逻辑页号 . f . p . f d p d + cp p f 物理地址 逻辑地址 b: . 6.3.2.2 多级页表 提出背景 进程虚拟空间大幅度增加 单级页表需要很大连续内存空间 多线程设计导致进程虚拟空间不连续性 页表所占内存空间浪费 例如 32位进程地址空间,页长4k(占12位),页号20位,页表需要220个入口! 解决策略 二级或多级页表 Two-Level Page-Table Scheme

14、Two-Level Paging Example A logical address (on 32-bit machine with 4K page size) is divided into: a page number consisting of 20 bits. a page offset consisting of 12 bits. Since the page table is paged, the page number is further divided into: a 10-bit page number. a 10-bit page offset. Thus, a logi

15、cal address is as follows: where pi is an index into the outer page table, and pj is the displacement within the page table. page number page offset pi pj d 10 10 12 Address-Translation Scheme Address-translation scheme for a two-level 32-bit paging architecture Even though time needed for one memor

16、y access is quintupled, caching permits performance to remain reasonable 6.3.2.3 反置页表(inverted page table) 传统页表面向进程空间 每个进程逻辑页面有一表项 当进程空间很大时,页表很大 反置页表面向内存空间 每个内存页架一个表项 大小固定 反置页表-工作原理 程序 物理 内存 pid p f d pid p d f 逻辑地址 物理地址 反置页表 速度问题 反置页表查找 由表头起始,平均为表长度的一半 速度慢 解决方案 在反置页表前增加一级杂凑表 查找杂凑表与反置页表需要两次访问内存 为进一步

17、提高速度,快表缓冲 1. 内存空间划分:动态异长,每区一段。 段首址+段内地址 物理地址= b: l b+d 6.3.3 分段式存储管理(segmentation) 2. 进程空间划分:若干段,每段一个程序单位。 调用x段e f: 访问d段a e: 调用y段f main(段号0) X(段号1) Y(段号2) D(段号3) a: 0 80k-1 0 . 40k-1 0 20k-1 0 60k-1 逻辑地址= 段号 段内地址 (二维地址) main x y d 3. 对应关系 40k 60k 80k 20k . . . . 进程空间 内存空间 100k: 200k: 300k: 320k: 4.

18、所需表目 (1) 段表:每进程一个 段首址 段长度 100k 40k 80k 60k 段号 0: 1: 2: 3: 20k 200k 320k 300k (2) 空闲表:系统一个 array of (addr,size) 5. 所需寄存器 (1) 段表首址寄存器: b l (2) 段表长度寄存器: 系统一个 系统一个 (3) 快表:系统一组: 段号 段首址 段长度 . . . . l s . b . 6. 地址映射 : (s,d)(b+d) 逻辑地址(s,d)物理地址(b+d) (1) 由程序确定逻辑地址(s,d); (2) 由s查快表得b和l 如查不到: (a) 由s与l比较判断是否越界 不

19、满足:0sl-1,越界; (b)由s和b查段表,得b和l (s,b,l)快表, 如快表满淘汰一个; (c) 转(2) (3) 由d与l比较,判断是否越界 不满足:0dl-1,越界; (4) 由bd得物理地址。 段号 段长 段首址 . . . . l b s l b b l . . PCB 段长 段首址 段号 . l b . s . b+d 物理地址 s d 逻辑地址 . cp + b: 若快表查不到 段号 段长 段首址 . . . . l b s l b b l . . PCB 段长 段首址 段号 . l b . s . b+d 物理地址 s d 逻辑地址 . s l b cp + b: +

20、cp 6.3.3.2 段的共享 段长 段首址 . b l . . 段号 si . P1段表: 段长 段首址 . b l . . 段号 sj . P2段表: 共享段 . . b: l 内存空间 如何实现? 共享段表 段名 共享记数 段长 段首址 其它 . vi 3 35k 125k ? . 共享段表: 进程段表(n)共享段表(1)共享段(1) 例子:UNIX正文段(text段) struct text int x_daddr; /*disk address int x_caddr; /*core address, if loaded int x_size; /*size(64) int *x_i

21、ptr; /*inode pointer char x_count; /*reference count char x_ccount; /*number of loaded reference; textNTEXT; define NTEXT 40 struct proc int *p_textp; /*pointer to text structure; struct user int u_tsize; 6.3.3.2 段的保护 (1) 段表的改进: 段长 段首址 . . . l b 1 0 1 段号 s . 访问权限 R W E . . . 段号 段长 段首址 . . . s l b 1

22、0 1 访问权限 R W E (2) 快表的改进: . . . 6.3.4 段页式存储管理(segmentation with paging) 段式优于页式 便于共享和保护 页式由于段式 消除“碎片”问题 段页式:结合二者优点 每个进程包含若干段 每个段包含若干页 6.3.4.1 基本原理 1. 内存空间划分:(同页式) 静态等长,2i, 称为一页。 物理地址=(页架号,页内地址)=(f,d) 2. 进程空间划分: 一个进程若干个段 一个段若干个页 逻辑地址=(段号, 逻辑页号, 页内地址)=(s,p,d) 3. 对应关系: 0页 1页 2页 0页 1页 第1段: 0页 1页 2页 第0段:

23、第2段: 25页 26页 27页 28页 29页 30页 31页 32页 33页 . . 内存空间 进程空间 4. 所需表目 (1) 段表:每个进程一个 页表首址 页表长度 . b l . 段号 0 . s . l-1 (2)页表:每个段一个 逻辑页号 0 p l-1 页架号 . f . (3) 总页表:系统一个 5. 所需寄存器 (1)段表基址寄存器:保存正运行程度段表首址; (2)段表限长寄存器:保存正运行程序段表长度。 (3)快表:一组联想寄存器 (快段表+快页表) 段号 逻辑页号 页架号 . s p f . b l 6. 地址映射 (P.141) : (s,p,d)(f,d) 逻辑地址(s,p,d)物理地址(f,d) (1) 由程序确定逻辑地址; (2) 由(s,p)查快表得f; 如找不到: (a) 由s与l比较判断是否越界: 不满足:0sl-1, 越界 (b) 由s和b查段表得页表(b,l) (c) 由p与l比较判断是否越界: 不满足:0pl-1, 越界 (d) 由b与p查页表得f (s,p,f)快表,若快表已满,淘汰一个 (e) 转(2) (3) 由f与d合并得物理地址(f,d)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!