操作系统实验文件I节点实现.docVIP

  • 6
  • 0
  • 约4.87千字
  • 约 5页
  • 2017-02-14 发布于江苏
  • 举报
操作系统实验文件I节点实现

实验5指导 [实验内容] 任务 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 程序设计 设计思想 本文件系统采用两目录,其中第一对应于用户,第二对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。对这些内容感兴趣的读者,可以在本系统的程序基础上进行扩充。 主要数据结构 I节点 struct inode{ struct inode *i_forw; struct inode *i_back; char I_flag; unsigned int i_into; /*磁盘i节点标号*/ unsigned int i_count; /*引用计数*/ unsigned short di_number; /*关联文件书,当为0时,则删除该文件*/ unsigned short di_mode; /*存取权限*/ unsigned short di_uid; /*磁盘i节点用户*/ unsigned short di_gid; /*磁盘i节点组*/ Unsigned int di_addr[NADDR]; /*物理块号*/ ) 磁盘i结点 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]; /*物理块号*/ )目录项结构 Struct direct { char d_name[DIRSIZ]; /*目录名*/ unsigned int d_ino; /*目录号*/ } )超级Struct filsys { unsigned short s_isize; /*i节点块块数*/ unsigned long s_fsize; /*数据块块数*/ unsigned int s_nfree; /*空闲块块数*/ unsigned short s_pfree; /*空闲块指针*/ unsigned int s_free[NICFREE]; /*空闲块堆栈*/ unsigned int s_ninode; /*空闲i节点数*/ unsigned short s_pinode; /*空闲i节点指针*/ unsigned int s_inode[NICINOD]; /*空闲i节点数组*/ unsigned int s_rinode; /*铭记i节点*/ char s_fmod; /*超级块修改标志*/ }; )用户密码 Struct pwd { unsigned short P_uid;unsigned short P_gid; char passward[PWOSIZ]; } f) 目录 Struct dir { strut direct direct[DIRNUM]; int size; } ).查找i内存节点的hash表 Struct hinode { strut inode *iforw; } ).系统打开表 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

文档评论(0)

1亿VIP精品文档

相关文档