1 / 12
文档名称:

空闲磁盘存储空间的管理:位示图法.doc

格式:doc   大小:26KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

空闲磁盘存储空间的管理:位示图法.doc

上传人:wxc6688 2019/11/14 文件大小:26 KB

下载得到文件列表

空闲磁盘存储空间的管理:位示图法.doc

文档介绍

文档介绍:空闲磁盘存储的管理:位示图法1:建立相应的数据结构2:磁盘上建立一个文件,文件长度设为10MB,为该文件来模拟一个磁盘,磁盘的物理块大小为512字节3:显示每次磁盘的请求和空间释放后的位示图状态4显示每次磁盘的请求和空间释放后的全磁盘的状态5:模拟文件的创建和删除,从而产生磁盘潘快请求和释放,验证以上设计代码://OS暑?期ú课?程ì设Θ?计?.cpp:定¨义?控?制??应畖用?程ì序ò的?入?口ú点?。£//#include""#include<iostream>#include<string>#include<>usingnamespacestd;//文?件t类え?classfile{public:stringname;upy;intgrade_block;intstart;};#defineMAX_LINE3#defineMAX_COLUMN32intBIT[32][1000];intbyte[MAX_LINE];intfile_count;intjudge[32];intjudge2[32];intcycle;filef[1000];voidinit(intline,intcolumn);voidshow();voidset(intnow_location,upy);voidclear(intnow_location,upy);voidbitset(intindex,inttemp_block_quantity);voidcreate_file(stringtemp_name,upy);voiddelete_file(stringname);boolbyte_judge(intnum,inti);int_tmain(intargc,_TCHAR*argv[]){stringcmd;stringfile_name;upy;init(MAX_LINE,MAX_COLUMN);//初?始?化ˉwhile(cin>>cmd)//{if("q"==cmd||"Q"==cmd){exit(0);return0;}cin>>file_name;if("create"==cmd){cin>>upy;create_file(file_name,upy);}else{delete_file(file_name);}}return0;}voidshow(){for(inti=0;i<MAX_LINE;i++){for(intj=0;j<MAX_COLUMN;j++){//cout<<BIT[i][j]<<"";cout<<byte_judge(byte[i],j)<<"";}cout<<endl;}}voidset(intnow_location,upy){intline;intcolumn;for(inti=0;i<occupy;i++){line=(now_location-i)/MAX_COLUMN;column=(now_location-i)%MAX_COLUMN;//BIT[line][column]=1;byte[line]|=judge[column];}}//清?零?voidclear(intnow_location,upy){intline;intcolumn;for(inti=0;i<occupy;i++){line=(now_location+i)/MAX_COLUMN;column=(now_location+i)%MAX_COLUMN;//BIT[line][column]=0;byte[line]&=judge2[column];}}voidbitset(intindex,inttemp_block_quantity){intblock_quantity=temp_block_quantity;intfree_quantity=0;intline,column;intsign=cycle-1;for(;;cycle++){line=cycle/MAX_COLUMN;column=cycle%MAX_COLUMN;if(0==byte_judge(byte[line],column)){free_quantity++;}else{free_quantity=0;}if(free_quantity>=block_quantity){f[index].start=cycle-block_quantity+1;set(cycle,block_quantity);cycle++;cout<<"ess"<<endl;show();return;}if(cycle>=MAX_LINE*MAX_COLUMN-1){cycle=-1;free_quantity=0;}if(sign==cycle){b