littlebot
Published on 2025-04-15 / 1 Visits
0

【源码】基于PintOS操作系统的多任务与文件系统实现

项目简介

本项目基于PintOS操作系统,达成了多任务管理、用户程序执行、虚拟内存管理、文件系统扩展以及ELF文件共享等功能。借助这些功能,PintOS可支持多线程并发执行、用户程序安全执行、虚拟内存动态管理以及文件系统的扩展和优化。

项目的主要特性和功能

多任务管理

  • 线程休眠与唤醒:timer_sleep()函数可记录线程唤醒时间并将其放入休眠队列,确保线程按时唤醒。
  • 优先级调度:维护多个优先级队列,支持优先级捐赠,保障高优先级线程优先执行。
  • BSD调度器:模拟浮点计算动态调整线程优先级,用Round - Robin算法处理同优先级线程。

用户程序执行

  • 参数传递:实现命令行参数解析与传递,保证用户程序正确接收和处理参数。
  • 系统调用:实现多种系统调用,涵盖文件操作、进程管理、内存映射等,确保用户程序与系统安全交互。

虚拟内存管理

  • 帧管理:通过frame_info结构维护虚拟到物理地址映射,支持多线程共享帧。
  • 补充页表:每个线程用哈希表作补充页表,记录页状态和位置,支持页动态管理。
  • 交换空间:实现交换空间管理,支持页的换入换出,保证内存不足时系统正常运行。
  • 页替换算法:采用时钟算法进行页替换,提升内存使用效率。

文件系统扩展

  • 缓冲区缓存:用LRU算法管理缓冲区,优化文件读写性能。
  • 可扩展文件:改变inode结构,支持文件动态扩展,不要求文件页连续存储。
  • 子目录支持:实现子目录管理,支持目录创建、删除和读取。
  • 文件系统系统调用:扩展文件系统系统调用,支持目录与文件操作分离。

ELF文件共享

  • 共享页管理:实现ELF文件共享页管理,多进程可共享只读段,减少内存占用。
  • 帧表扩展:扩展帧表,记录占用页的线程,支持多线程共享帧动态管理。

安装使用步骤

  1. 从项目仓库下载源码文件。
  2. 使用提供的Makefile进行编译,生成可执行文件。
  3. 在虚拟机或物理机上运行PintOS,加载生成的可执行文件。
  4. 通过提供的测试用例,验证多任务管理、用户程序执行、虚拟内存管理、文件系统扩展和ELF文件共享等功能。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】