unix成组链接策略的模拟实现new

unix成组链接策略的模拟实现new

ID:19154535

大小:249.00 KB

页数:10页

时间:2018-09-27

unix成组链接策略的模拟实现new_第1页
unix成组链接策略的模拟实现new_第2页
unix成组链接策略的模拟实现new_第3页
unix成组链接策略的模拟实现new_第4页
unix成组链接策略的模拟实现new_第5页
资源描述:

《unix成组链接策略的模拟实现new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、课程设计题目UNIX成组链接策略的模拟实现二、课程设计目的通过模拟UNIX成组链接策略的实现,理解UNIX管理磁盘空闲空间的方法三、课程设计内容实现UNIX管理磁盘空闲空间的方法——成组链接。系统初始化时先把专用块内容读到内存,当需要分配空闲块时,就直接在内存中可找到哪些块。但要把一组中的第一个空闲块分配出去之前应把登记在该块中的下一组的块号及块数保存到专用块中。当一组空闲块被分配完后,则再把专用块的内容读到内存,指出另一组可供分配的空闲块。当归还一块时,只要把归还块的块号登记到当前组中且空闲块数加1。如果当组已经满100块,则把内存中的内容写到归还的那块中,该归还

2、块作为新组的第一块。本题目的简化假设是:1、设磁盘空闲块现有100块,块号就是[0,99]。每组有10块,因此盘块号栈容量也为10。2、申请和释放块的请求由自己随机产生(块数及假想的文件名),让你的程序循环,发生200次请求,在前半期以申请块请求居多,在后半期以释放块请求居多。3、如果万一发生100块都用完的情况,就报告,且保存新产生的申请请求,直到有新的释放请求发出。4、每次请求完成后,列出本次请求的简要情况。全部请求完成后,列出现在的磁盘空间状况(空闲或已分配给哪个“文件”)。四、设计思路1.      原理:将若干个(如100)个空闲盘块规划在一个组,最后一组的空

3、闲盘块号存入系统文件资源表的空闲盘块号栈中,某一组的第一个空闲盘块中存放上一组的所有空闲盘块号。按后进先出原则分配盘块。2.       3.数据结构及各子程序:(1)structblock//成组链接的数据结构用链表来模拟组。{inta[10];intnum;structblock*next;};(2)structstack//堆栈的数据结构{int*base;int*top;intstacksize;};(3)structblock*creat(void)//创建100个编号0~99的块,10块为一组(4)voidprint(structblock*head)//打

4、印块号(5)structblock*assign(structblock*head,structstack*s,intrecord[100],intfile[100][10],intn)分配块record[100]记录分配的文件号file[100][10]用来记录申请的文件号和申请到的块号n为分配块数(6)structblock*callback(structblock*head,structstack*s,intrecord[100],intfile[100][10])回收函数(7)堆栈的几个相关函数:voidinitstack(structstack*s)//栈的初

5、始化voidpush(structstack*s,inte)//入栈intgettop(structstack*s)//获得栈顶元素intpop(structstack*s)//出栈intjudge(structstack*s)//判断栈是否为空voidtravelstack(structstack*s)//遍历栈五、课程设计总结与感想UNIX成组链接策略的模拟实现,为的就是能让我们理解UNIX管理磁盘空闲空间的方法——成组链接。所以这就要求我们一定要对这个课程有所一定的了解,然后通过编程模拟实现这个方法。#include#include

6、.h>#include#include#definestack_init_size100//栈的初始化大小为100个单位#definestackincrement10structstack//堆栈的数据结构{int*base;int*top;intstacksize;};structblock//成组链接的数据结构{inta[10];intnum;structblock*next;};structblock*creat(void)//创建100个编号0~99的块,10块为一组{structblock*head;structblock*

7、p1,*p2;intn=100,i;intm=0;//记录块号0~99p1=p2=(structblock*)malloc(sizeof(structblock));p1->num=m++;for(i=0;i<10;i++)p1->a[i]=0;head=NULL;while(n!=0){if(n==100)head=p1;elsep2->next=p1;p2=p1;p1=(structblock*)malloc(sizeof(structblock));p1->num=m++;for(i=0;i<10;i++)p1->a[i]=0;n-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。