欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    磁盘存储空间的分配和回收.docx

    • 资源ID:8035292       资源大小:173.61KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    磁盘存储空间的分配和回收.docx

    1、磁盘存储空间的分配和回收实习六 磁盘存储空间的分配和回收1、实习内容模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。2、实习目的磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实习使学生掌握磁盘存储空间的

    2、分配和回收算法。3、实习题目本实习模拟三种磁盘存储空间的管理方法。第一题:连续的磁盘存储空间的分配和回收。提示:(1) 要在磁盘上建立顺序文件时,必须把按序排列的逻辑记录依次存放在磁盘的连续存储空间中。可假定磁盘初始化时,已把磁盘存储空间划分成若干等长的块(扇区),按柱面号和盘面号的顺序给每一块确定一个编号。随着文件的建立、删除、磁盘存储空间被分成许多区(每一区包含若干块),有的区存放着文件,而有的区是空闲的。当要建立顺序文件时必须找到一个合适的空闲区来存放文件记录,当一个文件被删除时,则该文件占用的区应成为空闲区。为此可用一张空闲区表来记录磁盘存储空间中尚未占用的部分,格式如下:序 号起始空

    3、闲块号空闲块个数状 态156未 分 配2143未 分 配32130未 分 配4空 表 目 (2) 要建立文件时,先查找空闲区表,从状态为“未分配”的登记栏目中找出一个块数能满足要求的区,由起始空闲块号能依次推得可使用的其它块号。若不需要占用该区的所有块时,则剩余的块仍应为未分配的空闲块,这时要修改起始空闲块号和空闲块数。若占用了该区的所有块,则相应登记栏中的状态修改成“空表目”。删除一个文件时,从空闲区表中找一个状态为“空表目”的登记栏目,把归还的起始块号和块数填入对应的位置。磁盘存储空间的分配和回收算法类似于主存储器的可变分区方式的分配和回收。同学们可参考实习四的第一题。(3) 当找到空闲块

    4、后,必须启动磁盘把信息存放到指定的块中,启动磁盘必须给出由三个参数组成的物理地址:柱面号、磁道号和物理记录号。故必须把找到的空闲块号换算成磁盘的物理地址。为了减少移臂次数,磁盘上的信息按柱面上各磁道顺序存放。现假定一个盘组共有200个柱面,(编号0-199)每个柱面有20个磁道(编号0-19,同一柱面上的各磁道分布在各盘面上,故磁道号即盘面号。),每个磁道被分成等长的6个物理记录(编号0-5,每个盘面被分成若干个扇区,故每个磁道上的物理记录号即为对应的扇区号。)。那么,空闲块号与磁盘物理地址的对应关系如下:假设M= , m= 则 物理记录号 = m磁道号= 柱面号= (4) 删除一个文件时,从

    5、文件目录表中可得到该文件在磁盘上的起始地址和逻辑记录个数,假定每个逻辑记录占磁盘上的一块,则可推算出归还后的起始空闲块号和块数,登记到空闲区表中。换算关系如下:起始空闲块号=(柱面号 20+磁道号) 6+物理记录号空闲块数=逻辑记录数(5) 请设计磁盘存储空间的分配和回收程序,要求把分配到的空闲块转换成磁盘物理地址,把归还的磁盘空间转换成空闲块号。假定空闲区表的初值如提示(1)中指出,现有一文件要占用10块,运行你所设计的分配程序,显示或打印分配后的空闲区表以及分配到的磁盘空间的起始物理地址。然后,有一文件被删除,它占用的磁盘空间为:1号柱面2号磁道,0号物理记录开始的4块,运行你所设计的回收

    6、程序,显示或打印回收后的空闲区表。第二题:用位示图管理磁盘存储空间提示:(1) 为了提高磁盘存储空间的利用率,可在磁盘上组织成链接文件、索引文件,这类文件可以把逻辑记录存放在不连续的存储空间。为了表示哪些磁盘空间已被占用,哪些磁盘空间是空闲的,可用位示图来指出。位示图由若干字节构成,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。位示图的形式与实习四中的位示图一样,但要注意,对于主存储空间和磁盘存储空间应该用不同的位示图来管理,绝不可混用。(2) 申请一块磁盘空间时,由分配程序查位示图,找出一个为“0”的位,计算出这一位对应块的磁盘物理地址,且把该位置成占用状态

    7、“1”。假设现在有一个盘组共80个柱面,每个柱面有两个磁道,每个磁道分成4个物理记录。那么,当在位示图中找到某一字节的某一位为“0”时,这个空闲块对应的磁盘物理地址为:柱面号=字节号磁道号= 物理记录号= (3) 归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址计算出归还块在位示图中的对应位,把该位置成“0”。按照(2)中假设的盘组,归还块在位示图中的位置计算如下:字节号=柱面号位数=磁道号 4+物理记录号(4) 设计申请一块磁盘空间和归还一块磁盘空间的程序。要求能显示或打印程序运行前和运行后的位示图;分配时把分配到的磁盘空间的物理地址显示或打印出来,归还时把归还块对应于位示图的字节号和位

    8、数显示或打印出来。(5) 假定已有如表6-1的磁盘空间被占用了,现在要申请五块磁盘空间,运行分配程序,按(4)中要求显示或打印运行的结果。然后再归还如表6-2的空间,运行回收程序,按(4)中的要求显示或打印运行结果。表6-1柱面号磁道号物理记录号001002010013100112表6-2柱面号磁道号物理记录号002010101第三题:模拟UNIX系统的空闲块成组链接法,实现磁盘存储空间的管理。提示:(1) 假定磁盘存储空间已被划分成长度为n的等长块,共有M块可供使用。UNIX系统中采用空闲块成组链接的方法 来管理磁盘存储空间,将磁盘中的每N个空闲块(NM)分成一组,最后一组可以不足N块,每组

    9、的第一块中登记了下一组空闲块的块数和块号,第一组的块数和块号登记在专用块中,登记的格式如下:0空闲块数k1空闲块号12空闲块号2 K空闲块号k 当第一项内容为“0”时,则第二项起指出的空闲块是最后一组。(2) 现模拟UNIX系统的空闲块成组链接,假定共有8块可供使用,每3块为一组,则空闲块成组链接的初始状态为:开始时,空闲块号是顺序排列的,但经若干次的分配和归还操作后,空闲块的链接就未必按序排列了。用二维数组A:array 0M-1 of array 0n-1来模拟管理磁盘空间,用Ai表示第I块,第0块A0作为专用块。(3) 成组链接的分组情况记录在磁盘物理块中,为了查找链接情况,必须把它们读

    10、入主存,故当磁盘初始化后,系统先将专用块内容复制到主存中。定义一个数组MA存放专用块内容,即MA: =A0。申请一块磁盘空间时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,则应把该块中指出的下一组的空闲块数和块号复制到专用块中,然后把该块分配给申请者。当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到主存,再为申请者分配。分配算法如图6-1。图6-1 采用成组链接的分配算法(4) 归还一块时给出归还的块号,叵当前组不满规定块数时,将归还块登记入该组;若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把主存中登记的一组链接情况MA复制到归还块中,然后在MA重新登记一

    11、个新组。归还一块的算法如图6-2。图6-2 采用成组链接的回收算法(5) 设计分配和归还磁盘空间的程序,能显示或打印分配的磁盘空间的块号,在完成一次分配或归还后能显示或打印各空闲块组的情况(各组的空闲块数和块号)。本实习省去了块号与物理地址之间的转换工作,而在实际的系统中必须进行块号与物理地址的转换工作。(6) 运行你所设计的程序,假定空闲块链接的初始状态如提示(2),现先分配4块,再依次归还第2块和第6块。把执行后分配到的块号依次显示或打印出来,且显示或打印空闲块组的情况。在上次执行的基础上继续分配3块,然后归还第1块,再申请5块,显示或打印依次分配到的块号及空闲块组情况。4、相关数据结构及

    12、说明 struct freeblock int FBbegin;/起始空闲块号 int num;/空闲块数 char state;/状态 struct freeblock *next; structfiletowritecharname10;/文件名 intsize;/文件大小intaddr_cylinder;/装入磁盘的首地址_柱面号intaddr_track;/装入磁盘的首地址_磁道号intaddr_note;/装入磁盘的首地址_物理记录号structfiletowrite*next;六、源代码及注释1、题一源代码:#include#includeintgetmalloc()/分配磁盘空间

    13、intflag=0;structfreeblock*p=FBhead;structfiletowrite*File;File=(structfiletowrite*)malloc(sizeof(structfiletowrite);printf(输入要装入的文件名:);scanf(%s,File-name);printf(输入所需的磁盘空间大小:);scanf(%d,&File-size);for(p=FBhead-next;p!=NULL;p=p-next)if(File-size)num)/分配空间flag=1;File-addr_cylinder=(p-FBbegin)/6)/20; F

    14、ile-addr_track=(p-FBbegin)/6)%20;File-addr_note=(p-FBbegin)%6;File-next=Filehead-next;/加入文件链表Filehead-next=File;if(File-size)num)/修改该快的起始地址和块数p-FBbegin=p-FBbegin+File-size;p-num=p-num-File-size;elsep-state=U;break;if(flag=0)printf(抱歉!目前没有足够的磁盘空间分配给该文件.n);elseprintf(分配磁盘成功!n该文件的物理地址:n柱面号t磁道号t物理块号n);p

    15、rintf(%dt%dt%dn,File-addr_cylinder,File-addr_track,File-addr_note);intdeletelfree()/回收磁盘空间charname10;intflag=0;structfiletowrite*p;printf(输入要删除的文件名:);scanf(%s,&name);for(p=Filehead;p-next!=NULL;p=p-next)if(strcmp(p-next-name,name)=0)/找到该文件flag=1;intfunion=0,nunion=0;intm=p-next-addr_cylinder;intn=p-

    16、next-addr_track;intk=p-next-addr_note;intaddr=(m*20+n)*6+k;/起始空闲块号inttail=p-next-size+addr;structfreeblock*pnode,*qnode,*tnode,*snode;pnode=FBhead-next;while(pnode!=NULL)/先考虑和后面的部分或许有合并的情况if(pnode-FBbegin)=tail)pnode-FBbegin=addr;pnode-num=pnode-num+p-next-size;nunion=1;break;pnode=pnode-next;qnode=

    17、FBhead-next;while(qnode!=NULL)/再考虑是否和前面的可以合并if(qnode-FBbegin+qnode-num)=addr)if(nunion=0)qnode-num=qnode-num+p-next-size;funion=1;break;elseqnode-num=qnode-num+pnode-num;tnode=FBhead;while(tnode-next!=pnode)tnode=tnode-next;tnode-next=pnode-next;free(pnode);funion=1;break;qnode=qnode-next;if(funion=

    18、0&nunion=0)/若没有和前面的或后面的进行合并,则新建一个表目snode=(structfreeblock*)malloc(sizeof(structfreeblock);snode-FBbegin=addr;snode-num=p-next-size;snode-state=F;if(FBhead-next=NULL)FBhead-next=snode;snode-next=NULL;elsesnode-next=FBhead-next;FBhead-next=snode;structfiletowrite*q;q=p-next;/除该文件p-next=p-next-next;fre

    19、e(q);break;if(flag=0)printf(没有该文件!n);elseprintf(文件删除成功!n);intdispfree()/显示磁盘空闲区表inti=1;structfreeblock*p=FBhead;printf(n磁盘空闲区表n);printf(序号t起始空闲块号t空闲块个数t状态n);for(p=FBhead-next;p!=NULL;p=p-next)if(p-state)=F)printf(%dt%dtt%dtt未分配n,i+,p-FBbegin,p-num);elseprintf(%dttttt空表目n,i+);intdispfile()charname10;

    20、structfiletowrite*p=Filehead;printf(输入要查看的文件名:);scanf(%s,&name);for(p=Filehead-next;p!=NULL;p=p-next)if(strcmp(p-name,name)=0)printf(该文件的物理地址:n柱面号t磁道号t物理块号n);printf(%dt%dt%dn,p-addr_cylinder,p-addr_track,p-addr_note);break;if(p=NULL)printf(没有该文件!n);intmain()intn,i,AMAX,BMAX;/AMAX表示起始空闲块号,BMAX表示空闲块个数

    21、charch;structfreeblock*pnew;FBhead=(structfreeblock*)malloc(sizeof(structfreeblock);FBhead-next=NULL;printf(输入磁盘空闲区个数:);scanf(%d,&n);for(i=1;inext=NULL;pnew-next=FBhead-next;FBhead-next=pnew;printf(起始空闲块号:);scanf(%d,&pnew-FBbegin);printf(空闲块个数:);scanf(%d,&pnew-num);pnew-state=F;pnew=pnew-next;Filehe

    22、ad=(structfiletowrite*)malloc(sizeof(structfiletowrite);Filehead-next=NULL;dosystem(cls);printf(ntt*主菜单*nn);printf(ttt1.新建文件n);printf(ttt2.删除文件n);printf(ttt3.查看磁盘n);printf(ttt4.查看文件n);printf(ttt5.退出n);printf(请选择:);scanf(%c,&ch);switch(ch)case1:getmalloc();system(pause);break;case2:deletelfree();system(pause);break;case3:dispfree();system(pause);break;case4:dispfile();system(pause);break;case5:exit(1);break;default:printf(输入错误!请重新输入.n);printf(n);getchar();while(ch!=4);return0;2、题二源代码:#include#includevoidInitbitmap(in


    注意事项

    本文(磁盘存储空间的分配和回收.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开