树型目录文件系统实现:操作系统的课程设计

2星 需积分: 4 27 下载量 40 浏览量 更新于2024-07-29 1 收藏 509KB DOC 举报
"操作系统课程设计-文件管理系统" 操作系统课程设计主要目标是实现一个树型目录结构的文件系统。在这个系统中,文件和目录通过二叉树的数据结构进行组织,每个节点包含父指针、子指针和兄弟指针。父指针指示节点的上级目录,子指针指向目录的第一个子节点,而兄弟指针用于链接目录下的其他子节点。在操作文件和目录时,系统使用栈来管理打开的文件夹,当打开文件夹时,将文件夹的名称和地址压入栈中;关闭时则从栈中移除。对于文件,打开文件会将其名称和父指针记录在文件列表中,并设置打开标志为1,关闭文件时从列表中删除并重置标志为0。读写文件前会检查文件是否已打开,未打开的文件不能读写,只读文件不能写入,只写文件不能读取。 文件和目录的创建需先检查目标目录是否为空,空目录下可以直接创建,非空目录则需确保没有同名的文件或文件夹。若存在同名,则创建失败。新建的文件或文件夹被连接到目录的最后一个子节点,作为其兄弟节点。删除文件或文件夹时,需确保文件夹下无打开的文件,且文件本身未被打开。删除文件夹时采用中序遍历的方式来删除整个子树。 系统结构包括一个根节点,下挂五个用户,每个用户拥有自己的文件和文件夹。系统初始化时,为每个用户创建一个名为file1的文件。文件夹存储名称和打开状态,文件则包含名称、打开状态、访问权限、文件类型和文件长度。访问权限、文件类型和文件长度通过独立的结构体表示,其余信息与文件夹结构体共用同一结构体。打开文件列表由文件名和父节点地址组成,而打开文件夹的栈则保存文件夹名称和地址。 数据结构方面,定义了一个`struct file`,包含文件类型、权限和长度等信息,而`struct FCB`(文件控制块)用来表示文件夹或文件,包括类型标志、名称、权限、大小等字段。此外,还有用于表示目录节点的结构体,包含了节点的子节点、父节点和兄弟节点的指针。这些结构体共同构成了文件系统的核心数据结构,支持文件和目录的各种操作。