毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

操作系统课程设计-成组链接模拟unix文件系统

更新时间:2007-10-30:  来源:毕业论文
操作系统课程设计-成组链接模拟unix文件系统|精品课程网站设计|课程设计网报告总结心得

[问题描述]
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟UNIX文件系统 。
[基本要求]                        
 1.在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。
     2.编写一管理程序对此空间进行管理,以模拟UNIX(linux)文件系统,具体要求如下:
(1) 要求盘块大小1k

 (2) i  结点文件类型 正规文件目录文件(共1byte)块设备 管道文件
                  。物理地址(索引表)
                      共有13个表项,每表项2byte
                  。文件长度     4byte
                  。联结计数     1byte
        (3)0号块  超级块    栈长度50
            空闲盘块的管理:成组链接   ( UNIX)
                                 位示图法   (Linux) 
        (4)每建一个目录,分配4个物理块
                           文件名   14byte
        (5)目录项信息
                           i 结点号  2byte

(6)结构:  0#: 超级块
        1#-20#号为 i  结点区
        20#-30#号为根目录区
(7)功能:  1、初始化
        2、建立文件(需给出文件名,文件长度)
        3、建立子目录
        4、打开文件(显示文件所占的盘块)
        5、删除文件
        6、删除目录
        7、显示目录(即显示目录下的信息,包括文件、子目录等)
        8、显示整个系统信息
2、模拟文件系统
[问题描述]
     在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的小型文件系统。
[基本要求]
该小型文件系统没有子目录机制,文件连续分配,不考虑分区。
做一个简单的 操作界面,提供四条简单的命令:简单的ls、cat、cp、rd.
进一步增强:
上题中的文件系统功能:文件系统不连续分配,可以有子目录 机制,(如两级子目录机制)。
附录    课程设计报告内容
一.实验题目与要求。
二.总的设计思想及环境说明、工具等。
三.本题所需数据结构与模块说明。
四.运行结果与运行情况。
五.自我评析与总结。
1. 你认为你完成的哪些比较好或比较出色;
2. 差距与局限,什么做的不太好或什么地方可以做的更好以待改进;
3. 从本作业得到的收获:对编写与调试过程中经验教训的总结;
4. 完成本题的其他方法或你的设想;
5. 对本实验题的评价和改进意见。

#include "stdio.h"
#include <stdlib.h>
#include <conio.h>
#include <string.h>
  
int physic[100];    //文件地址缓冲区
int style=1;     //文件的类型
char cur_dir[10]="root";  //当前目录 
  
struct command
{
 char com[10];
}cmd[12];

struct block
{
 int n;      //空闲的盘快的个数
 int free[50];    //存放空闲盘快的地址
 int a;      //模拟盘快是否被占用
}memory[20449];

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[640];

struct dir      //目录项信息
{
 char file_name[10];   //文件名
 int  i_num;     //文件的结点号
 char dir_name[10];   //文件所在的目录
} root[640];

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<640;i++)     //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<640;i++)     //根目录区信息初始化
 {
  strcpy(root[i].file_name,"");
  root[i].i_num=-1;
  strcpy(root[i].dir_name,"");
 } 
for(i=0;i<20449;i++)     //存储空间初始化 
{
 memory[i].n=0;      //必须有这个
 memory[i].a=0;      
 for(j=0;j<50;j++)
 {
  memory[i].free[j]=-1;
 }
}
 for(i=0;i<20449;i++)    //将空闲块的信息用成组链接的方法写进每组的最后一个块中
 {         //存储空间初始化
  
  if((i+1)%50==0)
  {
   k=i+1;
   for(j=0;j<50;j++)
   {
    if(k<20450)
    {
     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");}

[1] [2] [3] [4] 下一页

操作系统课程设计-成组链接模拟unix文件系统下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。