Skip to content

JZLshen/OS-FileSystem

Repository files navigation

模拟UNIX风格多用户文件系统

一个基于 Python 和 PyQt6 的高仿真度、图形化、多用户、多级目录文件系统模拟器,专为操作系统课程设计而生。

本项目不仅实现了标准文件系统的核心功能,还提供了一个现代、直观的图形用户界面,使用户能够轻松地与模拟的文件系统进行交互。它深度模拟了UNIX文件系统的内部机制,包括i节点、数据块管理、持久化存储和用户会话等,是学习和理解操作系统文件系统原理的绝佳实践。

✨ 功能亮点

🎨 现代化的图形界面 (GUI)

  • 直观的文件管理器布局:左侧目录树、右侧文件列表,类似Windows资源管理器
  • 文件类型图标区分:文件、目录、符号链接显示不同图标
  • 地址栏分段导航:支持点击路径段快速跳转
  • 多选和批量操作:支持多选文件/目录,右键菜单批量删除、重命名等
  • 实时状态栏:显示当前选中文件信息和目录统计
  • 系统监控面板:实时显示磁盘使用率、缓存统计、性能指标等

🔧 完整的文件系统核心功能

  • 多级目录结构:支持任意深度的目录嵌套
  • 文件操作:创建 (create)、删除 (rm)、重命名 (rename)
  • 目录操作:创建 (mkdir)、递归删除 (rm -r)、重命名 (rename)
  • 链接文件:支持创建和解析符号链接 (ln -s) 和硬链接 (ln)
  • 文件I/O:完整的打开 (open)、读 (read)、写 (write)、关闭 (close) 工作流
  • 可排序视图:文件列表支持按名称、大小、类型和修改日期进行升/降序排序
  • 内置文本编辑器:支持文本文件的创建、查看和修改

🔐 高级系统与用户管理

  • 多用户支持:实现了用户登录 (login) 和注销 (logout) 功能
  • 细粒度权限控制:基于UNIX权限模型,支持读/写/执行权限检查
  • 权限分离root 用户拥有特殊权限,如格式化磁盘和创建新用户
  • 持久化存储:所有对文件系统的更改都会被保存到本地的 simulated_disk.img 文件中
  • 系统级操作:支持对整个模拟磁盘进行格式化 (format)

🛡️ 高级安全与性能特性

  • 文件加密:支持对文件进行AES加密保护
  • 文件压缩:支持gzip压缩和解压缩
  • 缓存管理:LRU缓存机制,提高文件系统性能
  • 错误处理:完善的异常捕获和错误日志记录
  • 系统监控:实时监控磁盘使用、缓存命中率、操作统计等

🛠️ 技术栈

  • 核心语言: Python 3.8+
  • 图形界面: PyQt6
  • 数据序列化: Pickle (用于持久化)
  • 加密: cryptography (用于文件加密)
  • 压缩: gzip, zlib (用于文件压缩)

🚀 快速开始

1. 先决条件

  • 确保您的系统中已安装 Python 3.8 或更高版本
  • 推荐使用虚拟环境

2. 安装依赖

pip install PyQt6 cryptography

3. 运行程序

克隆或下载本项目后,在项目根目录下运行 main.py

python main.py

程序将启动并显示登录窗口。

📖 使用指南

1. 登录系统

  • 程序启动后,使用默认账户登录
  • 管理员账户:用户名 root,密码 root
  • 普通账户:用户名 guest,密码 guest

2. 主界面操作

导航功能

  • 左侧目录树:点击目录快速导航
  • 地址栏:输入路径或点击路径段跳转
  • 导航按钮:后退、前进、上级目录、刷新

文件操作

  • 新建:右键菜单或工具栏按钮创建文件/目录
  • 删除:选中文件/目录后按Delete键或右键删除
  • 重命名:右键菜单重命名
  • 属性:右键菜单查看详细属性信息

高级功能

  • 硬链接:选中文件后创建硬链接
  • 加密:选中文件后设置加密密码
  • 压缩:选中文件后设置压缩级别

3. 系统监控

点击工具栏的"系统监控"按钮,可以查看:

  • 磁盘使用情况
  • 缓存统计信息
  • 性能指标
  • 错误日志

🧠 核心概念模拟

本项目旨在深入模拟文件系统的核心设计:

磁盘与文件卷

通过 DiskManager 类在内存中模拟一个完整的文件卷,包含:

  • 超级块:存储文件系统元数据
  • 位图:管理i节点和数据块的分配状态
  • i节点区:存储文件元数据
  • 数据区:存储实际文件内容

i节点 (Inode)

每个文件、目录和符号链接都由一个唯一的 Inode 对象描述,包含:

  • 元数据:大小、权限、所有者、时间戳
  • 数据块指针:直接块、间接块、双间接块
  • 特殊属性:加密状态、压缩状态等

目录结构

目录是一种特殊的文件,其数据块中存储的是 DirectoryEntry 列表,每个条目将文件名映射到一个i节点号,从而构建起整个文件系统的层级关系。

权限系统

实现了完整的UNIX权限模型:

  • 所有者权限:读/写/执行
  • 组权限:读/写/执行
  • 其他用户权限:读/写/执行
  • 特殊权限:SUID、SGID、Sticky bit

持久化

通过 PersistenceManager,整个 DiskManager 对象在程序关闭时被序列化并写入磁盘文件,实现了对模拟文件系统的"断电保护"。

🔮 最新优化内容

可视化优化

  • ✅ 文件/目录/符号链接图标区分
  • ✅ 地址栏分段导航功能
  • ✅ 文件列表多选和右键菜单
  • ✅ 实时状态栏信息显示
  • ✅ 系统监控面板集成

功能完善

  • ✅ 细粒度权限校验集成
  • ✅ 批量操作支持
  • ✅ 文件加密和压缩功能
  • ✅ 缓存管理优化
  • ✅ 错误处理完善

Bug修复

  • ✅ 登录窗口用户体验优化
  • ✅ 文本编辑器资源泄漏修复
  • ✅ 文件操作后自动刷新
  • ✅ 持久化异常处理
  • ✅ 全局错误捕获

🔮 未来可改进方向

高级文件系统特性

  • 实现间接寻址(单级、多级间接块)以支持大文件
  • 增加用户组管理功能
  • 实现更完整的权限系统(chmod、chown)
  • 支持文件系统挂载和卸载

GUI 体验

  • 增加文件/目录的拖拽移动和复制功能
  • 支持文件预览功能
  • 增加搜索和过滤功能
  • 支持多标签页浏览

健壮性

  • 引入日志或事务机制,保证文件系统操作的原子性
  • 实现文件系统一致性检查(fsck)
  • 支持增量备份和恢复
  • 增加网络文件系统支持

📄 许可证

本项目采用 MIT License 授权。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published