操作系统 文件存储空间管理(3)

2019-03-09 17:27

} } else

{ i=MA[0]; if(i==1)

printf(\ else

{ printf(\ for(j=2;j<=i;j++)

{ printf(\ \ mark[++No]=MA[j]; } } } }

void display() /*显示分组情况*/ { int i,j;

if(MA[0]!=0) display1(); else

{ i=MA[1];

for(j=0;j<=3;j++) MA[j]=A[i][j]; display1(); } }

void assign() /*分配空闲块*/ { int s,i;

if(MA[0]>1) /*若该组不止一个空闲块*/ { i=MA[0]; s=MA[i]; MA[0]--;

printf(\ }

else if(MA[0]==1) /*只剩一个空闲块*/

{ if(MA[1]!=0) /*还有其它空闲块组*/ { s=MA[1];

for(i=0;i<=3;i++) A[0][i]=A[s][i]; MA[0]--;

printf(\

}

else /*没有其它空闲块组*/ { printf(\ return; } }

else /*当前组已分配完*/ { for(i=0;i<=3;i++) MA[i]=A[0][i]; assign(); }

display(); /*显示分组情况*/ }

void callback() /*回收空闲块*/ { int i,j,temp;

printf(\ scanf(\

getchar(); /*得到待回收的空闲块号*/ for(temp=1;temp<=No;temp++) { if(mark[temp]==j) break; }

if(temp

if(MA[0]<3) /*当前组不满3块*/ { i=MA[0]; MA[i+1]=j; MA[0]++; }

else /*已有3块*/ { for(i=0;i<=3;i++) A[j][i]=MA[i]; MA[0]=1; MA[1]=j; }

display(); /*显示*/ }

int filecontrol();

void menu() /*功能选择函数*/

{ int choice; char judge;

printf(\文件管理空间管理\\n\

printf(\ scanf(\ getchar(); if(choice==1) assign();

else if(choice==2) callback(); else if(choice==3) filecontrol(); else

printf(\

printf(\ scanf(\ getchar(); if(judge=='y') menu(); else

{ printf(\ display();

printf(\ getchar(); } }

void chengzulink() { int i;

for(i=0;i<=3;i++) MA[i]=A[0][i]; display(); menu(); }

int filecontrol() //主函数 { int i, j=0,p,len=0;

char tmp[10],com[10],tmp1[10],k; struct command tmp2[10]; FILE *fp; help();

strcpy(cmd[0].com,\ //将各个命令存进命令表 strcpy(cmd[1].com,\ strcpy(cmd[2].com,\ strcpy(cmd[3].com,\ strcpy(cmd[4].com,\

strcpy(cmd[5].com,\ strcpy(cmd[6].com,\ strcpy(cmd[7].com,\ strcpy(cmd[8].com,\ strcpy(cmd[9].com,\ strcpy(cmd[10].com,\ strcpy(cmd[11].com,\ strcpy(cmd[12].com,\

if((fp=fopen(\ //判断系统文件是否存在 {

printf(\

printf(\ Y / N \\n\ scanf(\ if(k=='y') format(); } else {

read_file(fp); //读取系统文件的内容 }

while(1) {

j=0; //必须重新给恢复0否则出错 strcpy(tmp,cur_dir);

while(strcmp(tmp,\ {

for(i=0;i<640;i++) {

p=root[i].i_num;

if(strcmp(tmp,root[i].file_name)==0 && (i_node[p].file_style==0)) {

strcpy(tmp2[j].com,tmp); j++;

strcpy(tmp,root[i].dir_name); } } }

strcpy(tmp2[j].com,tmp); for(i=j;i>=0;i--) {

printf(\ }

scanf(\ //输入命令并且查找命令的相关操作 for(i=0;i<13;i++) {

if(strcmp(com,cmd[i].com)==0) { p=i; break; } }

if(i==13) //如果没有这个语句以后输入的命令都和第一次输入的效果一样 {

p=14; //随便的一个值 }

switch(p) {

case 0: format(); //初始化 break;

case 1: display_curdir(); //查看当前目录下的文件列表 break;

case 2: scanf(\ //查看文件 open_file(tmp); break;

case 3: display_sys(); //查看系统信息 break;

case 4:scanf(\ //创建目录 create_dir(tmp); break;

case 5: scanf(\ //创建文件 scanf(\ create_file(tmp,len); break;

case 6: scanf(\ //删除文件

for(i=0;i<640;i++) //判断文件是不是正规文件 {

j=root[i].i_num;

if(strcmp(tmp,root[i].file_name)==0 && (i_node[j].file_style)==1) {

del_file(tmp); break; } }

if(i==640) {

printf(\这个不是正规文件文件\\n\

} break; case 7:

scanf(\ //删除目录 del_dir(tmp); break;

case 8: scanf(\ //进入当前目录下的指定目录 相当于进入目录 cd + 目录名

display_dir(tmp1); break;

case 9: back_dir(); //返回上一级目录 break;

case 10:help(); break;

case 11:write_file(fp); //将磁盘利用信息写进系统文件,退出 return 0; case 12:

chengzulink(); break;

default:printf(\,没有这个命令\\n\ break; } } }

int main() { int i;

printf(\操作系统课程设计\\n\ printf(\请输入选择\\n\

printf(\ 2 stand for chnegzu control)\\n\ scanf(\ if(i==1)

filecontrol(); else if(i==2)

chengzulink(); else ; return 0; }


操作系统 文件存储空间管理(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年中国金属银市场调查及前景报告目录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: