生课程设计报
实验课名称:操作系统 实验项目名称:文件系统设计
称:计算机科学与技术 级: 号: 名: 名:
2014 年—6_月 30日
、课程设计的目的 、课程设计的内容及要求
内容
要求
、实现原理.
四、关键算法实现流程图
流程图
关键算法
五、软件运行环境及限制
结果输出及分析
七.心得体会.
?课程设计的目的
本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让我
更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能
力。
二?课程设计的内容及要求
1 ?实验内容
通过一个简单的二级文件系统设计,加深对文件系统的内部功能以及内部实现的理解。要求模拟采
用二级目录结构的磁盘文件系统的文件操作,能实现以下几条命令,用输入命令来模拟用户程序中
调用的文件操作:
Login用户登录
Dir列文件目录(列出文件名、物理地址、保护码和文件长度)
Create创建文件
Delete删除文件
Op en打开文件
Close关闭文件
Read读文件
Write写文件
源文件可以进行读写保护
2 ?实验要求
文件系统管理中用到的数据结构有:
①首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形
式存放于磁盘,这样便于查找和修改。
…并以编号作为物理地址,在目②用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2
…并以编号作为物理地址,在目
录中进行登记。
三?实现原理
首先,实现Login用户登录,(用户名:Ihx密码:12358)必须登录成功才能进入文件系统进行查看,
进入后,通过树状展示文件目录(默认文件目录是\home\lhx\kefile ),利用命令行的方式进行注册、登录、 各种各样的文件操作。
四.关键算法实现流程图
流程图:
1?用户登录功能的实现
typ edef struct userMsg{
char loginName[20];
char logi nP asswd[20];
}UserMsg;
int login(char* name,char* p asswd){
UserMsg um;
int count = 0,size = sizeof(UserMsg),nres ,pres;
int fd = op en("/home/lhx/study/kefile/login.dat",O_RDONLY);
if(fd == -1){
return -1;
while(1)
if(read(fd,&u m,size) < size){
return -1;
nres = strc mp (name,um.loginName);
pres = strc mp(p asswd,um.login Passwd);
if(nres==0 && p res==0){
return 1;
if( nres == 0 && pres != 0){
return 0;
count++;
lseek(fd,SEEK_SET,size*count);
lseek(fd,SEEK_SET,0);
close(fd);
用户注册具体实现
int regist(char* name,char* p asswd){
UserMsg um;
int count = 0,size = sizeof(UserMsg);
int fd = op en("/home/lhx/study/kefile/login.dat",O_WRONLY|O_A PP END);
if(fd == -1){
return -1;
strc py(u m.loginName,name);
strc py(u m.logi nP asswd ,p asswd);
lseek(fd,SEEK_END,O);
count = write(fd,&u m,size);
if(count != size)
return -1;
return 1;
查看目录下文件
int listdtl(char* p name){
struct dirent** dlist;
int tmp ,count;
char fpath[50],*fname;
count = scandir( pname,& dlist,NULL,a Ip hasort);
if(count == -1)return -1;
printf("%10s\t%10s\t%10s\t%10s\t%10s\n","编号","类型","所有者 ID","大小文件名");
for(t mp = 0;t mp < count;t mp++)
struct stat st;
sp rintf(f