⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 最新说明.txt

📁 题目:文件系统的模拟实现 目的:深入理解文件系统的实现机制
💻 TXT
字号:
					
		文件系统的模拟实现

(请参阅文档: "设计说明书.sxw" 和 "旧的设计报告.sxw"(课程设计的报告)(用openoffice打开sxw文件). 
	(文档资源不够丰富, 请多多包涵)

大概如下:
(1)文件系统存储机构的总体安排

	在第一次运行模拟程序时, 程序向操作系统申请建立一个件,命名为myfilesys.dat。
	我们的文件系统就是建立在myfilesys.dat的存储空间中,文件系统的存储空间的安排如下:
	我们定义一个磁盘块为1KB,一个磁盘块I节点为64字节。
	因此,在我们的文件系统中,超级块的磁盘块地址为0,
	I节点区的磁盘块地址为1~1024,即I节点区占用1024块。
	文件存储区磁盘块地址为1025~2024,即文件存储区占用1000块。

(2)文件系统的主要模块组成原理
	本文件系统主要包括两大模块:文件系统服务端模块和文件操作函数模块。
	两大模块之间分别独立于不同的进程,它们之间进行进程间的通信。
	因此,文件操作函数模块,相当于客户端,任何程序如果调用这些函数,
	即可对本文件系统的文件操作.

(3)源代码的组成文件.
	fs_server.c实现文件系统服务端模块,其包含头文件fs_server.h。
	myfilelib.c 实现文件操作函数模块,其包含头文件myfilelib.h。
	myshell.c 一个测试程序,其包含头文件myfilesys.h。

	fs_server.c 被编译生成服务端可执行文件。
	myfilelib.c被编译生成myfilelib.o目标文件,实现源代码的隐藏,	并提供给用户程序链接。
	myshell.c相当于一个普通的用户程序,其调用myfilelib.o中的文件操作函数,调用文件系统的功能,对本模拟文件系统进行测试。



(4)编译和安装:
直接运行make命令即可.

Makefile 文件如下:
all:    server myshell
        @echo
        @echo Building server and myshell is done
server: fs_server.c fs_server.h
        gcc -o server fs_server.c
 
myshell:   myfilelib.o myshell.c myfilesys.h
        gcc -o myshell myfilelib.o myshell.c
myfilelib.o: myfilelib.c myfilelib.h
        gcc -o myfilelib.o -c myfilelib.c

(5) 测试
	程序myshell连接myfilelib.o里面的文件操作函数,对文件操作函数进行测试.
myshell提供ls, mkdir, cd , cat 四个命令来测试文件操作函数:

int Open(const char *pathname, int flags, ...);
 
int Read(int fd, char *buf, unsigned int nbytes);
 
int Write(int fd, char *buf, unsigned int nbytes);
 
void List(const char *pathname, int flag);
 
void mymkdir(const char *pathname);
 
int SearchDir(const char *pathname);
 
void Close(int fd);
 
void Over(void);

例子:

[root@localhost kcsjnodebug]# ./server&	运行服务端
[1] 4112
[root@localhost kcsjnodebug]# ./myshell	运行客户端
[myshell@/]$ls				列目录
.
..
[myshell@/]$mkdir dir1			创建目录dir1
[myshell@/]$ls
.
..
dir1
[myshell@/]$mkdir dir2			创建目录dir2
[myshell@/]$ls
.
..
dir1
dir2
[myshell@/]$cd dir1			进入目录dir1
[myshell@/dir1]$ls
.
..
[myshell@/dir1]$mkdir dir3			创建目录dir3
[myshell@/dir1]$ls
.
..
dir3
[myshell@/dir1]$cat > file1.txt		创建文件file1.txt
Infile1.txt					只能输入一行,而且不能有空格
[myshell@/dir1]$cat file1.txt			输出文件file1.txt的内容
Infile1.txt
[myshell@/dir1]$cd ..			退出目录dir1
[myshell@/]$ls
.
..
dir1
dir2
[myshell@/]$exit				退出测试程序

(6)已知错误
      如果不正常中止程序server 或者 myshell。下次运行此两个程序前,
一定要先删掉/tmp/serv_fifo 和 /tmp/client_*_fifo 两个管道文件。
			(*代表任意字符)
      因为采用管道通信,如果不正常中止程序server 或者 myshell,就没有清除
此两管道文件。会导致下次启动失败。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -