C语言实现简单UNIX文件模拟系统
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h>
int physic[300]; /* 文件地址缓冲区 / int style=1; / 文件的类型 */
char cur_dir[10]="c"; /* 当前目录 */
struct command { char com[10]; }cmd[12];
struct block { int n; /* 空闲的盘快的个数 / int free[50]; / 存放空闲盘快的地址 / int a; / 模拟盘快是否被占用 */ }memory[200];
struct block_super { int n; /* 空闲的盘快的个数 / int free[50]; / 存放进入栈中的空闲块 / int stack[50]; / 存放下一组空闲盘快的地址 */ }super_block;
struct node /* i结点信息 / { int file_style; / i结点 文件类型 / int file_length; / i结点 文件长度 / int file_address[100]; / i结点 文件的物理地址 */ } i_node[64];
struct dir /* 目录项信息 / { char file_name[10]; / 文件名 / int i_num; / 文件的结点号 / char dir_name[10]; / 文件所在的目录 */ } c[64];
void format() /* 格式化 / { int i,j,k; super_block.n=50; for(i=0;i<50;i++) / 超级块初始化 / { super_block.free[i]=i; / 存放进入栈中的空闲块 / super_block.stack[i]=50+i; / 存放下一组的盘块 */ }
for(i=0;i<64;i++) /* 信息初始化 */
{
for(j=0;j<100;j++)
{
i_node[i].file_address[j]=-1;/* 文件地址 */
}
i_node[i].file_length=-1; /* 文件长度 */
i_node[i].file_style=-1; /* 文件类型 */
}
for(i=0;i<64;i++) /* 根目录区信息初始化 */
{
strcpy(c[i].file_name,"");
c[i].i_num=-1;
strcpy(c[i].dir_name,"");
}
for(i=0;i<200;i++) /* 存储空间初始化 */
{
memory[i].n=0; /* 必须有这个 */
memory[i].a=0;
for(j=0;j<50;j++)
{
memory[i].free[j]=-1;
}
}
for(i=0;i<200;i++) /* 将空闲块的信息用成组链接的方法写进每组的最后一个块中 */
{ /* 存储空间初始化 */
if((i+1)%50==0)
{
k=i+1;
for(j=0;j<50;j++)
{
if(k<200)
{
memory[i].free[j]=k;/* 下一组空闲地址 */
memory[i].n++; /* 下一组空闲个数 注意在memory[i].n++之前要给其赋初值 */
k++;
}
else
{
memory[i].free[j]=-1;
}
}
memory[i].a=0; /* 标记为没有使用 */
continue; /* 处理完用于存储下一组盘块信息的特殊盘块后,跳过本次循环 */
}
for(j=0;j<50;j++)
{
memory[i].free[j]=-1;
}
memory[i].n=0;
}
printf("已经初始化完毕\n");
printf("欢迎进入UNIX文件模拟系统!!!\n\n");
}
原文地址: https://www.cveoy.top/t/topic/f1DI 著作权归作者所有。请勿转载和采集!