操作系统chapter4指导.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统回收分区的主要步骤:1 检查回收分区是否与空闲区邻接,如邻接则加以合并;2 修改说明表 释放区邻接的分区情况可能是:释放区邻接的是另一进程的已分配区,或者是空闲区。 下面以首次适应法说明了系统回收该进程占用区存在的四种可能情况。设进程的释放区为R,与R相邻的两个空闲区分别为F1和F2。R的首地址送LOC,R的尾地址送LOC1,R的大小送SIZE。 (a)若释放区R与F1相邻接,即其低地址部分邻接一空闲区。将R与F1合并,合并后的空闲区仍记为F1。 如何判断释放区R 是否与某个空闲区相邻呢?只要从链首开始查找即可:若F1的首地址+F1的大小=R的首地址,说明R与F1相邻接。只要修改F1的大小= F1的大小+LOC,其它参数不变, 在链中的位置不变。 (b)若释放区R与F2相邻接,即其高地址部分邻接一空闲区。将R与F2合并,合并后的空闲区记仍记为F2。 判断释放区R 是否与F2空闲区相邻,只要从链首开始查找。 若LOC+SIZE=F2的首地址,说明R与F2相邻接。需修改F2的首地址=LOC,F2的大小= F2+SIZE。 某系统采用动态分区分配方式管理内存,内存空间为640K,高端40K用来存放操作系统。在内存分配时,系统优先使用空闲区低端的空间。对下列请求序列:作业1申请130K、作业2申请60K、作业3申请100K、作业2释放60K、作业4申请200K、作业3释放100K、作业1释放130K、作业5申请140K、作业6申请60K、作业7申请50K、作业6释放60K,请分别画图表示出使用首次适应算法和最佳适应算法进行内存分配和回收后内存的实际使用情况。 覆盖 覆盖与交换是解决大作业与小主存矛盾的两种存贮管理技术,它们实质上是对主存进行了逻辑扩充。 一、 覆盖(overlay) 所谓覆盖,是指同一主存区可以被不同的程序段重复使用。通常一个作业由若干个功能上相互独立的程序段组成,作业在一次运行时,也只用到其中的几段,利用这样一个事实,我们就可以让那些不会同时执行的程序段共用同一个主存区。因此,我们把可以相互覆盖的程序段叫做覆盖。而把可共享的主存区叫做覆盖区。 为此,我们把程序执行时并不要求同时装入主存的覆盖组成一组,叫覆盖段,并分配同一个主存区。这样,覆盖段与覆盖区一一对立。 覆盖的基本原理可用图4.13例子说明。作业J由六段组成。图中的(a)给出了各段之间的逻辑调用关系。 为了实现覆盖管理,系统必须提供相应的覆盖管理控制程序。当作业装入运行时,由系统根据用户提供的覆盖结构进行覆盖处理。当程序中引用当前尚未装入覆盖区的覆盖中的例程时,则调用覆盖管理控制程序,请求将所需的覆盖装入覆盖区中,系统响应请求,并自动将所需覆盖装入主存覆盖区中。 例如,设某进程的程序正文段由A,B,C,D,E和F等6个程序段组成。它们之间的调用关系如图5.13(a)所示,程序段A调用程序段B和C,程序段B又调用程序段F,程序段C调用程序段D和E。 由图5.13(a)可以看出,程序段B不会调用C,程序段C也不会调用B。因此,程序段B和C无需同时驻留在内存,它们可以共享同一内存区。同理,程序段D、E、F也可共享同一内存区。其覆盖结构如图5.13(b)所示。 覆盖示例 在图5.13(b)中,整个程序正文段被分为两个部分。一个是常驻内存部分,该部分与所有的被调用程序段有关,因而不能被覆盖。这一部分称为根程序。图5.13(b)中,程序段A是根程序。另一部分是覆盖部分,图中被分为两个覆盖区。其中,一个覆盖区由程序段B,C共享。其大小为B,C中所要求容量大者。另一个覆盖区为程序段F,D,E共享。两个覆盖区的大小分别为50 K与40 K。这样,虽然该进程正文段所要求的内存空间是A(20K)+B(50K)+F(30K)+C(30K)+D(20K)+E(40K)=190K,但由于采用了覆盖技术,只需110 K的内存空间即可开始执行。 覆盖技术的关键是提供正确的覆盖结构。通常,一个作业的覆盖结构要求编程人员事先给出。对于一个规模较大或比较复杂的程序来说是难以分析和建立它的覆盖结构的。因此,通常覆盖技术主要用于系统程序的主存管理上。例如,磁盘操作系统分为两部分,一部分是操作系统中经常用到的基本部分,它们常驻主存且占有固定区域。 另一部分是不经常用的部分,它们放在磁盘上,当调用时才被装入主存覆盖区中运行。 覆盖技术的主要特点是打破了必须将一个作业的全部信息装入主存后才能运行的限制。在一定程度上解决了小主存运行大作业的矛盾。 4 请求表 请求表用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置。为了完成这个任务,系统必须知道每个作业或进程的页表起始地址和长度,以

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档