700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux设计 实现一个模拟的文件系统 模拟Linux文件系统.doc

linux设计 实现一个模拟的文件系统 模拟Linux文件系统.doc

时间:2022-12-31 19:40:12

相关推荐

linux设计 实现一个模拟的文件系统 模拟Linux文件系统.doc

模拟Linux文件系统

设计五:

设计任务:

模拟Linux文件系统。在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟Linux文件系统 。

在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。

编写一管理程序对此空间进行管理,以模拟Linux文件系统,具体要求如下:

要求盘块大小1k

正规文件

(2) i 结点文件类型 目录文件

(共1byte) 块设备

管道文件

。物理地址(索引表)

共有13个表项,每表项2byte

。文件长度 4byte

。联结计数 1byte

(3)0号块 超级块 栈长度50

空闲盘块的管理:成组链接 ( UNIX)

位示图法 (Linux)

(4)每建一个目录,分配4个物理块

文件名 14byte

(5)目录项信息

i 结点号 2byte

(6)结构: 0#: 超级块

1#-20#号为 i 结点区

20#-30#号为根目录区

该管理程序的功能要求如下:

能够显示整个系统信息,源文件可以进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。

改变目录:改变当前工作目录,目录不存在时给出出错信息。

显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。

创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。

删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。

建立文件(需给出文件名,文件长度)。

打开文件(显示文件所占的盘块)。

删除文件:删除指定文件,不存在时给出出错信息。

程序的总体流程为:

初始化文件目录;

输出提示符,等待接受命令,分析键入的命令;

对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。

一 程序清单

头文件

block.h, command.h, disk.h, fd.h, inode.h, shell.h

c文件

block.c, command.c, disk.c, fd.c, inode.c, shell.c

具体程序清单见源代码,在此不一一列出。

二 概要设计

2.1 文件系统组织结构

super inodesData blocks 1024B30*1024B磁盘块以组的形式链接起来

(1)第一个磁盘块:写入超级块

(2)从第二个磁盘块开始:用30个磁盘块记inodes

(3)剩下的磁盘块作为数据块Data blocks

Data blocks是由多个磁盘块组构成,每个栈的开始磁盘块用于记录空闲块栈,因为本实验是采用UNIX的空闲盘块管理方法,即成组链接法。每一组用一个栈表示,里面存放空闲块的磁盘块号。剩下的磁盘块都作为文件的数据块,记录文件或目录的内容。

2.2 系统流程图

2.2.1 系统框架------------------main()

2.2.2 格式化文件系统流程------------------int fs_format(FILE *fp)

2.2.3 shell运行流程------------------------------------void shell( FILE *fp, int *pd_ind_no)

2.2.4 相关功能实现流程

(1)创建目录

int create_fd( FILE *fp, int dir_ind_no, const char *file, const char given_type, const char *f_size)

这里given_type ==”d”表示目录,f_size默认为0.

(2)创建文件

int create_fd( FILE *fp, int dir_ind_no, const char *file, const char give

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。