操作系统课件 第六章 存储管理 (1)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第六章存储管理存储管理功能内存资源管理存储管理方式外存空间管理虚拟存储系统6.1存储管理功能存储分配和去配–分配去配对象内存、外存(相同方法)–分配去配时刻进程创建、撤销、交换、长度变化记录内存资源和外存资源的使用情况存储共享–目的:节省内存、相互通讯–内容:代码、数据–纯代码((purecode),以保证“可再入”,即它在运行过程中不修改自身.存储保护–防止地址越界–防止操作越权6.1存储管理功能(Cont.)存储扩充–内存、外存结合,虚拟存储体系–速度接近内存,容量相当外存地址映射–逻辑地址=物理地址–硬件支持基址寄存器(base)、限长寄存器(limit)、快表;使用上述寄存器完成地址映射过程;不能正常完成地址映射时产生中断;需软硬件相结合来完成。6.2内存资源管理6.2.1内存分区–分区时刻静态分区:系统初始化时分;动态分区:申请时分。–分区大小等长分区:2i异长分区:依程序、程序单位、对象大小。–通常作法静态+等长(页式、段页式)动态+异长(段式、界地址)6.2.2内存分配静态等长分区的分配–字位映象图(bitmap)–空闲页面表–空闲页面链字位映象图(bitmap)100…1...10第0页第2页第1页第k页第n页......分配:自头寻找第一个为0的位,改为1,返回页号;去配:页号对应的位(bit)置为0。用一个bit代表一页状态,0表空闲,1表占用。(多单元)空闲页面表首页号空页数............1204特点:可以分配连续页面。占用占用120页121页122页123页......空闲页面链占用占用占用Head:优点:节省空间。(不适合管理外存)动态异长分区的分配空闲区首址空闲区长度............25001500数据结构:Criteria:尽量使空闲区域连续。初始时一个连续空闲区。长度=0为表尾。最先适应算法(FirstFit)空闲区首址空闲区长度128641024256322560......空闲区:首址递增排列;申请:取第一个可满足区域;优点:尽量使用低地址空间,高区保持大空闲区域。缺点:可能分割大空闲区。Eg.申请32将分割第一个区域。最佳适应算法(BestFit)空闲区:递增排列;申请:取最小可满足区域;优点:尽量使用小空闲区,保持大空闲区。缺点:可能形成碎片(fragment)。Eg.申请30将留下长度为2的空闲区。空闲区首址空闲区长度256321024256641280......最坏适应算法(WorstFit)空闲区:长度递减排列;申请:取最大可满足区域;优点:防止形成碎片。缺点:分割大空闲区域。空闲区首址空闲区长度128641024256322560......6.2.3碎片处理动态异长分区存储分配可能形成很小的空闲区域,称为碎片(fragment)紧凑:移动占用区域,使所有空闲区域连成一片(开销很大)。OSP1(248k)P2(250k)8k6k4k256k:512k:768k:264k:518k:P1OSP2256k:504k:754k:18k6.3存储管理方式界地址管理方式(一维地址)页式管理方式(一维地址)段式管理方式(二维地址)段页式管理方式(二维地址)6.3.1界地址管理方式4.3.1.1基本原理一个进程在内存空间的地址由两个参数确定:起始地址和长度,称作一个对界.1.内存空间划分:动态异长;2.进程空间划分:一个进程一个区域,逻辑地址0l-13.进程空间与内存空间对应关系:可以浮动0:l-1:......b:lb+l-1:进程空间内存空间6.3.1界地址管理方式4.所需表目:(1)内存分配表--在PCB中;(2)空闲区域表:用于记录内存中所有尚未分配的区域。5.所需寄存器:(1)基址寄存器;(2)限长寄存器。6.地址映射:6.3.1界地址管理方式6.地址映射:地址映射需要将程序所产生的逻辑地址变换为内存中的物理地址,即完成如下映射::(a)(b+a){}其中a为逻辑地址,b为进程起始地址.当a所对应的物理地址不存在时(越界),映射没有意义,结果为.6.3.1界地址管理方式0:l-1:......b:lb+l-1:lb逻辑地址CP+aa+b步骤:(1)由程序确定逻辑地址a;(2)a与l比较判断是否越界,不满足:0al-1,越界;(3)a与b相加得到物理地址。进程空间内存空间6.3.1界地址管理方式6.3.1.2双对界代码:一对界数据:一对界b1l1b2l26.3.1界地址管理方式6.3.1.3交换技术(swapping)交换(swapping):是指进程在内存空间与外存空间之间的动态调度,它是缓解内存空间紧张矛盾的一种有效方法.当外存中有可运行进程时,系统试图将其调入内存;当内存空间紧张时,系统将内存中某些进程,尤其是暂时不可运行的进程(如处于WAIT状态的进程)移到外存.采用交换技术,一个进程可在内外存之间交换,但由于交换的基本单位是整个进程,因而仍然不能运行比内存大的程序.覆盖技术覆盖(overlay)是将较大程序装入较小进程空间一种的技术.其思想是只将全局代码和数据静态地放在内存,其它部分则分阶段地动态装入。例如,一个包括四遍扫描的编译程序:6.3.2分页式存储管理(paging)6.3.2.1基本原理1.内存空间划分:静态等长,2i,称为一个页架(pageframe)。......第0页第1页第k页第2n-i-1页2i02i:12i:k2i:(2n-i-1)2i:物理地址=页架首址+页内地址=页架号2i+页内地址=页架号页内地址i位n-i位6.3.2分页式存储管理2.进程空间划分:静态等长,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.所需寄存器(2)总页表:系统一个(1)页表首址寄存器:bl(2)页表长度寄存器:系统一个系统一个(3)快表:系统一组逻辑页号页架号............fp逻辑地址(p,d)物理地址(f,d)(1)由程序确定逻辑地址(p,d);(2)由p查快表得页架号f;如查不到:(a)由p与l比较,判别是否越界:不满足:0pl-1,越界;(b)由p和b查页表得f,(p,f)快表,如满淘汰一个;//(c)转(2)(3)f与d合并得物理地址6.地址映射:(p,d)(f,d){}表6-1快表长度与页命中率的关系块表长度命中率(%)885129316973298假定快表的命中率为98%,快表的访问时间为20(ns),内存的一次访问时间为100(ns),则内存有效访问时间(effectiveaccesstime)为:EAT98%(20+100)+2%(20+200)122(ns)...逻辑页号页架号............fplbbl......PCB页架号逻辑页号...f...p...fdpd+cppf物理地址逻辑地址b:...6.3.2.2多级页表提出背景–进程虚拟空间大幅度增加单级页表需要很大连续内存空间–多线程设计导致进程虚拟空间不连续性页表所占内存空间浪费–例如32位进程地址空间,页长4k(占12位),页号20位,页表需要220个入口!–解决策略二级或多级页表例如对于四级页表,假定快表的命中率仍为98%,快表与内存的访问时间仍分别为20(ns)和100(ns),有效访问时间为:EAT98%(20+100)+2%(20+500)128(ns)二级页表6.3.2.3反置页表(invertedpagetable)传统页表面向进程空间–每个进程逻辑页面有一表项–当进程空间很大时,页表很大反置页表面向内存空间–每个内存页架一个表项–大小固定反置页表--工作原理程序物理内存……pidp……fdpidpdf逻辑地址物理地址反置页表速度问题反置页表查找–由表头起始,平均为表长度的一半–速度慢解决方案–在反置页表前增加一级杂凑表–查找杂凑表与反置页表需要两次访问内存–为进一步提高速度,快表缓冲1.内存空间划分:动态异长,每区一段。段首址+段内地址物理地址=b’:l’b’+d6.3.3分段式存储管理(segmentation)2.进程空间划分:若干段,每段一个程序单位。调用x段ef:访问d段ae:调用y段fmain(段号0)X(段号1)Y(段号2)D(段号3)a:0…80k-10...40k-10…20k-10…60k-1逻辑地址=段号段内地址(二维地址)mainxyd3.对应关系40k60k80k20k............进程空间内存空间100k:200k:300k:320k:4.所需表目(1)段表:每进程一个段首址段长度100k40k80k60k段号0:1:2:3:20k200k320k300k(2)空闲表:系统一个arrayof(addr,size)5.所需寄存器(1)段表首址寄存器:bl(2)段表长度寄存器:系统一个系统一个(3)快表:系统一组:段号段首址段长度............l’s...b’...6.地址映射:(s,d)(b’+d){}逻辑地址(s,d)物理地址(b’+d)(1)由程序确定逻辑地址(s,d);(2)由s查快表得b’和l’如查不到:(a)由s与l比较判断是否越界不满足:0sl-1,越界;(b)由s和b查段表,得b’和l’(s,b’,l’)快表,如快表满淘汰一个;//(c)转(2)(3)由d与l’比较,判断是否越界不满足:0dl’-1,越界;(4)由b’d得物理地址。段号段长段首址...…...…......l’b’slbbl......PCB段长段首址段号…...l’b’...s...b’+dsd+cpsl’b’物理地址逻辑地址…...cp+b:6.3.3.2段的共享段长段首址…...b’l’......段号…si...P1段表:段长段首址…...b’l’......段号…sj...P2段表:共享段......b’:l’内存空间段名共享记数段长段首址其它…………...vi335k125k??…………...共享段表:进程段表(n)共享段表(1)共享段(1)6.3.3.2段的保护(1)段表的改进:段长段首址……......l’b’101段号…s...访问权限RWE……......段号段长段首址………......sl’b’101访问权限RWE(2)快表的改进:………......6.3.4段页式存储管理(segmentationwithpaging)段式优于页式–便于共享和保护页式由于段式–消除“碎片”问题段页式:结合二者优点–每个进程包含若干段–每个段包含若干页6.3.4.1基本原理1.内存空间划分:(同页式)静态等长,2i,称为一页。物理地址=(页架号,页内地址)=(f,d)2.进程空间划分:一个进程若干个段一个段若干个页逻辑地址=(段号,逻辑页号,页内地址)=(s,p,d)3.对应关系:0页1页2页0页1页第1段:0页1页2页第0段:第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)快表:一组联想寄存器(快段表+快页表)段号逻辑页号页架号……...spf……...bl6.地址映射(P.141):(s,p,d)(f,d){}逻辑地址(s,p,

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功