磁盘存储空间的管理十大题型]算法全实现.docVIP

磁盘存储空间的管理十大题型]算法全实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
磁盘存储空间的管理十大题型]算法全实现

3-4日考题与答案(贡献) 抓紧时间练习了 2004-12-3 16:53:18 ? ?? ? ? weishenme ?? ?? ??等级:新手上路,请多关照 ??文章:11 ??积分:227 ??注册:2004-12-1 ? ? ? ? ? ? 第 2 楼 ? [原创][5.磁盘存储空间的管理/十大题型]算法全实现 /* 五 磁盘存储空间的管理 主要有: 位示图 和内存的位示差不多 空闲块表 和可变内存管理差不多 空闲块链 主要是UNIX成组链接法的设计与实现 UNIX系统文件管理成组连接算法说明 UNIX系统文件管理成组连接算法: 把空闲块分成若干组,把指向一组中各空闲块的指针集中一起。这样既可方便查找,又可减少为修改指针而启动磁盘的次数。 UNIX系统:采用空闲块成组连接的方法。 UNIX系统把每100个空闲块作为一组,每一组的第一个空闲块中登记下一组空闲块的块号和空闲块数, 余下不足100块的那部分空闲块的块号及块数登记在一个专用块中,登记最后一组块号的那个空闲块其中第2个单元填“0”, 表示该块中指出的块号是最后一组的块号,空闲块链到此结束。 系统初始化时先把专用块内容读到内存,当需分配空闲块时,就直接在内存中可找到哪些块强障械模糠峙湟豢楹蟀芽障锌槭。 但要把一组中的第一个空闲块分配出去之前应把登记在该块中的下一组的块号及块数保存到专用块中。 当一组空闲块被分配完后,则再把专用块的内容读到内存,指出另一组可供分配的空闲块。当归还一块时, 只要把归还块的块号登记到当前组中且空闲块数加1。如果当前组已满100块,则把内存中的内容写到归还的那块中, 该归还块作为新组的第一块。假设初始化时系统已把专用块读入内存L单元开始的区域中,分配和回收的算法如下: ??分配一个空闲块 查L单元内容(空闲块数): 当空闲块数1 i??=L+空闲块数; 从i单元得到一空闲块号; 把该块分配给申请者; 空闲块数减1。 当空闲块数=1 取出L+1单元内容(一组的第一块块号或0); 其值=0无空闲块,申请者等待 不等于零把该块内容复制到专用块; 该块分配给申请者; 把专用块内容读到主存L开始的区域。 归还一块 查L单元的空闲块数; 当空闲块数100 空闲块数加1; j??=L+空闲块数; 归还块号填入j单元。 当空闲块数=100 把主存中登记的信息写入归还块中; 把归还块号填入L+1单元; 将L单元置成1。 采用成组连接后,分配回收磁盘块时均在内存中查找和修改,只是在一组空闲块分配完或空闲的磁盘块构成一组时才启动磁盘读写。 比单块连接方式效率高。 ?? ???? 6月5日下午题是模拟UNIX的成组链接法的设计与实现 主要考的是利用文件输入一堆空闲块的号码,然后利用UNIX的成组链接法的管理方法,按照10块成一组, 并且可以实现输入一个数字N,然后把N个空闲块占用,输出专用块的大小,空闲号。如果专用块的空间不够, 把下一个成组的内容考入专用块。输出不要求写文件,但是要显示在屏幕上。 ?? 本程序包括:UNIX的成组链接法的设计与实现 ??VC++调试通过 ??(C)copyright by Neo ??欢迎大家测试 请问题请Email:sony006@163.com ??*/ #includestdio.h #includestring.h #includeiostream.h const int MAXGROUP=10;//定义组的大小 const int MAXJOB=100;//定义一个作业最大能申请的块数 //结构体定义 typedef struct node{ int quantity; int cell[MAXGROUP]; struct node *next; }group; typedef struct node1{ char name[20]; int quantity; int cell[MAXJOB]; struct node1 *next; }job; group *head; int total; job *jhead; //初始化组函数 group *initial() { int i; group *p; p=new group; p-quantity=0; p-next=NULL; for(i=0;iMAXGROUP;i++){ ??p-cell[i]=-1; } return p; } //初始化作业函数 job *initial_job() { int i; job *p; p=new job; strcpy(p-name,); p-quantity=0; p-next=NULL; for(i=0;iMAXGROUP;i++){ ??

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档