操作系统复习-存储管理.docx_第1页
操作系统复习-存储管理.docx_第2页
操作系统复习-存储管理.docx_第3页
操作系统复习-存储管理.docx_第4页
操作系统复习-存储管理.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.1 内存管理基础内存管理的主要任务是:为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。内存管理包括:内存分配,内存保护,地址映射,内存扩充。-应用程序的处理一般过程:由相应的语言处理程序将源程序模块对应转换成目标模块-由链接程序将所有相关的目标模块链接到一起,整合成一个可执行程序-由装入程序将程序装入内存后予以执行。重定位的概念:由于编译程序无法确定目标代码在执行时所对应的地址单元,故一般从0号单元开始为其编址。这样的地址称为相对地址、程序地址或虚拟地址。因此当装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成内存地址,这个过程称为地址重定位。重定位分为静态重定位和动态重定位两种,静态重定位在装入时将所有相对地址转换成绝对地址,这种装入方式要求作业在装入时就必须分配其要求的所有空间,整个运行过程中不能在内存中移动,也不能申请新空间;动态重定位是装入时不地址转换,在执行过程中由硬件的地址转换机构转换成绝对地址,这种装入方式可以将程序分配到不连续的存储区中,不必装入所有代码就可以运行,但是需要硬件支持。在重定位中通常设置一个重定位寄存器,里面放的是程序的基址,物理地址=基址+相对地址程序链接的方式:静态链接:在运行前链接装入时动态链接:边装入边链接运行时动态链接:运行到需要处才链接,便于修改和更新,便于实现共享程序装入的方式:绝对装入方式:在编译时就知道程序要驻留的内存地址(和静态重定位完全不是一回事)可重定位装入方式:有静态重定位和动态重定位两种其他方式:和分页和分段相结合-交换和覆盖的目的都是扩充逻辑内存交换技术:把暂时不用的某个程序及数据部分(或全部)从内存中移到外存,或吧指定的程序或数据从外存读到内存。交换技术打破了一个程序一旦进入主存便一直运行到结束的限制。覆盖技术:(定义略)覆盖技术要求程序员实现把一个程序划分成不同的程序段,并规定好它们的覆盖结构。打破了一个进程必须在全部信息都装入内存后才可运行的限制。-连续分配管理方式:(1)单一连续分配:把内存空间分为系统区和用户区,每次只装入运行一个程序,存储器利用率极低。(2)固定分区分配:将内存用户空间划分为若干个固定大小的区域,每个分区只装一道作业,分区大小可以相等也可以不等 优点:可用于多道程序系统最简单的存储分配 缺点:空间利用率较低(3)动态内存分配:又称可变内存分配,其做法是在作业进入内存时,根据作业的大小动态的建立分区 优点:实现了多道程序共享内存,管理方案相对简单,实现存储保护的手段相对简单 缺点:系统中总有一部分空间得不到利用,无法实现多进程共享存储器的信息,无法实现主存的扩充 动态内存分配算法 首次适应算法:将空闲分区链以地址递增的次序连接,在分配内存时,从链首开始查找,知道找到一个大小合适的空间区间为止由于首次适应算法每次都从低址开始找,这样容易造成内存各部分使用不均,所以又有了循环首次适应算法 循环首次适应算法:在分配内存空间时,从上次找到的空闲分区的下一个空闲分区开始查找循环首次适应算法可以减少查找开销,但可能导致较大的空闲分区 最佳适应算法:空闲分区按容量从小到大排列,每次分配时都将能满足要求且最小的空闲分区分配给作业最佳适应算法产生的碎片小但却多,这是优点也是缺点 最差适应算法:空闲分区按容量从大到小排列,每次分配时都将能满足要求且最大的空闲分区分配给作业最差适应算法能使每次留下的空闲区较大,便于下次使用,但是大的空间区不易保留 分区的回收:作业执行结束后要回收使用完毕的分区,系统根据回收分区的大小及首地址,在空闲分区表中检查是否有相邻的空闲区,如有则合并成一个大的空闲区,合并时可能出现的情况有三种:上邻接,下邻接和上下都邻接。 拼接(紧凑)技术:解决碎片问题的一种方法是采用拼接技术,所谓拼接是指将移动寄存器中所有已分配内存移到内存的一段,是原本分散的空闲区连成一个大的空闲区。拼接实际一般有两种:在某个分区回收时立刻拼接或在找不到合适的空闲区且空闲区的总容量可以满足作业要求时进行拼接。 存储保护:上下界寄存器法和基址限长寄存器法-非连续内存分配管理方式根据分区的大小固定和不固定又分为分页存储管理方式和分段存储管理方式,分页管理方式又分成基本分页存储管理方式和请求分页存储管理方式基本分页存储管理方式:实现思想:将作业分成若干个大小相等的区域,称为页,将内存也分成与页相等的区域,称为块。可以将作业中的任意一页放入内存中的任意一个空闲块中。在调度作业运行时,必须将它的所有页面一次调入内存,若内存中没有足够的物理块,则作业等待。逻辑地址结构:前一部分是页号P,后一部分是页内偏移量W,如果逻辑空间时2m,页面大小为2n,则逻辑地址的前m-n为时页号,后n位是页内偏移量。为便于在内存中找到进程中每个页面对应的物理块,系统为每个进程建立了一张页面映射表,简称页表,记录页面在内存中对应的物理块号,页表一般放在内存中。页表大小由机器的地址结构决定,一般在512B8KB之间。系统设置了一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表的长度M,进程未执行时,页表的的起始地址和长度放在进程控制块中,当进程执行时,在将页表的起始地址和长度存入PTR中。地址变换过程:假设页表起始地址为F,页表长度为M,页面大小为L,逻辑地址为A,要计算物理地址E:计算页号P=(int)A/L,页内偏移量W=A%L。比较页号和页表长度M,若P=M,则产生越界中断。在页表找到页号P对应的物理块号b=FP。E=b*L+W快表:由上面的地址变换过程可知,要想访问一个地址,只有要读取两次内存,这种方法比不用分页慢了一倍。为了加快内存存取速度,可以在高速缓存存储器中增加一个快表,快表中登记了一部分页号和块号的对应关系。根据程序执行局部性的特点,在一段时间内总是经常访问某些页,把这些页放入块表中可以有效提高执行速度有无页表访问时间比较:设访问内存一次需要时间为t,查找快表一次需要时间e,命中率为a。如果没有快表,读取一个地址平均时间为2t,如果有快表,平均时间为ae+(a-1)(e+t)+t=2t+e-ta(2-a)t(一般e可忽略不计)多级页表:当页表所占内存很大,无法用一个物理块装下时,就需要将页表分级。基本分段存储管理方式:在分页存储系统中,作业的地址空间是一维线性的,这破坏了程序内部天然的逻辑结构,造成共享、保护的困难。引入分段存储管理方式, 按逻辑地址将作业分段,每段都有自己的名字,可以根据段名来访问相应的程序段和数据段分段存储管理主要是为了满足用户和程序员的下述需要:1) 方便编程,2) 信息共享,3) 信息保护,4) 动态增长 ,5) 动态链接段的共享与保护:分段的共享是通过两个作业的段表中相应表项指向被共享分段的同一个物理副本来实现的。在多道程序环境下,必须注意共享段的信息保护问题,当一个作业正从共享段读取数据时,必须防止另一个作业修改共享段的数据。在大多数实现共享的系统中,程序被分成代码区和数据区。不能修改的代码称为纯代码或可重入代码。这样的代码和不能修改的数据时可以共享的,而可修改的代码和数据则不能共享。分段管理优缺点:优点:便于动态申请内存,管理和使用统一化,便于共享,便于动态链接;缺点:产生碎片分页和分段的主要区别:(1) 页是信息的物理单位,段则是信息的逻辑单位; (2) 页的大小固定且由系统决定,而段的长度却不固定; (3) 分页的作业地址空间是一维的,即单一的线性地址空间,分段的作业地址空间则是二维的。段页式存储管理:基本思想:将作业分段,再将段分页对主存储器的访问,是 B 。A.随存储器的管理方案不同而异 B.以字节或字为单位 B 存储管理方式提供一维地址结构。A.分段 B.分页C.段页式下列 C 存储管理方式能使存储碎片尽可能少,而且是内存利用率较高。A.固定分区 B.可变分区 C.分页管理D.段页式管理分页是由硬件完成的-3.2 虚拟内存管理由于常规存储器管理具有一次性(要求将作业全部装入内存才能运行)和驻留性(作业装入内存后,便一直驻留在内存中)的特点,难以满足作业有很大和有大量作业要求运行的情况。虚拟存储管理是一种借助于外存空间,从而允许一个进程在其运行过程中部分装入内存的技术。程序执行的局部性原理:在一较短的时间内,程序的执行仅局限于某个部分,相应的,它所访问的内存空间也局限于某个区域,这就是程序执行的局部性原理,可以分成空间局部性和时间局部性。虚拟存储器的实质是让程序所在的地址空间与运行时用于存放程序的存储空间区分开,程序员可以在地址空间内编写程序,而完全不用考虑实际内存的大小。实现虚拟存储技术的硬件支持:相当数量的外存,一定数量的内存,地址变换机构。常用虚拟存储技术:请求分页存储管理,请求分段时存储管理,请求段页式存储管理虚拟存储器特征:离散性,多次性,对换性,虚拟性请求分页存储管理:请求分页系统=基本分页系统+请求调页功能+页面置换功能实现思想:在请求分页存储管理中,作业运行之前,只要求将当前需要的一部分页面装入内存,便可启动作业运行。在作业执行过程中,当所要访问的页面不在内存时在通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。因为在运行过程中必然出现要访问的页面不在内存中的情况,所以需要对页表项进行扩充。扩充后的各字段如下:页号和物理块号:同基本分页管理状态位P(中断位):表示页面是否在内存中访问位A:用于记录页面在一段时间内被访问的次数,或最近已有多长时间未被访问,供置换算法参考修改位M:用于表示页面调入内存后是否修改过。当内存在外存中有副本时,若页表未被修改,则将该页面换出时不需要将页面写入外存,以减少磁盘写的次数。外存地址:指出页面在外存的存放地址缺页中断:在请求分页系统中,每当要访问的页面不在内存中时,便产生一缺页中断。一条指令在执行期间,可能产生多次缺页中断地址变换机构:当缺页中断产生后,系统将控制权转到缺页中断处理程序,缺页中断程序根据该页的外存地址将其调入内存,在调页过程中,如果内存有空闲空间,则缺页中断处理程序只需将缺页装入某个空闲块中,再修改对应页表项即可。如果内存无空闲块,则需要根据某种页面选择算法将某个页淘汰到外存,再把缺页写入内存。地址变换机构由硬件实现页面置换算法最佳置换算法(OPT):缺页率最低,但无法实现先进先出算法(FIFO):(略)最近最久未使用算法(LRU):选择最近一段时间内最长时间没有被访问过的页面予以淘汰。需要硬件支持时钟置换算法(CLOCK):LRU的近似算法。CLOCK算法给每个页面设置一个访问位,标识该页最近有没有被访问过,再将内存中的所有页面通过一个指针连接成一个循环队列。当程序需要访问链表中的页面时,该页面的访问位被置为1,否则,若程序要访问的页面在链表中不存在时,那就需要淘汰一个内存中的页面,于是一个指针p就从上次被淘汰指针的下一个位置开始顺序的遍历这个循环列表,当指针p指向的页面访问位为1时,就重新将它置为0,当指针p所指的页面访问位为0时,就选择这一页面淘汰;因为链表是循环的,所以算法一定能终止。CLOCK算法比LRU要少很多硬件支持。改进型CLOCK置换算法:首选最近为被访问过且未修改过的页面,即找那些访问位(A)和修改位(M)都是0的页面,过程如下:第一步:试着找一个A=0,M=0的页面,不修改访问位。第二步,如果第一步失败,则查找A=0,M=1的页面,并且把扫描过的页面A都置零。第三步,如果转了一圈还是没找到,就返回步骤一,必要时再转到步骤二,算法一定能终止。该算法可以减少I/O次数,但是可能需要经过几轮扫描。最少使用置换算法(LFU)页面缓冲算法(PBA)页面分配策略:固定分配局部置换:基于进程类型或程序员建议,为每个进程分配一定数目的物理块,在运行过程中不再改变。缺页时选一页换出。可变分配全局置换:先为系统中每个进程分配一定数目物理块,OS自身保持一个空闲的物理块队列,在某进程发生缺页时,由系统从空闲的物理块队列中取出一个块分给进程,将所缺的页调入其中。可变分配局部置换:先为系统中每个进程分配一定数目物理块,如果该进程频繁发生缺页中断,则系统再为进程分配物理块。页面调入策略:请求调页策略:每次调入一页预调页策略:每次调入缺页与缺页响铃的几个页面,常用与程序的首次调入。缺页率:影响缺页率的因素:页面置换算法物理块数目:数目越多,缺页率越低页面大小:页面大,缺页率低程序特性抖动现象:当主存中调出一个页面后马上又要使用这个页面,系统不断产生缺页中断,这种现象称为抖动。抖动现象会使CPU的利用率降低和系统吞吐量降低。预防抖动策略:采用局部置换策略:只在自己的内存空间置换页面,不允许从其他进程获得物理块。即使有某个进程发生了抖动,也会导致其他页面发生抖动。在CPU调度程序中引入工作集算法,在调度程序从外存上调入作业之前,还必须检查每个进程在内存中的驻留集是否足够大,足够大时才调入。L=S准则:使产生缺页的平均时间L等于系统处理进程缺页的平均时间S,这使CPU利用的最好挂起若干进程Belady现象:有时候缺页率可能会随着所分配的内存块增加而增加,这种现象称为Be

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论