Skip to content

操作系统作业:一个简单的类UFS文件系统的设计与实现

License

Notifications You must be signed in to change notification settings

KrxkGit/OS_SampleFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ea211ba · Nov 29, 2023

History

27 Commits
Nov 11, 2023
Nov 13, 2023
Nov 7, 2023
Nov 7, 2023
Nov 29, 2023
Nov 13, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 29, 2023
Nov 29, 2023
Nov 29, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023
Nov 7, 2023

Repository files navigation

🎉SampleFS 使用说明

▶重新构建

由于 SampleFS 管理的磁盘依赖于绝对路径,为了能够在其他设备使用本系统,需要重新构建本程序。

1️⃣修改磁盘文件路径

cd OS_SampleFS/example
vim sampleFS.h

修改位于第14行的磁盘路径:

char imgPath[] = "/home/krxk/fuse-3.16.2/build/example/SFS_Img"; // 设备载体

2️⃣构建

回到根目录,执行

cd OS_SampleFS/build
ninja

即可重新编译构建。

生成输出文件位于 build/example中。

✅帮助文档

1️⃣创建磁盘文件

执行

cd build/example
./CreateDiskFile.sh

创建磁盘文件SFS_Img

2️⃣初始化文件系统

执行

./init_disk

初始化文件系统。

✔SampleFS 支持的操作

❔查看帮助

运行

./sampleFS --help

可查看使用文件系统使用说明。

🟣挂载文件系统

在源代码根目录下,执行

cd build/example
mkdir Krxk # Krxk 可以是任意挂载的目标目录
./sampleFS Krxk

卸载文件系统可执行

umount Krxk

🆗支持的文件操作

❕注意:文件名长度不超过8,扩展名长度不超过3。

# 查看文件属性
stat filename

# 查看目录
ls dirname
ls -a .

# 创建多层目录
mkdir child
mkdir child2
cd child
mkdir ch_ch
cd ch_ch
mkdir chchch

# 创建文件
echo "HelloWorld" > filename
touch filename
mknod filename c 0 0

# 删除空目录
rmdir empty_dirname

# 删除文件
rm filename
rm *.txt # 支持通配符形式删除文件

# 写入文件 & 查看文件内容
echo "Hello" > 1.txt
cat 1.txt

# 修改文件时间
touch -d "2023-8-20 16:00" filename

🟡暂未支持的操作:在文件末尾追加内容,文件的写入采取从头覆盖写入的方式。

About

操作系统作业:一个简单的类UFS文件系统的设计与实现

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published