# FileSysSimulate **Repository Path**: wangshihai123/file-sys-simulate ## Basic Information - **Project Name**: FileSysSimulate - **Description**: 一个模拟的用户态的文件系统项目, 提供文件操作的基础"系统调用"相关接口 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-28 - **Last Updated**: 2025-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目介绍 这是一个完整的 C++ 系统级项目,包含一个模拟 Linux 文件系统的用户态核心和一个多线程文件服务进程。支持模拟文件的创建,读写,删除等模拟操作。 * 模拟实现超级块、inode 表、数据块管理等核心机制。 * 使用消息队列缓存任务, 保证高并发情况下的可用性。 * 采用线程池和线程安全队列,实现文件级读写锁,保证并发安全。 # 运行项目 ## 创建大文件 首先在项目根目录下创建如下文件(注意, 必须按照这个文件名), 该大文件用于模拟磁盘: ``` touch disk_file ``` 创建好大文件后, 需要进行初始化, 将其变成一个32MB大小的文件, 这部分初始化的代码实现在了`init_disk.cpp`中 ## 编译代码 ``` mkdir build cd build cmake .. make ``` 这段编译代码将会生成如下可执行程序: ```cmake add_executable(init_disk init_disk.cpp ${SRC}) add_executable(test_disk_manager ${CMAKE_CURRENT_SOURCE_DIR}/test/disk_manager_test.cpp ${SRC}) add_executable(test_file_api ${CMAKE_CURRENT_SOURCE_DIR}/test/file_api_test.cpp ${SRC}) add_executable(test_consumer ${CMAKE_CURRENT_SOURCE_DIR}/test/consumer_test.cpp ${SRC}) add_executable(test_stress ${CMAKE_CURRENT_SOURCE_DIR}/test/stress_test.cpp ${SRC}) add_executable(ls ${CMAKE_CURRENT_SOURCE_DIR}/cmd/ls.cpp ${SRC}) add_executable(touch ${CMAKE_CURRENT_SOURCE_DIR}/cmd/touch.cpp ${SRC}) add_executable(cat ${CMAKE_CURRENT_SOURCE_DIR}/cmd/cat.cpp ${SRC}) add_executable(rm ${CMAKE_CURRENT_SOURCE_DIR}/cmd/rm.cpp ${SRC}) ``` ## 运行单元测试 * 初始化磁盘(初始化大文件): ``` cd build ./init_disk ``` * 测试磁盘管理模块(涉及超级块, inode表的管理): ``` ./test_disk_manager ``` * 测试顶层文件操作接口: ``` ./test_file_api ``` * 测试文件处理任务消费者类: ``` ./test_consumer ``` * 压力测试(持续12小时, 读写, 增删50个文件): ``` ./test_stress ```