操作系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学院(系)名称:华信软件学院

2)列目录时要列出文件名、物理地址、保护码和文件长度

3)源文件可以进行读写保护

3. 程序设计指导

1)主要数据结构:

(1) 索引节点:文件系统处理文件所需要的所有信息都存放在索引节点中。即存放一个具体文件的管理与控制信息。每个索引节点分配一个索引节点号,用来指示文件系统中的指定文件。其包含的文件信息是:struct inode {

struct inode *i_forw; //前面的链接节点指针

struct inode *i_back; //后面的链接节点指针

char i_flag; //节点类型

unsigned int i_ino;

unsigned int i_count;

unsigned short di_number;

unsigned short di_mode;

unsigned short di_uid;

unsigned short di_gid;

unsigned int di_addr [NADDR];

}

(2) 磁盘索引节点:存放在磁盘上的索引结点称为磁盘索引结点

struct dinode{

unsigned short di_number;

unsigned short di_mode;

unsigned short di_uid;

unsigned short di_gid;

unsigned long di_size;

unsigned int di_addr [NADDR];

}

姓名学号专业软件工程班级实验项目第3次实验-文件系统设计课程名称操作系统课程代码1460350 实验时间实验地点C408 批改意见成绩

实验目的内容

10% 实验的步骤

30%

实验的算法

30%

实验结果

10%

心得体会分析

20%

总分

教师签字:

1.实验目的

实验设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。

2.实验内容

为linux系统设计一个简单的二级文件系统。首先要求该文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户账号下的文件。之后,要确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放与磁盘,这样便于查找和修改。然后,创建的文件要以编号的方式存储于磁盘上,如file0、file1、file2等,并以编号作为物理地址,在目录中进行登记。完成:

1)实现下列8个命令:

(1)Login 用户登陆

(2)dir 列文件目录

(3)create 创建文件

(4)delete 删除文件

(5)open 打开文件

(6)close 关闭文件

(7)read 读文件

(8)write 写文件

实验报告

unsigned int s_rinode;

char s_fmod;

};

struct pwd{

unsigned short p_uid;

unsigned short p_gid;

char password[PWDSIZ];

};

struct dir{

struct direct direct[DIRNUM];

int size;

};

struct hinode{

struct inode * i_forw;

};

struct file{

char f_flag;

unsigned int f_count;

struct inode * f_inode;

unsigned long f_off;

};

struct user{

unsigned short u_default_mode;

unsigned short u_uid;

unsigned short u_gid;

unsigned short u_ofile[NOFILE];

};

extern struct hinode hinode[NHINO]; extern struct dir dir;

extern struct file sys_ofile[SYSOPENFILE]; extern struct filsys filsys;

extern struct pwd pwd[PWDNUM];

extern struct user user[USERNUM]; extern FILE * fd;

extern struct inode * cur_path_inode; extern int user_id,file_block;

extern struct inode * iget();

extern iput();

extern unsigned int balloc();

extern bfree();

extern struct inode * ialloc();

extern ifree();

extern unsigned int namei();

extern unsigned int iname();

extern unsigned int access();

extern _dir();

extern mkdir();

extern chdir();

extern dirlt();

extern unsigned short open();

extern create();

extern unsigned int read();

extern unsigned write();

extern int login();

extern logout();

extern install();

extern format();

extern close();

extern halt();

mian.c #include

#include

#include"filesys.h"

struct hinode hinode[NHINO];

struct dir dir;

struct file sys_ofile[SYSOPENFILE];

struct filsys filsys;

struct pwd pwd[PWDNUM];

struct user user[USERNUM];

FILE * fd;

struct inode * cur_path_inode;

int user_id,file_block;

main(){

unsigned short ab_fd1,ab_fd2,ab_fd3,ab_fd4;

unsigned short bhy_fd1;

char * buf;

printf("\nDO you want to format the disk?\n");

if(getchar()=='y'){

printf("Format will erase all context on the disk.Are you sure?\n");

getchar();

}

else{

return 0;

}

if(getchar()=='y'){

format();

}

else{

return 0;

}

install();

_dir();

login(2118,"abcd");

user_id=0;

相关文档
最新文档