您好,欢迎访问三七文档
第七讲存储器管理中国科学技术大学计算机系陈香兰xlanchen@ustc.edu.cn2013Fall内容提要存储器的层次结构程序执行的基础知识、程序的装入和链接连续分配存储管理方式分页存储管理方式分段存储管理段页式存储管理存储器的层次结构存储器是计算机系统的重要组成部分容量、价格和速度之间的矛盾内存、外存;易失性和永久性内存,是稀缺资源在现代计算机系统中,存储通常采用层次结构来组织多级存储器结构主存与寄存器高速缓存和磁盘缓存多级存储器结构MagnetictapesOpticaldiskMagneticdiskElectronicdiskMainmemoryCacheregistersStoragesystemsinacomputersystemcanbeorganizedinahierarchySpeed,accesstimeCostperbitVolatility主存vs.寄存器Same:AccessdirectlyforCPURegisternameMemoryaddressDifferent:accessspeedRegister,onecycleoftheCPUclockMemory,Manycycles(2ormore)Disadvantage:CPUneedstostallfrequently&thisisintolerableRemedyCache高级缓冲技术cachingCachingCopyinginformationintofasterstoragesystemWhenaccessing,firstcheckinthecache,ifIn:useitdirectlyNotin:getfromupperstoragesystem,andleaveacopyinthecacheUsingofcachingRegistersprovideahigh-speedcacheformainmemoryInstructioncache&datacacheMainmemorycanbeviewedasafastcacheforsecondarystorage……Magneticdisks磁盘Transfertime传输时间TT≈datasize*TransferrateTransferrate≈(nM/s)-1≈(nByte/us)-1≈1/nus/BytePositioningtime定位时间Seektime寻道TsRotationallatency旋转延迟TRTP≈Ts+TR≈mmsTTVS.TPPleaseStoredataclosely内容提要存储器的层次结构程序执行的基础知识、程序的装入和链接连续分配存储管理方式分页存储管理方式分段存储管理段页式存储管理程序执行的基础知识VonNeumannarchitecture冯·诺依曼体系结构(图)ProgrammustbebroughtintomemoryMainmemoryisusuallytoosmallProcessProgrammustbeplacedwithinaprocessforittobeexecuted作业池UserprogramsWheretoplacetheprogramseveralsteps(图)SourceprogramCompilerorassemblerObjectmoduleLinkageeditorLoadmoduleLoaderIn-memorybinarymemoryImageOtherobjectmodulesSystemlibraryDynamicallyloadedsystemlibraryCompiletimeLoadtimeExecutiontime(runtime)DynamiclinkingMultistepprocessingofauserprogram地址的类型Absoluteaddress绝对地址AddressseenbythememoryunitPhysicaladdress物理地址Relativeaddress相对地址Linearaddress线性地址Logicaladdress逻辑地址GeneratedbytheCPUVirtualaddress虚拟地址Whencantheabsoluteaddresscanbedecided?Addressbinding地址的绑定Addressbinding地址绑定,thebindingofinstructionsanddatatomemory,可以在三种时刻进行CompiletimeIfmemorylocationknownapriori,absolutecodecanbegenerated;mustrecompilecodeifstartinglocationchanges.LoadtimeMustgeneraterelocatablecodeifmemorylocationisnotknownatcompiletime.ExecutiontimeBindingdelayeduntilruntimeiftheprocesscanbemovedduringitsexecutionfromonememorysegmenttoanother.Needhardwaresupportforaddressmaps(e.g.,baseandlimitregisters)逻辑地址空间和物理地址空间Logicaladdressspace逻辑地址空间ThesetofalllogicaladdressesgeneratedbyaprogramPhysicaladdressspace物理地址空间ThesetofallphysicaladdressescorrespondingtotheseslogicaladdressesLogical=physicalcompile-time&load-timeaddress-bindinglogical(virtual)!=physicaladdressesexecution-timeaddress-bindingMMU(hardwaredevice)Memory-ManagementUnit(MMU)Hardwaredevice,逻辑地址物理地址Relocationregister重定位寄存器AddedtoeveryaddressgeneratedbyauserprocessatthetimeitissenttomemoryE.g.MS-DOSon80x86Userprogramdealswithlogicaladdresses,itNEVERseestherealphysicaladdresses.LogicaladdressPhysicaladdress14346Relocationregister14000+MemoryCPUMMU346Dynamicrelocationusingarelocationregister是否需要将进程的所有代码和数据一次性装入?Shallweputtheentireprogram&dataofaprocessinphysicalmemorybeforetheprocesscanbeexecuted?ForbettermemoryspaceutilizationDynamicloadingDynamiclinkingOverlaysSwapping…程序的装入绝对装入方式可重定位装入方式动态运行时装入方式绝对装入方式编译时,产生absolutecode,即使用绝对地址的代码装入时,必须装入到指定的地址无需对程序和数据的地址进行修改适用于单道系统可重定位装入方式大多数情况下,不能预知装入地址,只能在装入时确定编译时,产生可重定位代码,即使用相对地址的代码装入时,必须重定位通常把在装入时对目标程序中指令和数据的修改过程称为重定位。由于地址变换是在装入时一次性完成的,以后不再改变,故称为静态重定位可用于多道系统动态运行时重定位有时候,程序会在内存中移动位置例如对换需要能支持在运行过程中动态改变程序在内存中的位置方法:推迟重定位时机即从相对地址到绝对地址的转换推迟到程序真正执行时才进行因此,装入内存中的代码和数据的地址仍然是相对地址需要重定位寄存器的支持动态运行时装入方式根据程序运行的局部性,让程序及其数据在需要时才被装入Bettermemory-spaceutilization;unusedroutineisneverloaded.UsefulwhenlargeamountsofcodeareneededtohandleinfrequentlyoccurringcasesErrorroutineNospecialsupportfromOSisrequiredimplementedthroughprogramdesignDuetotheusers10kSymboltableCommonroutinesOverlaydriverPass1Pass220k30k70k80kOverlaysforatwo-passassemblerOverlays覆盖技术Keepinmemoryonlythoseareneededatanygiventime.Neededwhenprocessislargerthanamountofmemoryallocatedtoit.Implementedbyuser,nospecialsupportneededfromOS,programmingdesignofoverlaystructureiscomplex程序的链接多个源程序编译多个目标模块;库。需要链接成可装入模块根据链接时间的不同静态链接方式:装入前很早就链接装入时动态链接:边装入,边链接运行时动态链接:运行时才链接静态链接方式静态链接方式:在程序运行之前,先将各目标模块以及它们所需要的库函数,链接成一个完整的装配模块,以后不再拆开。各目标模块内:相对地址存在目标模块之间的调用关系外部调用符号要解决的问题:修改相对地址:多个相对地址空间一个统一的相对地址空间变换外部调用符号装入时动态链接在装入时,根据外部模块调用事件,使用装入程序去寻找相应的外部目标模块,并装入,在装入时,修改相对地址优点:便于修改和更新便于实现对目标模块的共享运行时动态链接程序的每次运行,可能要执行的目标模块集是不同的全部装入?按需装入?运行时动态链接将对某些模块的链接推迟到程序执行时才进行需要操作系统配合优点:程序运行前的装入速度加快;省空间作业:从一个源程序到一个在内存中可执行的程序,一般需要哪几个步骤?有哪几种地址类型?有哪几种程序装入方式和链接方式?
本文标题:可重定位装入方式
链接地址:https://www.777doc.com/doc-3774233 .html