




已阅读5页,还剩103页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter8 MainMemory Chapter8 MemoryManagement BackgroundSwappingContiguousMemoryAllocationPagingStructureofthePageTableSegmentationExample TheIntelPentium 存储管理方案 单道程序环境 多道程序环境 单一连续分配 分区管理 固定分区分配 动态分区分配 页式管理 碎片 页表 段式管理 共享 段表 段页式管理 Objectives Toprovideadetaileddescriptionofvariouswaysoforganizingmemoryhardware详细描述内存硬件的各种组织方法Todiscussvariousmemory managementtechniques includingpagingandsegmentation讨论各种内存管理技术 包括分页和分段ToprovideadetaileddescriptionoftheIntelPentium whichsupportsbothpuresegmentationandsegmentationwithpaging详细描述IntelPentium芯片 它支持纯分段和带分页的分段 Background Programmustbebrought fromdisk intomemoryandplacedwithinaprocessforittoberun程序必须放入内存中的进程空间才能被执行MainmemoryandregistersareonlystorageCPUcanaccessdirectlyCPU能直接访问的存储器只有内存和处理器内的寄存器RegisteraccessinoneCPUclock orless 寄存器可以在一个CPU时钟周期内完成访问Mainmemorycantakemanycycles内存访问需要多个CPU周期CachesitsbetweenmainmemoryandCPUregisters设置高速缓存直接存取要求内存速度尽量快到与CPU取址速度相匹配 大到能装下当前运行的程序和数据 否则CPU执行速度就会受到内存速度和容量的影响而得不到充分发挥 内存的构成 内存 由存储单元 字节或字 组成的一维连续地址空间 由顺序编址的块组成 每块包含相应的物理单元 用来存放当前正在运行的程序的代码或数据 是程序中指令本身 程序计数器 所指向的存储空间 内存可以分为 系统区 用于存放操作系统用户区 用于装入并存放用户程序和数据 内存 memory 系统区 核心区 OS核心 用户区 用户程序和数据及OS的外围程序 存储管理主要是管理用户区 00010000 FFFF SegmentationMemoryProtection段式内存保护 把内存分成几段 每段分别划给一个实体 操作系统代码 进程1 进程2 通过一个段基址base和段的长度limit来规定归属于某个进程的一段内存区间 段机制需要硬件支持 通常利用硬件寄存器来维护段机制和段长度 并通过硬件上的机制来保证对内存的访问不会越界 在例子中 访问地址30005 OK用30004作为基地址访问43000 不OK 基址限长寄存器 内存保护的实现机理 如下图所示 CPU 基地址 基地址 界限地址 是 内存 否 是 否 地址 地址 基地址下界溢出 地址 基地址 界限地址上界溢出 寻址错误 这对操作系统来说 是致命错误 需要立刻陷入内核处理 保护键法 保护键法是一种常用的保护法 保护键法为每一个被保护存储块分配一个单独的保护键 在程序状态字中则设置相应的保护键开关字段 对不同的进程赋予不同的开关代码与被保护的存储块中的保护键匹配 保护键可设置成对读写同时保护的或只对读 写进行单项保护的 图中的保护键0 就是对2K到4K的存储区进行读写同时保护的 而保护键2则只对4K到6K的存储区进行写保护 如果开关字与保护键匹配或存储块未受到保护 则访问该存储块是允许的 否则将产生访问出错中断 编译 目标模块 库 链接程序 装入模块 装入程序 内存 源程序 BindingofInstructionsandDatatoMemory Compiletime 编译时期 Ifmemorylocationknownapriori absolutecodecanbegenerated mustrecompilecodeifstartinglocationchanges 如果内存位置已知 可生成绝对代码 如果开始位置改变 需要重新编译代码 Loadtime 装入时期 Mustgeneraterelocatablecodeifmemorylocationisnotknownatcompiletime 如果存储位置在编译时不知道 则必须生成可重定位代码 Executiontime 执行时期 Bindingdelayeduntilruntimeiftheprocesscanbemovedduringitsexecutionfromonememorysegmenttoanother Needhardwaresupportforaddressmaps e g baseandlimitregisters 如果进程在执行时可以在内存中移动 则地址绑定要延迟到运行时 需要硬件对地址映射的支持 例如基址和限长寄存器 Addressbindingofinstructionsanddatatomemoryaddressescanhappenatthreedifferentstages 指令和数据结合到内存地址可以在三个不同的阶段发生 绑定示例 编译时绑定1 编译后 目标文件中 2 加载到内存后 Integercount1156 存放count的值 1156 存放count的值 Count 3move11563move11563 加载时绑定 Integercount156 存放count的值 1156 存放count的值 Count 3move1563move11563 运行时绑定 Integercount156 存放count的值 1156 存放count的值 Count 3move1563move1563 1000 156 1156 执行该指令时转换 名空间 地址空间 存储空间 变量名 地址变换和重定位 什么是地址映射为保证程序正常运行 必须将虚拟空间中已链接和划分好的内容装入内存 并将虚拟地址映射为内存地址 地址变换 地址重定位 地址变换就是要建立虚拟地址与内存地址的关系 实现地址重定位的方法静态地址重定位动态地址重定位 Logicalvs PhysicalAddressSpace Theconceptofalogicaladdressspacethatisboundtoaseparatephysicaladdressspaceiscentraltopropermemorymanagement 逻辑地址空间绑定到相分离的物理地址空间的概念是OS管理内存的核心 Logicaladdress addressintheinstructionsexecutedbytheCPU alsoreferredtoasvirtualaddress 逻辑地址 机器指令中的地址 也叫做虚拟地址 Physicaladdress addressseenbythememoryunit 物理地址 内存单元的地址 即数据或指令的实际存放地址 静态地址重定位 静态地址重定位实在虚拟空间程序执行之前由装配程序完成地址映射工作 对于虚拟空间内的指令或数据来说 静态地址重定位只完成一个首地址不同的连续地址变换 它要求所有待执行的程序必须在执行之前完成它们之间的链接 否则将无法得到正确的内存地址和内存空间 优点 容易实现 无需硬件支持 缺点 程序经地址重定位后就不能移动了 因而不能重新分配内存 不利于内存的有效利用 必须占用连续的内存空间 这就难以做到程序和数据的共享 Memory ManagementUnit MMU Hardwaredevicethatmapsvirtualaddresstophysicaladdress 一种地址映射装置 把虚拟地址映射到物理地址的硬件 InMMUscheme thevalueintherelocationregisterisaddedtoeveryaddressgeneratedbyauserprocesstogetthecorrespondingmemoryaddress 在MMU中 由用户进程的程序所产生的每个地址都要加上基址寄存器中的值 以得到相应的内存地址 Theuserprogramdealswithlogicaladdresses itneverseestherealphysicaladdresses 用户程序使用的是逻辑地址 不会接触到物理地址 动态地址重定位 动态地址重定位是在程序执行过程中 在CPU访问内存之前 将要访问的程序或数据地址转换成内存地址 动态重定位依靠硬件地址变换机构完成 该地址变换机构需要一个 或多个 基地址寄存器BR和一个 或多个 程序虚拟地址寄存器VR 指令或数据的内存地址MA与虚拟地址的关系为 MA BR VR 动态地址重定位 优点 可以对内存进行非连续分配对于同一进程的各分散程序段 只要把各程序段在内存中的首地址统一存放在不同的BR中 则可以由地址变换机构变换得到正确的内存地址 动态重定位提供了实现虚拟存储的基础动态重定位不要求在作业执行前为所有程序分配内存 也就是说 可以部分地 动态地分配内存 有利于程序段的共享缺点 需要附加的硬件支持 实现存储管理的软件算法比较复杂 动态加载 引入 大型程序 若干程序段 若干数据段一些熟知的事实 进程的某些程序段在进程运行期间可能根本不用互斥执行的程序段没有必要同时驻留内存有些程序段执行一次后不再用到 DynamicLoading动态加载 Routineisnotloadeduntilitiscalled 例程在调用之前并不加载 Bettermemory spaceutilization unusedroutineisneverloaded 更好的内存空间利用率 没有被使用的例程不被载入 Usefulwhenlargeamountsofcodeareneededtohandleinfrequentlyoccurringcases 当需要大量的代码来处理不经常发生的事情时是非常有用的 Nospecialsupportfromtheoperatingsystemisrequiredimplementedthroughprogramdesign 不需要操作系统的特别支持 通过程序设计实现 操作系统可能为程序员提供实现动态装入的库函数 static linkingVSDynamiclinking 静态链接 为了程序正确执行 必须由连接装配程序把它们连接成一个可运行的目标程序问题 花费时间 浪费空间 动态链接 在程序开始运行时 只将主程序段装配好并调入内存 其它各段的装配是在主程序段的运行过程中逐步完成 每当需要调用一个新段时 再将这个新段装配好 并与主程序段链接 static linking 静态链接是在生成可执行文件时进行的 static linkingVSDynamiclinking DynamicLinking Linkingpostponeduntilexecutiontime 链接被推迟到执行时 Smallpieceofcode stub usedtolocatetheappropriatememory residentlibraryroutine 小的代码片 存根 用来定位相应的的驻留在内存中的库例程 Ifalibraryroutineisnotpresentinmemory itwillbeloadedintomemory 执行时 如果所需例程不在内存 要先将其装入内存 Stubreplacesitselfwiththeaddressoftheroutine andexecutestheroutine 用例程地址来替换存根 并执行例程 Manyprocessesshareonecopyofthelibrarycode Canbeextendedtolibraryupdates 库更新可以及时反映到应用中 Requireshelpfromoperatingsystem 需要操作系统支持如存储保护 存储共享等 Swapping 交换 Aprocesscanbeswappedtemporarilyoutofmemorytoabackingstore andthenbroughtbackintomemoryforcontinuedexecution 一个进程可以暂时被交换到内存外的一个后备存储区 也可以以后被换回内存继续执行 Backingstore fastdisklargeenoughtoaccommodatecopiesofallmemoryimagesforallusers 后备存储区 一个足够大的可以容纳所有用户内存映像拷贝的快速硬盘 SchematicViewofSwapping 整个进程换入换出 交换信息量大 进程大小受可用内存空间限制 Swapping cont Rollout rollin swappingoperationsusedforpriority basedschedulingalgorithms lower priorityprocessisswappedoutsohigher priorityprocesscanbeloadedandexecuted 滚入 滚出 交换的操作 在基于优先级的算法中 低优先级的进程被换出 这样高优先级的进程可以被装入和执行 Majorpartofswaptimeistransfertime totaltransfertimeisdirectlyproportionaltotheamountofmemoryswapped 交换时间开销主要是内外存传输信息时间 总的传输时间同交换的内存数量成比例 SingleContiguousAllocation单一连续分配 所谓单一 是指内存中只驻留一道作业 为便于地址转换 把作业连续的存放在内存中 而不是离散的存放 Mainmemoryusuallydividedintotwopartitions 主存通常被分为两部分 Residentoperatingsystem usuallyheldinlowmemorywithinterruptvector 系统区 存放操作系统包括中断矢量等 在内存低端 Userprocessesthenheldinhighmemory 用户进程保存在内存高端 单一连续区的管理思想主要用在早期的单道批处理系统中 采用静态分配的方式 即作业或进程一进入内存 就要等到它结束后才释放内存 单一连续分配 优点 方法简单 易于实现缺点 仅适合于单道程序 分区管理的基本原理 分区管理是把内存划分成若干个大小不等的区域 除操作系统占用一个区域之外 其余由多道环境下的各并发进程共享 分区管理是满足多道程序设计的一种最简单的存储管理方法 分区管理的基本原理是给每一个内存中的进程划分一块适当大小的存储区 以连续存储各进程的程序和数据 使各进程得以并发执行 固定分区法fixedpartition动态分区法dynamicpartition 固定分区法 划分的原则由系统操作员或操作系统决定 分区一旦划分结束 在整个执行过程中每个分区的长度和内存的总分区个数将保持不变 系统对内存的管理和控制通过数据结构 分区说明表进行 该表说明各分区号 分区大小 起始地址和是否是空闲区 分区状态 分区4分区3分区2分区1操作系统 多个等待队列 单个等待队列 分区4分区3分区2分区1操作系统 固定分区特点 管理简单 系统开销小不灵活 大程序可能无法装入利用率低 浪费 内部碎片大 dynamicpartition Multiple partitionallocationHole孔 blockofavailablememory holesofvarioussizearescatteredthroughoutmemoryWhenaprocessarrives itisallocatedmemoryfromaholelargeenoughtoaccommodateitOperatingsystemmaintainsinformationabout a allocatedpartitionsb freepartitions hole OS process5 process8 process2 OS process5 process2 OS process5 process2 OS process5 process9 process2 process9 process10 动态分区使用的数据结构 动态分区使用的数据结构除了与固定分区法相同的分区说明表之外 动态分区法还把内存中的可用分区单独构成可用分区表或可用分区自由链 动态分区使用的数据结构 可用分区表可用分区表的每个表目记录一个空闲区 主要参数包括区号 长度和起始地址 可用分区自由链利用每个内存空闲区的头几个单元存放本空闲区的大小及下个空闲区的起始地址 从而把所有的空闲区链接起来 然后 系统再设置一自由链首指针让其指向第一个空闲区 这样 管理程序可通过链首指针查到所有的空闲区 可用分区表优点 管理过程比较简单缺点 表的大小难以确定 可用表要占用一部分内存 可用分区自由链优点 不必占用额外的内存区缺点 查找时要比可用表困难 动态分区时的分配与回收 动态分区时的分配与回收主要解决3个问题 对于请求表中的要求内存长度 从可用表或自由链中寻找合适的空闲区分配程序 分配空闲区之后 更新可用表或自由链 进程或作业释放内存资源时 和相邻的空闲区进行链接合并 更新可用表或自由链 DynamicStorage AllocationProblem First fit AllocatethefirstholethatisbigenoughBest fit Allocatethesmallestholethatisbigenough mustsearchentirelist unlessorderedbysizeProducesthesmallestleftoverholeWorst fit Allocatethelargesthole mustalsosearchentirelistProducesthelargestleftoverhole Howtosatisfyarequestofsizenfromalistoffreeholes First fitandbest fitbetterthanworst fitintermsofspeedandstorageutilization 最先适应法 地址递增 可用表或自由链的排列 按起始地址递增的次序排列 最佳适应算法 可用表或自由链的排列 按照分区容量递增的方式形成 最坏适应算法 可用表或自由链的排列 按照分区容量递减的方式形成 动态分区时的空闲区分配方法最先适应法 firstfitalgorithm 动态分区算法比较 从检索速度来看最先适应算法最佳 而最佳适应算法和最坏适应算法把不同大小的空闲区按大小进行排队 从回收过程来看最先适应算法也是最佳 因为最佳适应算法和最坏适应算法均须从新调整空闲区的位置 从空闲区的利用来看最佳适应算法找到的空闲区是最佳的 但会内存碎片较多 影响了内存的利用率 而最坏适应算法的内存碎片最少 但对内存请求较多的进程有可能分配失败 动态分区时的回收与拼接 当用户作业或进程执行结束时 存储管理程序要收回已使用完毕的空闲区 并将其插入空闲区可用表或自由链 在将回收的空闲区插入可用表或自由链时 和分配空闲区时一样 也要碰到剩余空闲区拼接问题 解决办法之一就是在空闲区回收或在内存分配时进行空闲区拼接 把不连续的零散空闲区集中起来 动态分区时的回收与拼接 Fragmentation ExternalFragmentation totalmemoryspaceexiststosatisfyarequest butitisnotcontiguous外碎片InternalFragmentation allocatedmemorymaybeslightlylargerthanrequestedmemory thissizedifferenceismemoryinternaltoapartition butnotbeingused内碎片Reduceexternalfragmentationbycompaction利用紧缩解决外碎片问题Shufflememorycontentstoplaceallfreememorytogetherinonelargeblock移动内存内容 以便把所有空闲区合并Compactionispossibleonlyifrelocationisdynamic andisdoneatexecutiontime只有重定位是动态时可以采用I Oproblem问题LatchjobinmemorywhileitisinvolvedinI ODoI OonlyintoOSbuffers Paging分页 分页存储管理是解决存储零头的一种方法 动态分区是为了解决存储器零头问题的一种尝试 但仍然没有解决该问题 分页管理是通过避开连续分配 来解决零头问题的一种方法 Paging分页 Physicaladdressspaceofaprocesscanbenoncontiguous processisallocatedphysicalmemorywheneverthelatterisavailable 进程的物理地址空间可以是非连续的 Dividephysicalmemoryintofixed sizedblockscalledframes sizeispowerof2 between512bytesand8 192bytes 将物理内存分为固定大小的块 称为帧 Dividelogicalmemoryintoblocksofsamesizecalledpages将逻辑内存分成同样大小的块 称为页 Keeptrackofallfreeframes管理所有的空闲帧Torunaprogramofsizenpages needtofindnfreeframesandloadprogram执行一个大小为n页的进程 要发现n个空闲帧并把程序装入其中Setupapagetabletotranslatelogicaltophysicaladdresses利用页表进行逻辑到物理地址的映射Internalfragmentation内部碎片 AddressTranslationScheme AddressgeneratedbyCPUisdividedinto Pagenumber p usedasanindexintoapagetablewhichcontainsbaseaddressofeachpageinphysicalmemory页号Pageoffset d combinedwithbaseaddresstodefinethephysicalmemoryaddressthatissenttothememoryunit页偏移Forgivenlogicaladdressspace2mandpagesize2n pagenumber pageoffset p d m n n 5 10 2 5 32 页 2 10 1024 每页1024字节 在分配存储空间时 是以页面为单位来分配 例如 一个作业的地址空间有M页 那么只需要分配给他M个页面的存储空间 每一页分别装入一个存储页面即可 并不需要这些页面是连续的 以上这些问题需要一个地址映射 PagingHardware PagingModelofLogicalandPhysicalMemory PagingExample 32 bytememoryand4 bytepages FreeFrames Beforeallocation Afterallocation 地址变换 2148 1024 2048 3072 8644 虚拟地址 452 ImplementationofPageTable页表的实现 Pagetableiskeptinmainmemory页表被保存在内存中Page tablebaseregister PTBR pointstothepagetable页表基址寄存器指向页表Page tablelengthregister PRLR indicatessizeofthepagetable页表长度寄存器定义页表的大小Inthisschemeeverydata instructionaccessrequirestwomemoryaccesses Oneforthepagetableandoneforthedata instruction 每一次数据 指令的访问都需要访问两次内存 页表1次 指令 数据1次 Thetwomemoryaccessproblemcanbesolvedbytheuseofaspecialfast lookuphardwarecachecalledassociativememoryortranslationlook asidebuffers TLBs 解决方案 特殊的硬件缓冲 也称相联存储器或转换表缓冲区SomeTLBsstoreaddress spaceidentifiers ASIDs ineachTLBentry uniquelyidentifieseachprocesstoprovideaddress spaceprotectionforthatprocess 有些TLB条目保存了地址空间标识符 ASIDs 用来唯一的标识进程 并为进程提供地址空间保护 AssociativeMemory转换表缓冲区 Associativememory parallelsearch并行搜索Addresstranslation p d Ifpisinassociativeregister getframe out如果p在相联存储器中 输出帧号Otherwisegetframe frompagetableinmemory否则 从内存的页表中查找 Page Frame PagingHardwareWithTLB EffectiveAccessTime有效访问时间 AssociativeLookup timeunit查找相联存储器的时间Assumememorycycletimeis1microsecond假设内存周期是1微秒Hitratio percentageoftimesthatapagenumberisfoundintheassociativeregisters ratiorelatedtonumberofassociativeregisters命中率 页号在TLB中被查到的百分比 与相联寄存器的多少有关Hitratio EffectiveAccessTime EAT EAT 1 2 1 2 MemoryProtection内存保护 Memoryprotectionimplementedbyassociatingprotectionbitwitheachframe内存保护是通过与每个帧相关联的保护位实现的 保护位存在页表中 Valid invalidbitattachedtoeachentryinthepagetable 有效 无效位 valid indicatesthattheassociatedpageisintheprocess logicaladdressspace andisthusalegalpage有效时表明相关的页在进程的逻辑地址空间内 合法页 invalid indicatesthatthepageisnotintheprocess logicaladdressspace无效表明相关的页不在进程的逻辑地址空间内 Valid v orInvalid i BitInAPageTable SharedPages共享页 Sharedcode共享代码Onecopyofread only reentrant codesharedamongprocesses i e texteditors compilers windowsystems 进程之间的共享只读代码 可重入代码 纯代码 留一份拷贝Privatecodeanddata私有代码和数据Eachprocesskeepsaseparatecopyofthecodeanddata每个进程为这些代码和数据保存一份独立的拷贝Thepagesfortheprivatecodeanddatacanappearanywhereinthelogicaladdressspace私有的代码和数据可以出现在进程地址空间的任何位置 SharedPagesExample Segmentation分段 Memory managementschemethatsupportsuserviewofmemory支持用户观点的内存管理机制Aprogramisacollectionofsegments Asegmentisalogicalunitsuchas 一个程序是由一系列的段构成的 每个段是个逻辑单元mainprogram procedure function method object localvariables globalvariables commonblock stack symboltable arrays User sViewofaProgram LogicalViewofSegmentation 1 3 2 4 userspace physicalmemoryspace 段式管理的基本思想把程序按内容或者过程关系分成段 每段有自己的名字 一个用户作业或进程所包含的段对应于一个二维线性虚拟空间 也就是一个二维虚拟存储器 以段为单位分配内存 然后通过地址映射机构把段式虚拟地址转换成实际的内存物理地址 逻辑化程序的分段形式 一个进程中的程序和数据可被划分为主程序段 子程序段 数据段与工作区段 主程序段 M 0 K 0 E P 子程序段 X 0 F L 子程序段 Y 0 116 N 数据段 A 12345 0 S 工作区段 B SegmentationArchitecture Logicaladdressconsistsofatwotuple 逻辑地址包含两部分 段号 段偏移Segmenttable mapstwo dimensionalphysicaladdresses eachtableentryhas 段表 段表的每个条目都包括两项base containsthestartingphysicaladdresswherethesegmentsresideinmemory段基址limit specifiesthelengthofthesegment段界限Segment tablebaseregister STBR pointstothesegmenttable slocationinmemory段表基址寄存器指向内存中的段表地址Segment tablelengthregister STLR indicatesnumberofsegmentsusedbyaprogram 段表长度寄存器指出进程中的段数segmentnumbersislegalifs STLR SegmentationHardware ExampleofSegmentation SegmentationArchitecture Cont Protection保护Witheachentryinsegmenttableassociate 段表内validationbit 0 illegalsegment有效位read write executeprivileges读 写 可执行权限Protectionbitsassociatedwithsegments codesharingoccursatsegmentlevel保护位与段相关联 共享以段为单位Sincesegmentsvaryinlength memoryallocationisadynamicstorage allocationproblem段大小不同 动态分区式分配算法Asegmentationexampleisshowninthefollowingdiagram 动态地址变换 首先把该进程的段表始址放入段表寄存器中 管理程序由此知道访问的起始地址 由虚地址段号s为索引 查段表 该段在内存中 判断其存取控制方式是否有错 如果正确则从段表相应表目查出起始地址 并将其和段内相对地址w相加得到内存地址 外 该段不在内存中 产生缺段中断将CPU控制权交给内存分配程序 查找空闲区链以找到合适的空闲区并装入所需的段 如果没有合适的空闲区 则检查段表中的访问位 淘汰那些访问概率低的段释放空间 Cl Cb 段号S段内地址d 比较有效性 比较越界 b d 段表 S Cl 物理地址 段表始址寄存器 段表长度寄存器 逻辑地址 L b 地址越界 d L 地址映射及存储保护机制 地址越界 比较 R W b 无效访问 1 2 3 4 5 段式也有二次访存问题 利用联想存储器存放快表 以改善性能 Cl Cb 段号S段内地址d 比较 比较 b d 段表 S Cl 快表 物理地址 段表始址寄存器 段表长度寄存器 逻辑地址 l b S l b 地址越界 d 1 d 1 地址越界 地址越界 比较 段的共享 段的共享多道环境下 许多子程序和应用程序是被多个用户所使用的 如果每个用户进程或作业都在内存保留他们共享程序和数据的副本 将会浪费内存空间 解决办法 内存中只保留一个副本 供多个用户使用 称为共享 共享段的指令和数据不能被修改 一个正在被某个进程使用或即将被某个进程使用的共享段不应该调出内存 段的共享 段式管理的优缺点 主要优点方便了用户编程 多个逻辑段形成作业这种组织方式 使用户可以清晰地设计和了解程序的结构 便于实现程序和数据的共享与保护 段的逻辑单位性质使分段共享与保护是现实和有意义的 程序的动态链接实现方便 当程序在执行过程中需要某段时 才将其调入内存链接 应用中会发生数据动态增长的情况 而且这种增长是无法预知的 采用分段管理可以很好地解决这个问题 段式管理的优缺点 主要缺点段式管理比其他几种方式要求有更多的硬件支持 这就提高了机器成本 由于在内存空闲区管理方式上与分区式管理相同 在碎片问题以及为了消除碎片所进行的合并等问题上较分页式管理要差 允许段的动态增长也会给系统管理带来一定的难度和开销 每个段的长度受内存可用区大小的限制 段式与页式管理的比较段式管理与页式管理的地址变换机构非常相似 但两者有着概念上的根本差别 表现在 段是信息的逻辑单位 它是根据用户的需要划分的 因此段对用户是可见的 页是信息的物理单位 是为了管理主存的方便而划分的 对用户是透明的 页的大小固定不变 由系统决定 段的大小是不固定的 它由其完成的功能决定 段式向用户提供的是二维地址空间 页式向用户提供的是一维地址空间 其页号和页内偏移是机器硬件的功能 由于段是信息的逻辑单位 因此便于存贮保护和信息的共享 页的保护和共享受到限制 段页式 引入页式 优点 分配与回收简单 内存利用率高 没有外部碎片 缺点 共享弱 需静态连接段式 优点 共享易 可以动态连接 符合程序逻辑结构 段大小可动态扩充 缺点 分配与回收复杂 有外部碎片 碎片整理开销大 每个段的长度受内存可用区大小的限制 应该是如何实现 虚地址的构成 一个进程依然拥有一个自己的二维地址空间 一个进程所包含的具有独立逻辑功能的程序和数据仍被划分为段 并有各自的段号s 这反映和继承了段式管理的特征 对于段s中的程序或数据 则按照一定的大小将其划分为不同的页 和页式系统一样 最后不足一页的部分仍占一页 这反映了段页式管理的特征 由于虚拟空间的最小单位是页而不是段 内存可用区也就被划分成若干个大小相等的页面 且每段所拥有的程序和数据在内存中可以分开存放 分段的大小也就不再受到内存可用区的限制 段表和页表 动态地址变换过程 在段页式管理系统中 要对内存中指令或数据进行一次存取的话 至少需要访问3次以上内存 第一次由段表地址寄存器得到段表始址去访问段表 由此取出对应段的页表地址 第二次访问页表得到所有访问的物理地址 第三次才能访问真正需要访问的物理单元 通过快速联想寄存器来提高地址转换速度 动态地址变换过程 如何将二维虚地址映射成一维实地址 为了实现动态地址变换 段页式系统必须为每个作业建立一张段表 段表表目中的地址部分指出该段的页表在主存的始址 为每个段建立一张页表 每个表目指示该页所在主存的页面号 每个作业有一个段表地址寄存器 指示它的段表所在位置和段表长度 设置快速相联存储器 存放当前最常用的段号S 页号P和对应的内存页面与其它控制用栏目 查找方法 如果所访问的段或页在快速相联存储器中 则系统不再访问内存中的段表 页表 把快速相联存储器中的值与页内相对地址D拼接得到内存地址 若快速联想寄存器中没有 才去通过段表 页表进行内存地址查找 段页式管理的保护 共享 与内存的分配与回收 保护 段表长 页表长防止越界 段表中设读写权限位共享 同段式管理分配与回收 同页式管理 段表首地址 段表长 段控寄存器 段表 页表 段页式管理的优缺点 优点 因为段页式管理是段式管理的页式管理方案结合而成的 所以具有它们二者的优点 缺点 由于管理软件的增加 复杂性和开销也就随之增加了 需要的硬件以及占用的内存也有所增加 如果不采用联想寄存器的方式提高CPU的访内速度 将会使得执行速度大大下降 课堂作业 P2678 1P2688 98 12 EndofChapter8 StructureofthePageTable页表结构 HierarchicalPaging层次页表HashedPageTables哈希页表InvertedPageTables反向页表 HierarchicalPageTables层次页表 Breakupthelogicaladdressspaceintomultiplepagetables把逻辑地址空间分成多个页表Asimpletechniqueisatwo levelpagetable两级页表A32 bitlogicaladdressspaceifpagesize 4k 212 thenapagetablemayconsistof1million 220 entriesifeachentryconsistsof4bytes aprocessmayneedupto4megabytesofphysicalspaceforthepagetablealone Two LevelPage TableScheme Two LevelPagingExample Alogicaladdress on32 bitmachinewith4Kpagesize isdividedinto apagenumberconsistingof20bits页号apageoffsetconsistingof12bits页偏移Sincethepagetableispaged thepagenumberisfurtherdividedinto a10 bitpa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年食堂会计招聘考试题集
- 2025年安全生产安全评价50题及答案
- 2025年安全员考试安全生产知识题库
- 2025年爆破员安全员技能考核题集
- 2025年宠物推拿AI师笔试模拟试卷
- 2025年无人机植保初级考试易错题解析
- 课件aoe教学课件
- 2025年宠物店宠物健康档案管理考试题
- 2025年导游笔试bi备冲刺题
- 2025年房长助理面试常见问题及答案详解
- 2019年云南三校生高考文学常识必背知识点
- GB/T 762-2002标准电流等级
- GB/T 18710-2002风电场风能资源评估方法
- 第三章 群速度色散
- 田英章楷书心经-高清米字格版
- 2021年成都中医药大学辅导员招聘考试题库及答案解析
- 液相色谱柱使用记录
- 项目检查汇报报告(52张)课件
- 直螺纹套筒现场平行检查及记录表
- JJG 856-2015 工作用辐射温度计检定规程-(高清现行)
- 益美高引风式冷却塔特点介绍
评论
0/150
提交评论