ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:28.94KB ,
资源ID:5835581      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5835581.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验文件系统设计2Word下载.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

操作系统实验文件系统设计2Word下载.docx

1、 /存取权限unsigned short di_uid; /磁盘i节点用户idunsigned short di_gid; /磁盘i节忠组idunsigned int di_addrNADDR; /物理块号(2)磁盘i节点/关联文件数struct dinode /关联文件数 /存取权限椅unsigned short di_gid;unsigned long di_size; /文件大小 /物理块号(3)目录项结构struct direct char d_nameDIRSIZ; /目录名 unsigned int d_ino; /目录号(4)超级块struct filsys unsigned s

2、hort s_isize; /i节,点块块数 unsigned long s_fsize; /数据块块数 unsigned int s_nfree; /空闲块块数 unsigned short s_pfree; /空闲块指针 unsigned int s_freeNICFREE; /空闲块堆栈 unsigned int s_ninode; /空闲i节点数 unsigned short s_pinode; /空闲i节点指针 unsigned int s_inodeNICINOD; /空闲i节点数组 unsigned int s_rinodepr; /铭记i节点 char s_fmod; /超级块

3、修改标志(5)用户密码struct pwd unsigned short p_uid; unsigned short p_gid; char passwardPW0SIZ;(6)目录struct dir struct direct directDIRNUM; int size;(7)查找内存i节点的hash表struct hinode struct inode *i_forw;(8)系统打开表struct file char f_flag;/文件操作标志 unsigned int f_count; /引用计数 struct inode *f_inode; /指向内存i节点 unsigned l

4、ong f_off$; /读/写指针(9)用户打开表struct user unsigned short u_default_mode; unsigned short u_uidid; /用户标志 unsigned short u_gid; /用户组标志 unsigned short u_ofileNOFILE; /用户打开文件表3.主要函数(1)i节点内容获取函数iget()(详细描述略)。(2)i节点内容释放函数iput()(详细描述略)。(3)目录创建函数mkdir()(详细描述略)。(4)目录搜索函数namei()(详细描述略)。(5)磁盘块分配函数balloc()(详细描述略)。(6

5、)磁盘块释放函数bfree()(详细描述略)。(7)分配i节点区函数ialloc()(详细描述略)。(8)释放i节点区函数ifree()(详细描述略)。(9)搜索当前目录下文件的函数iname()(详细描述略)(10)访问控制函数access()(详细描述略)。(11)显示目录和文件用函数dir()(详细描述略)。(12)改变当前目录用函数chdir()(详细描述略)。(13)打开文件函数open()(详细描述略)。(14)创建文件函数create()(详细描述略)。(15)读文件用函数read()(详细描述略)。(16)写文件用函数write()(详细描述略)。(17)用户登录函数login

6、()(详细描述略)。(18)用户退出函数logout()(详细描述略)。(19)文件系统格式化函数format()(详细描述略)。(20)进入文件系统函数install()(详细描述略)。(21)关闭文件函数close()(详细描述略)。(22)退出文件系统函数halt()(详细描述略)。(23)文件删除函数delete()(详细描述略)。4.主程序说明Begin Step1对磁盘进行格式化 Step2调用install(),进入文件系统 Step3调用dir(),显示当前目录 Step4调用login(),用户注册 Step5调用mkdir()和chdir()创建目录 Step6调用crea

7、te(),创建文件 Step7分配缓冲区 Step8写文件 Step9关闭文件0和释放缓冲 Step10调用mkdir()和chdir()创建子目录 Step11调用create(),创建文件1 Step12分配缓冲区 Step13写文件1 Step14关闭文件l和释放缓冲 Step15调用chdir将当前目录移到上一级 Step16调用creat(),创建文件2 Step17分配缓冲区 Step18调用write(),写文件2 Step19关闭文件2和释放缓冲 Step20调用delete(),删除文件。 Step21调用create(),创建文件3 Step22为文件3分配缓冲区 Step

8、23调用write(),写文件3 Step24关闭文件3并释放缓冲区 Step25调用open(),打开文件2 Step26为文件2分配缓冲 Step27写文件3后关闭文件3 Step28释放缓冲 Step29用户退出(logout) Step30关闭(halt)end由上述描述过程可知,该文件系统实际是为用户提供一个解释执行相关命令的环境。主程序中的大部分语句都被用来执行相应的命令。下面,我们给出每个过程的相关C语言程序。读者也可以使用这些子过程,编写出一个shell控制的文件系统界面。1.编程管理文件makefile本文件系统程序用makefile编程管理工具进行管理。其内容如下。#mak

9、efile#filesys: main.o igetput.o iallfre.o ballfre.o name.o access.o log.o close.o creat.o delete.o dir.o open.o rdwt.o format.o install.o halt.o cc -o filsys main.o igetput.o iallfre.o ballfre.o name.o access.o log.o close.o creat.o delete.o dir.o open.o rdwt.o format.o install.o halt.o main.o: main

10、.c filesys.h cc -c main.cigetput.o: igetput.c filesys.h cc -c igetput.ciallfre.o: iallfre.c filesys.h cc -c iallfre.cballfre.o: ballfre.c filesys.h cc -c ame.o: name.c filesys.h cc -c name.caccess.o: access.c filesys.h; cc -c access.clog.o: log.c filesys.h cc -c log.cclose.o: close.c filesys.h cc -c

11、 close.ccreat.o: creat.c filesys.h cc -c creat.cdelete.o: delete.c filesys.h cc -c delete.cdir.o: dir.c filesys.h cc -c dir.cdirlt.o: dirlt.c filesys.h cc -c dirlt.copen.o: open.c filesys.h cc -c open.crdwt.o: rdwt.c filesys.h cc -c rdwt.cformat.o: format.c filesys.h cc -c format.cinstall.o: install

12、.c filesys.h cc -c install.chalt.o: halt.c cc -c halt.c2.头文件filesys.h头文件fiiesp.h用来定义本文件系统中所使用的各种数据结构和常数符号。/filesys.h定义本文件系统中的数据结构和常数#define BLOCKSIZ 512#define SYSOPENFILE 40#define DIRNUM 128#define DIRSIZ 14#define PWDSIZ 12#define PWDNUM 32#define NOFILE 20#define NADDR 10#define NHINO 128#define

13、 USERNUM 10#define DINODESIZ 32/filsys#define DINODEBLK 32#define FILEBLK 512#define NICFREE 50#define NICINOD 50#define DINODESTART 2*BLOCKSIZ#define DATASTART (2+DINODEBLK)*BLOCKSIZ/di_mode#define DIEMPTY 0000#define DIFILE 01000#define DIDIR 02000#define UDIREAD 00001 /user#define UDIWRITE 00002#

14、define UDIEXICUTE 00004#define GDIREAD 00010 /group#define GDIWRITE 00020#define GDIEXICUTE 00040#define ODIREAD 00100 /other#define ODIWRITE 00200#define ODIEXECUTE 00400#define READ 1#define WRITE 2#define EXECUTE 4#define DEFAULTMODE 00777/I_flag#define IUPDATE 00002/s_fmod#define SUPDATE 00001/f

15、_flag#define FREAD 00001#define FWRITE 00002#define FAPPEND 00004/error#define DISKFULL 65535/fseek origin#define SEEK_SET 0/文件系统数据结构struct inode struct inode *i_back; char i_flag; unsigned int i_ino; /磁盘i节点标志 unsigned int i_count; unsigned short di_number; /关联文件数,当为0 unsigned short di_mode; /存取权限 u

16、nsigned short di_uid; unsigned short di_gid; unsigned int di_size; /文件大小 unsigned int di_addrNADDR;struct dinode /善关联文件数铃/ /存取权限祷/ unsigned short di_gidp; unsigned long di_size; /文件大小 /祷物理块号费/struct direct char d_nameDIRSIZ;struct filsys /i节点块块数 /数据块块数 /空闲块块数 /空闲块指针 /空闲块堆钱 /空闲i节点数/空闲i节点指针 unsigned i

17、nt s_rinode; /铭记i节点 char s_fmod; /超级块修改标志 char passwordPWDSIZ;struct dir int size; /当前目录大小struct hinode /hash表指针struct file char f_flag; /文件操作标志 unsigned int f_count; unsigned long f_off; unsigned short u_uid;/下为全局变量 extern struct hinode hinodeNHINO; extern struct dir dir; /当前目录(在内存中全部读入) extern str

18、uct file sys_ofileSYSOPENFILE; extern struct filsys filsys;/内存中的超级块 extern struct pwd pwdPWDNUM; extern struct user userUSERNUM; extern FILE *fd; /the file system column of all the system extern struct inode *cur_path_inode; extern int user_id,file_block;/proptype of the sub roution used in the file

19、 system 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(); exte

20、rn 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();3.主程序main()(文件名main.c)主程序main.c用来测试文件系统的各种设计功能主要功能描述如程序设计的第4部分。程序:#include stdio.h#include filesys.hst

21、ruct hinode hinodeNHINO;struct dir dir;struct file sys_ofileSYSOPENFILE;struct filsys filsys;struct pwd pwdPWDNUM;struct user userUSERNUM;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

22、want to format the diskn); if(getchar()=y) printf(Format will erase all context on the disk. Are you sure?n getchar(); else return;) format(); install(); _dir(); login(2118, abcd user_id=0; mkdir(a2118 chdir( ab_fd1=create(user_id,file0.c,01777); file_block=BLOCKSIZ*6+5; buf=(char*)malloc(BLOCKSIZ*6

23、+5); write(ab_fd1,buf,BLOCKSIZ*6+5); close(user_id,ab_fd1); free(buf);subdir ab_fd2=create(user_id, file1.c file_block=BLOCKSIZ*4+20; buf=(char*)malloc(BLOCKSIZ*4+20); write(ab_fd2,buf,BLOCKSIZ*4+20); close(user_id,ab_fd2);. ab_fd3=create(user_id, file2.c file_block=BLOCKSIZ*3+255; buf=(char*)malloc(BLOCKSIZ*3+255); write(ab_fd3,buf,BLOCKSIZ*3+255); close(user_id,ab_fd3); delete(ab_file0.c ab_fd4=creat(user_id, file3.c file_block=BLOCKSIZ*8+300; buf=(char*)malloc(BLOCKSIZ*8+300); write(ab_fd4,buf,BLOCKSIZ*8+300); close(user_id,ab_fd4); ab_fd3=open(user_id, ,FAPPEND); file_bloc

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2