




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章第六章 存储管理存储管理n存储管理功能存储管理功能n内存资源管理内存资源管理n存储管理方式存储管理方式n外存空间管理外存空间管理n虚拟存储系统虚拟存储系统 6.1 存储管理功能存储管理功能n存储分配和去配存储分配和去配n分配去配对象分配去配对象n内存、外存内存、外存(相同方法相同方法)n分配去配时刻分配去配时刻n进程创建、撤销、交换、长度变化进程创建、撤销、交换、长度变化(栈溢出栈溢出, execl)n存储共享存储共享n目的:节省内存、相互通讯目的:节省内存、相互通讯n内容:代码、数据内容:代码、数据n存储保护存储保护n防止地址越界防止地址越界n防止操作越权防止操作越权6.1 存储管理功
2、能存储管理功能(Cont.)n存储扩充存储扩充n内存、外存结合,虚拟存储体系内存、外存结合,虚拟存储体系n速度接近内存,容量相当外存速度接近内存,容量相当外存n地址映射地址映射n逻辑地址逻辑地址=物理地址物理地址n硬件支持硬件支持n基址寄存器基址寄存器(base)、限长寄存器、限长寄存器(limit)、快表;、快表;n使用上述寄存器完成地址映射过程;使用上述寄存器完成地址映射过程;n不能正常完成地址映射时产生中断。不能正常完成地址映射时产生中断。6.2 内存资源管理内存资源管理n6.2.1 内存分区内存分区n分区时刻分区时刻n静态分区:系统初始化时分;静态分区:系统初始化时分;n动态分区:申请
3、时分。动态分区:申请时分。n分区大小分区大小n等长分区:等长分区:2in异长分区:依程序、程序单位、对象大小。异长分区:依程序、程序单位、对象大小。n通常作法通常作法n静态静态+等长(页式、段页式)等长(页式、段页式)n动态动态+异长(段式、界地址)异长(段式、界地址)6.2.2 内存分配内存分配n 静态等长分区的分配静态等长分区的分配n 字位映象图字位映象图n 空闲页面表空闲页面表n 空闲页面链空闲页面链n动态异长分区的分配动态异长分区的分配n最先适应最先适应 (First Fit)n最佳适应最佳适应 (Best Fit)n最坏适应最坏适应 (Worst Fit)位示图(位示图(bit ma
4、p)1 0 0 1 . 1 0第第0 页页第第2 页页第第1 页页第第 k 页页第第 n 页页.分配:自头寻找第一个为分配:自头寻找第一个为0的位,改为的位,改为1,返回页号;,返回页号;去配:页号对应的位去配:页号对应的位(bit)置为置为0。用一个用一个bit代表一页状态,代表一页状态,0表空闲,表空闲,1表占用。(表占用。( 多单元)多单元)空闲页面表空闲页面表首页号首页号空页数空页数.1204特点:可以分配连续页面。特点:可以分配连续页面。 DMA 要求要求占用占用占用占用120页页121页页122页页123页页 . .空闲页面链空闲页面链占用占用占用占用占用占用Head:优点:节省空
5、间。优点:节省空间。 (不适合管理外存)(不适合管理外存)动态异长分区的分配动态异长分区的分配空闲区首址空闲区首址空闲区长度空闲区长度.25001500数据结构:数据结构:Criteria: 尽量使空闲区域连续。尽量使空闲区域连续。初始时一个连续空闲区。初始时一个连续空闲区。长度长度=0为表尾。为表尾。最先适应算法(最先适应算法(First Fit)空闲区首址空闲区首址空闲区长度空闲区长度128641024256322560.空闲区:首址递增排列;空闲区:首址递增排列;申请:取第一个可满足区域;申请:取第一个可满足区域;优点:尽量使用低地址空间,优点:尽量使用低地址空间, 高区保持大空闲区域。
6、高区保持大空闲区域。缺点:可能分割大空闲区。缺点:可能分割大空闲区。 Eg. 申请申请32将分割第将分割第 一个区域。一个区域。下次适应算法(下次适应算法(Next Fit, NF)n思想:自上次分配空闲区域的下一个位置开始选取第一个可满足的空闲区域n实现:设置一个循环查找指针,开始时指向表头,每次分配从该指针处开始查找(若查到表尾则将指针置到表头)第一个遇到的可满足的区域,分配后将指针调整为所分配区域的下一个区域处。n优点:可以减少查找空闲区域所花费的时间开销,并使空闲区域分布更均匀。n缺点:可能分割大空闲区最佳适应算法(最佳适应算法(Best Fit)空闲区:首址递增排列;空闲区:首址递增
7、排列;申请:取最小可满足区域;申请:取最小可满足区域;优点:尽量使用小空闲区,优点:尽量使用小空闲区, 保持大空闲区。保持大空闲区。缺点:可能形成碎片缺点:可能形成碎片 (fragment)。 Eg. 申请申请30将留下长将留下长 度为度为2的空闲区。的空闲区。 空闲区首址空闲区首址空闲区长度空闲区长度128641024256322560.最坏适应算法(最坏适应算法(Worst Fit)空闲区:首址递增排列;空闲区:首址递增排列;申请:取最大可满足区域;申请:取最大可满足区域;优点:防止形成碎片。优点:防止形成碎片。缺点:分割大空闲区域。缺点:分割大空闲区域。空闲区首址空闲区首址空闲区长度空闲
8、区长度128641024256322560.UNIX存储分配存储分配-FFstruct map char *m_size; char *m_addr;struct map coremapCMAPSIZ;struct map swapmapSMAPSIZ;define CMAPSIZ 100define SMAPSIZ 100malloc(mp,size)struct map, *mp; register int a; register struct map *bp; for(bp = mp; bp-m_size; bp+) if (bp-m_size = size) a=bp-m_addr;
9、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+(bp-1)-m_size
10、= 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 =
11、bp-m_addr; bp-m_addr = a; a = t; /a与与bp-m_addr交换交换 t = bp-m_size; bp-m_size = size; bp+; /size与与bp-m_size交换交换 while (size = t); 6.2.3 碎片处理碎片处理紧凑:移动占用区域,使所有空闲区域连成一片(开销很大)。紧凑:移动占用区域,使所有空闲区域连成一片(开销很大)。 OS P1(248k) P2(250k) 8k 6k 4k256k:512k:768k:264k:518k: P1 OS P2256k:504k:754k:18k6.3 存储管理方式存储管理方式n界地址
12、管理方式(一维地址)界地址管理方式(一维地址)n页式管理方式(一维地址)页式管理方式(一维地址)n段式管理方式(二维地址)段式管理方式(二维地址)n段页式管理方式(二维地址)段页式管理方式(二维地址)6.3.1 界地址管理方式界地址管理方式4.3.1.1 基本原理基本原理 1. 内存空间划分:动态异长;内存空间划分:动态异长; 2. 进程空间划分:一个进程一个区域,逻辑地址进程空间划分:一个进程一个区域,逻辑地址0 l-1 3. 进程空间与内存空间对应关系(可以浮动):进程空间与内存空间对应关系(可以浮动):0:l-1:.b:lb+l-1:进程空间进程空间内存空间内存空间6.3.1 界地址管理
13、方式界地址管理方式 4. 所需表目:所需表目: (1)内存分配表内存分配表-在在PCB中;中; (2)空闲区域表:空闲区域表:array of (addr,size)。 5. 所需寄存器:所需寄存器: (1)基址寄存器基址寄存器b: 保存运行进程起始地址;保存运行进程起始地址; (2)限长寄存器限长寄存器l: 保存运行进程长度保存运行进程长度。 6. 地址映射:地址映射:6.3.1 界地址管理方式界地址管理方式0:l-1:.b:lb+l-1:lb逻辑地址逻辑地址CP+ab+a步骤:步骤:(1) 由程序确定逻辑地址由程序确定逻辑地址a; (2) a与与l比较判断是否越界,比较判断是否越界, 不满
14、足:不满足:0 a l-1,越界;,越界; (3) a与与b相加得到物理地址。相加得到物理地址。进程空间进程空间内存空间内存空间6.3.1 界地址管理方式界地址管理方式6.3.1.2 双对界双对界 代码代码(I空间空间):一对界:一对界 数据数据(D空间空间):一对界:一对界经典经典UNIX将进程空间分为将进程空间分为I空间和空间和D空间,前者对应指令空间,前者对应指令地址,后者对应数据地址。硬件能够识别逻辑地址所属空地址,后者对应数据地址。硬件能够识别逻辑地址所属空间,并使用对应的地址映射寄存器。间,并使用对应的地址映射寄存器。 b1l1b2l26.3.1 界地址管理方式界地址管理方式6.3
15、.1.3 交换技术交换技术(swapping)n交换又称换进换出,是指进程在内外存之间的动态调交换又称换进换出,是指进程在内外存之间的动态调度,主要为了缓解内存空间不足的有效方法。度,主要为了缓解内存空间不足的有效方法。n当外存储器中有可运行进程时,系统试图将其调入内存;当外存储器中有可运行进程时,系统试图将其调入内存;n当内存空间紧张时,系统将内存中的某些进程,尤其是暂时当内存空间紧张时,系统将内存中的某些进程,尤其是暂时不可运行的进程移出到外存;不可运行的进程移出到外存;例:例:UNIX 交换进程交换进程sched (#0) 交换原则:外存交换原则:外存 SRUN 状态进程状态进程内存内存
16、 (1)内存有空间,直接移入;内存有空间,直接移入; (2)内存空间不够,移出内存空间不够,移出SWAIT, SSTOP状态进程;状态进程; (3)如果还不够,移出如果还不够,移出SSLEEP, SRUN状态进程,状态进程, 条件:在外时间条件:在外时间 3秒;在内时间秒;在内时间 2秒秒6.3.1 界地址管理方式界地址管理方式n重定位:被换出进程再次运行之前必须重新装入内重定位:被换出进程再次运行之前必须重新装入内存,而再次进入内存的位置与换出前的位置一般不存,而再次进入内存的位置与换出前的位置一般不同,这就要求程序编址与内存存放位置无关,这种同,这就要求程序编址与内存存放位置无关,这种程序
17、称为可重定位程序。程序称为可重定位程序。n由由0起始编址的程序都满足重定位要求,这样的程起始编址的程序都满足重定位要求,这样的程序也称为浮动程序。序也称为浮动程序。6.1.3.4覆盖技术覆盖技术: 将较大程序装入较小进程空间的技术将较大程序装入较小进程空间的技术.n只将全局代码和数据静态装入内存只将全局代码和数据静态装入内存, 其它部分动态其它部分动态装入装入.n后装入的成分重复使用先装入成分所使用的存储区后装入的成分重复使用先装入成分所使用的存储区, 即覆盖先装入的成分即覆盖先装入的成分.覆盖技术覆盖技术符号表符号表公共例程公共例程覆盖驱动程序覆盖驱动程序覆盖区覆盖区50kbPass130k
18、bPass250kbPass340kbPass425kb6.3.2 分页式存储管理分页式存储管理(paging)6.3.2.1 基本原理基本原理 1. 内存空间划分:静态等长,内存空间划分:静态等长,2i, 称为一个页框(称为一个页框(frame)。 .第第0页页第第1页页第第k页页第第2n-i-1页页2i0 2i:1 2i:k 2i:(2n-i-1) 2i:物理地址物理地址=页架首址页架首址+页内地址页内地址 =页架号页架号 2i +页内地址页内地址 = 页架号页架号 页内地址页内地址i位位n-i位位6.3.2 分页式存储管理分页式存储管理2. 进程空间划分:静态等长,进程空间划分:静态等长
19、,2i, 称为一个页面。称为一个页面。.第第0页页第第1页页第第k页页 第第l-1页页2i0 2i:1 2i:k 2i: (l-1) 2i:逻辑地址逻辑地址=逻辑页首址逻辑页首址+页内地址页内地址 =逻辑页号逻辑页号 2i +页内地址页内地址 =逻辑页号逻辑页号 页内地址页内地址i位位3. 进程空间与内存空间对应关系进程空间与内存空间对应关系.第第0页页第第1页页第第2页页第第3页页第第16页页第第22页页第第32页页第第15页页.进程空间进程空间内存空间内存空间4. 所需表目:所需表目:(1)页表,每个进程一个页表,每个进程一个物理页号物理页号逻辑页号逻辑页号:1522163201235.
20、所需寄存器所需寄存器(2)总页表:系统一个总页表:系统一个(1) 页表首址寄存器:页表首址寄存器:bl(2) 页表长度寄存器:页表长度寄存器:系统一个系统一个系统一个系统一个(3) 快表快表(TLB):系统一组:系统一组:逻辑页号逻辑页号页架号页架号.fp逻辑地址逻辑地址(p,d)物理地址物理地址(f,d)(1) 由程序确定逻辑地址由程序确定逻辑地址(p,d);(2) 由由p查快表得页架号查快表得页架号f; 如查不到:如查不到: (3) 由由p与与l比较,判别是否越界:比较,判别是否越界: 不满足:不满足:0 p l-1,越界;,越界; (4) 由由p和和b查页表得查页表得f; (5) par
21、begin (p,f)快表,如满淘汰一个快表,如满淘汰一个; f与与d合并得物理地址合并得物理地址 parend(3) f与与d合并得物理地址合并得物理地址6. 地址映射地址映射 : (p,d)(f,d) .逻辑页号逻辑页号页架号页架号.fplbbl.PCB页架号页架号逻辑页号逻辑页号.f.p.f dp d物理地址物理地址逻辑地址逻辑地址b:.如查不到.逻辑页号逻辑页号页架号页架号.fplbbl.PCB页架号页架号逻辑页号逻辑页号.f.p.f dp d+cp p f 物理地址物理地址逻辑地址逻辑地址b:.有效访问时间有效访问时间n(Effective Access Time)nEAT=快表命中
22、率快表命中率 (快表访问时间快表访问时间+内存访内存访问时间问时间)+快表不中率快表不中率 (快表访问时间快表访问时间+2 内存访问时间内存访问时间) nsn 98% (20+100)+2% (20+200)ns =122ns6.3.2.2 多级页表多级页表n提出背景提出背景n内存空间成倍增长内存空间成倍增长, 进程虚拟空间成倍增加进程虚拟空间成倍增加n单级页表需要很大连续内存空间单级页表需要很大连续内存空间n例如例如n32位进程地址空间,页长占位进程地址空间,页长占12位(位(4k),页号),页号20位,页位,页表最多可达表最多可达220个入口!个入口!n多线程设计导致进程虚拟空间不连续多线
23、程设计导致进程虚拟空间不连续(空洞空洞hole)n栈的预留空间栈的预留空间(没有页架相对应没有页架相对应)n页表所占内存空间浪费页表所占内存空间浪费n解决策略解决策略n二级或多级页表二级或多级页表Two-Level Page-Table Scheme外页表对应外页表对应hole的表项没有对应的表项没有对应的内页表的内页表访问访问hole表项动表项动态建立内页表态建立内页表Two-Level Paging ExampleA logical address (on 32-bit machine with 4K page size) is divided into:a page number con
24、sisting 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 logical address is as follows:where pi is an index into the outer page table, and pj is the displacement within the page ta
25、ble.page number page offsetpipjd101012Address-Translation Scheme Address-translation scheme for a two-level 32-bit paging architecture Even though time needed for one memory access is quintupled, caching permits performance to remain reasonable4级页表有效访问时间级页表有效访问时间nEAT=快表命中率快表命中率 (快表访问时间快表访问时间+内存访内存访问
26、时间问时间)+快表不中率快表不中率 (快表访问时间快表访问时间+5 内存访问时间内存访问时间) nsn 98% (20+100)+2% (20+500)nsn=128ns6.3.2.3 反置页表反置页表(inverted page table)n传统页表面向进程空间传统页表面向进程空间n每个进程逻辑页面有一表项每个进程逻辑页面有一表项n当进程空间很大时,页表很大当进程空间很大时,页表很大n反置页表面向内存空间反置页表面向内存空间n每个内存页架一个表项每个内存页架一个表项n大小固定大小固定反置页表反置页表-工作原理工作原理程序程序物理物理内存内存pidpf dpid p df逻辑地址逻辑地址物理
27、地址物理地址反置页表反置页表6.3.2 页式存储管理页式存储管理(Cont.)采用散列技术的反置页表地址映射采用散列技术的反置页表地址映射逻辑地址逻辑地址pidpd进程进程逻辑逻辑页号页号冲突冲突计数计数空闲空闲.pidp21进进程程散列散列函数函数ffd物理地址物理地址采用散列技术的反置页表采用散列技术的反置页表物理内存物理内存速度问题速度问题n反置页表查找反置页表查找n由表头起始,平均为表长度的一半由表头起始,平均为表长度的一半n速度慢速度慢n解决方案解决方案n在反置页表前增加一级杂凑表在反置页表前增加一级杂凑表n查找杂凑表与反置页表至少需要两次访问内查找杂凑表与反置页表至少需要两次访问内
28、存存n为进一步提高速度,快表缓冲为进一步提高速度,快表缓冲1. 内存空间划分:动态异长,每区一段。内存空间划分:动态异长,每区一段。段首址段首址+段内地址段内地址物理地址物理地址=b:lb+d6.3.3 分段式存储管理分段式存储管理(segmentation)2. 进程空间划分:若干段,每段一个程序单位。进程空间划分:若干段,每段一个程序单位。调用调用x段段ef: 访问访问d段段ae: 调用调用y段段fmain(段号段号0)X(段号段号1)Y(段号段号2)D(段号段号3)a:080k-10.40k-1020k-1060k-1逻辑地址逻辑地址= 段号段号 段内地址段内地址(二维地址二维地址)ma
29、inxyd3. 对应关系对应关系40k60k80k20k.进程空间进程空间内存空间内存空间100k:200k:300k:320k:4. 所需表目所需表目(1) 段表:每进程一个段表:每进程一个段首址段首址段长度段长度100k40k80k60k段号段号 0: 1: 2: 3:20k200k320k300k(2) 空闲表:系统一个空闲表:系统一个 array of (addr,size)5. 所需寄存器所需寄存器(1) 段表首址寄存器:段表首址寄存器:bl(2) 段表长度寄存器:段表长度寄存器:系统一个系统一个系统一个系统一个(3) 快表快表(TLB):系统一组:系统一组: 段号段号 段首址段首址
30、 段长度段长度.ls.b.6. 地址映射地址映射 : (s,d)(b+d) 逻辑地址逻辑地址(s,d)物理地址物理地址(b+d) (1)由程序确定逻辑地址由程序确定逻辑地址(s,d); (2) 由由s查快表得查快表得b和和l 如查不到:如查不到: (3) 由由s与与l比较判断是否越界比较判断是否越界 不满足:不满足:0 s l-1,越界;,越界; (4) 由由s和和b查段表,得查段表,得b和和l (5) 由由d与与l比较,判断是否越界比较,判断是否越界 不满足:不满足:0 d l-1,越界,越界; (6) parbegin (s,b,l)快表快表, 如快表满淘汰一个;如快表满淘汰一个; 由由b
31、 d得物理地址得物理地址 parend (3) 由由d与与l比较,判断是否越界比较,判断是否越界 不满足:不满足:0 d l-1,越界;,越界; (4) 由由b d得物理地址。得物理地址。段号段号段长段长 段首址段首址. . . l b slbbl.PCB段首址段首址 段长段长 段号段号 b l.s.b+d物理地址物理地址s d逻辑地址逻辑地址 cp+b:若查不到若查不到段号段号段长段长 段首址段首址. . . l b slbbl.PCB段首址段首址 段长段长 段号段号 . b l.s.b+d物理地址物理地址s d逻辑地址逻辑地址 . s l b b:+cpcp+6.3.3.2 段的共享段的共
32、享段长段长 段首址段首址 . l b . .段号段号 si .P1段表:段表:段长段长 段首址段首址 . l b . .段号段号 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
33、 loaded int x_size; /*size( 64) int *x_iptr; /*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 e
34、1 0 1段号段号 s .访问权限访问权限R W E . . . 段号段号 段长段长 段首址段首址 . . . s l b 1 0 1访问权限访问权限R W E(2) 快表的改进:快表的改进: . . .共享段共享段 表入口表入口6.3.4 段页式存储管理段页式存储管理(segmentation with paging)n段式优于页式段式优于页式n便于共享和保护便于共享和保护n页式优于段式页式优于段式n消除消除“碎片碎片”问题问题n段页式:结合二者优点段页式:结合二者优点n每个进程包含若干段每个进程包含若干段n每个段包含若干页每个段包含若干页6.3.4.1 基本原理基本原理 1. 内存空间划分:内存空间划分:(同页式同页式) 静态等长,静态等长,2i, 称为一页架。称
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区旅游服务质量提升工程考核试卷
- 宝石的稀有性与收藏价值分析考核试卷
- 生活初一上册语文作文
- 笔的使用与维护培训考核试卷
- 河南省洛阳市宜阳县2023-2024学年七年级下学期期末考试数学试卷(含答案)
- 纺织原料行业人才培养计划考核试卷
- 未来的数字化戏剧与表演艺术创新方向考核试卷
- 渔业机械化捕捞作业效率与渔获物处理考试考核试卷
- 纤维板生产设备维护与管理考核试卷
- 青浦高三语文二模作文
- 《中国马克思主义与当代》部分课后题-参考答案
- 2023架空导线覆冰过载能力计算
- 23秋国家开放大学《液压气动技术》形考任务1-3参考答案
- 科技论文写作与学术规范课件
- 2022-2023学年福建省厦门市双十中学高二下学期期中生物试题(解析版)
- 菠萝蛋白酶的影响因素及影响其酶活力的因素
- 前言 马克思主义中国化时代化的历史进程与理论成果
- 医疗器械自查表【模板】
- 职业高中高二上学期期末英语试题卷(含答案)1697
- 2023学年完整公开课版《2BM3U2Rules》教学
- 2022河南大学版四年级信息技术下册全册教案
评论
0/150
提交评论