操作系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;