西安交通大学操作系统原理课件第八章

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

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

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

资源描述

Chapter8MemoryManagementBackground(背景)ContiguousAllocation(连续分配)Paging(分页)Segmentation(分段)SegmentationwithPaging(段页式)Examples存储层次结构外存(secondarystorage)DOS核心命令处理程序主存(primarystorage)快速缓存(cache)寄存器(register)8.1Background计算机存储系统的设计主要考虑三个问题:容量、速度和成本。8.1BackgroundProgrammustbebroughtintomemoryandplacedwithinaprocessforittobeexecuted.(程序要得以运行:必须创建一个进程,并且送入内存)Userprogramsgothroughseveralstepsbeforebeingexecuted.(用户程序在执行之前必需经历很多步骤)程序的装入和链接源程序编译目标模块库…..链接程序装入模块装入程序内存MultistepProcessingofaUserProgramLogicalvs.PhysicalAddressSpaceAddressSpace地址空间:一个目标程序所限定的地址范围–地址空间是逻辑地址的集合–Logical/Virtualaddress:•Anaddressviewedbytheuserprocess•TheabstractionprovidedbytheOS存储空间是物理地址的集合–Physicaladdress•Anaddressviewedbythephysicalmemory地址重定位将程序装入到与其地址空间不一致的物理空间,所引起的一系列地址变换过程。静态地址重定位•在装入一个作业时,把作业中的指令地址全部转换为绝对地址,在作业执行过程中就无须再进行地址转换工作。动态地址重定位–在程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址.动态重定位依靠硬件地址变换机构完成。DynamicAddressTranslationUserProcessTranslator(MMU)PhysicalmemoryVirtualaddressPhysicaladdressBindingofInstructionsandDatatoMemoryAddressbindingofinstructionsanddatatomemoryaddressescanhappenatthreedifferentstages.(指令和数据绑定到内存地址可以在3个不同的阶段发生。)Compiletime(编译时期):Ifmemorylocationknownapriori,absolutecodecanbegenerated;mustrecompilecodeifstartinglocationchanges.(如果内存位置已知,可生成绝对代码;如果开始位置改变,需要重新编译代码)Loadtime(装入时期):Mustgeneraterelocatablecodeifmemorylocationisnotknownatcompiletime.(如果存储位置在编译时不知道,则必须生成可重定位代码)Executiontime(执行时期):Bindingdelayeduntilruntimeiftheprocesscanbemovedduringitsexecutionfromonememorysegmenttoanother.Needhardwaresupportforaddressmaps(e.g.,baseandlimitregisters).(如果进程在执行时可以在内存中移动,则地址绑定要延迟到运行时。需要硬件对地址映射的支持,例如基址和限长寄存器)Memory-ManagementUnit(MMU)Hardwaredevicethatmapsvirtualtophysicaladdress.(实现虚拟地址映射到物理地址的硬件)InMMUscheme,thevalueintherelocationregisterisaddedtoeveryaddressgeneratedbyauserprocessatthetimeitissenttomemory.(在MMU策略中,当用户进程被装入内存时,基址寄存器中的值被加入到用户进程所产生的每个地址中。)Memory-ManagementUnit(MMU)内外存间的数据交换overlay覆盖–由用户程序控制–要求用户清楚地了解程序的结构,并指定各程序段调入内存的先后次序,它是一种早期的主存扩充的方式swapping交换–由操作系统控制–利用外存空间(进程交换区),通过对进程实体的整体交换,来满足用户进程的内存需要。它的主要特点是打破了进程运行的驻留性主程序(30k)子程序1(8k)子程序2(10k)子程序21(20k)子程序22(25k)子程序11(15k)主程序(30k)覆盖区1(25k)覆盖区0(10k)内存区用户的结构化程序区overlay主程序(30K)SwappingAprocesscanbeswappedtemporarilyoutofmemorytoabackingstore,andthenbroughtbackintomemoryforcontinuedexecutionMajorpartofswaptimeistransfertime;totaltransfertimeisdirectlyproportionaltotheamountofmemoryswappedModifiedversionsofswappingarefoundonmanysystems(i.e.,UNIX,Linux,andWindows)Swapping操作系统BA操作系统BAC操作系统BC操作系统BCD操作系统DC操作系统A操作系统ADCSchematicViewofSwapping常用的内存信息保护方法有:1上下界地址寄存器2存储键内存保护界地址寄存器界地址寄存器是广泛使用的一种存储保护技术,机制简单,易于实现实现方法:–在CPU中设置一对下限寄存器和上限寄存器–存放用户作业在主存中的下限和上限地址–也可将一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示存储区长度)–每当CPU要访问主存,硬件自动将被访问的主存地址与界限寄存器的内容进行比较,以判断是否越界–如果未越界,则按此地址访问主存,否则将产生程序中断——越界中断(存储保护中断)BaseandBoundsProcesshasillusionofrunningonitsowndedicatedmachine–withmemory[0,bound)Physicalmemory0basebase+boundphysicalmemorysizevirtualmemory0bound存储键每个存储块有一个由二进制位组成的存储保护键一用户作业被允许进入主存,OS分给它一个唯一的存储键号,并将分配给该作业各存储块的存储键也置成同样键号当OS挑选该作业运行时,OS将它的存储键号放入程序状态字PSW存储键(“钥匙”)域中每当CPU访问主存时,都将该主存块的存储键与PSW中的“钥匙”进行比较如果相匹配,则允许访问,否则,拒绝并报警8.2存储器管理方式连续分配方式:为一个程序分配一段连续的内存空间,主要有:–单一连续区管理方式;–多分区管理方式,是一种可用于多道程序的较简单的存储管理方式,又分为:•固定分区方式•可变分区方式8.2存储器管理方式离散分配方式:减少连续分配所产生的碎片,提高内存的利用率,将一个用户程序离散地分配到内存中的多个不相连接的区域中–分页存储管理方式–分段存储管理方式–段页式存储管理方式虚拟存储管理方式:满足用户对大容量内存的需要,提高内存利用率。–请求分页管理方式–请求分段管理方式–请求段页式管理方式8.2存储器管理方式8.2.1ContiguousAllocationMainmemoryusuallydividedintotwopartitions:(主存通常被分为两部分)–Residentoperatingsystem,usuallyheldinlowmemorywithinterruptvector.(为操作系统保留的部分,通常与中断矢量保存在内存低端。)–Userprocessesthenheldinhighmemory.(用户进程保存在内存高端)8.2.1ContiguousAllocationSingle-partitionallocation单一分区分配Multiple-partitionallocation多分区分配–FixedPartitioning固定分区–DynamicPartitioning可变分区/动态分区–DynamicRelocationablePartitioning动态可重定位分区Single-partitionallocation(单一分区分配)内存分成两部分:-OS区-用户区用户区只能容纳一道作业存储保护:–Relocation-registerschemeusedtoprotectuserprocessesfromeachother,andfromchangingoperating-systemcodeanddata.(基址寄存器策略用来保护用户进程(同操作系统代码和数据分开。)–Relocationregistercontainsvalueofsmallestphysicaladdress;limitregistercontainsrangeoflogicaladdresses–eachlogicaladdressmustbelessthanthelimitregister.(基址寄存器包含最小物理地址的值;限长寄存器包含逻辑地址的范围,每个逻辑地址必须小于限长寄存器的值。)Single-partitionallocation(单一分区分配)HardwareSupportforRelocationandLimitRegistersFixedPartitioning固定分区是在作业装入之前,内存就被划分成若干个固定大小的连续分区。划分工作可以由系统管理员完成,也可以由操作系统实现。一旦划分完成,在系统运行期间不再重新划分,即分区的个数不可变,分区的大小不可变,又称为静态分区。FixedPartitioning划分分区的方法如下:–分区大小相等:只适用于多个大小相同程序的并发执行,缺乏灵活性。–分区大小不等:多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。8M8M8M8M8MOperatingSystemOperatingSystem8M12M8M8M6M4M2M固定分区(大小相同)固定分区(多种大小)FixedPartitioning一般将内存的用户区域划分成大小不等的分区,可适应不同大小的作业需要。系统有一张分区说明表,每个表目说明一个分区的大小、起始地址和是否已分配的使用标志FixedPartitioningOS作业A作业B作业C空闲020K36K68K132K区号大小起址标志116K20K已分配232K36K已分配364K68K已分配4124K132K未分配分区说明表内存分配图FixedPartitioning优点:易于实现,开销小。缺点:–分区大小固定:内碎片–分区总数固定:限制并发执行的进程数目要求Xk大小分区取分区说明表第一项状态位置正在使用取下一表项无法分配该分区空闲?分区长度≥Xk?表结束?返回分区号否否否是是是固定分区分配算法DynamicStorage-AllocationMultiple-partitionallocation(多分区分配)–分区的划分是动态的,不是预先确定的–Whena

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

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

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

×
保存成功