目录

操作系统课程实验

操作系统课程(大三上)的三个课程实验代码与数据:进程调度算法模拟、BCC/eBPF 系统观测、单理发师问题同步。

任务背景

  • 实验2(进程调度算法):用 Python 实现 FIFO、SJF、STCF、RR、MLFQ、优先级调度共六种算法,设计多组进程测试场景,以平均周转时间、平均响应时间量化对比各算法性能,并绘制调度甘特图与程序流程图。
  • 实验3(系统观测):一部分基于 NPB 3.4.3 基准(CG/MG/FT,Class B)做系统性能画像,自动化采集 top、strace、perf、vmstat、iostat 数据并生成火焰图;另一部分基于 BCC/eBPF 开发 VFS 层文件系统实时监控工具,配 Streamlit Web 可视化前端,并以综合 I/O 压力脚本验证。
  • 实验4(单理发师问题):用 C(pthread)分别以 POSIX 信号量与条件变量两种机制实现睡眠理发师问题,对比两种同步机制在状态提示、边界条件处理与编程复杂度上的差异。

内容结构

路径 说明
实验2/scheduler.py 六种调度算法实现与交互式菜单,含甘特图绘制
实验2/scheduler无gantt.py 不含甘特图绘制的精简版
实验2/test_full.py 10 个场景的综合对比测试脚本
实验2/test_full_log.md 测试日志(量化结果记录)
实验2/调度算法流程可视化.html 各算法程序流程图(浏览器打开)
实验2/调度算法测试结果.html 测试结果展示页
实验2/cut.py、merge_gantt_improved.py 甘特图截图裁剪与拼接小工具
实验2/AGENT.md 实验任务拆解清单
实验3/README.md 实验3 详细说明(安装、使用、常见问题)
实验3/bccmonitor.py BCC/eBPF 文件系统监控器(终端模式)
实验3/bccfront_auto.py Streamlit 实时可视化前端
实验3/run_monitoring_final.sh NPB 负载一键监控采集脚本
实验3/comprehensive_IO_test.sh 综合 I/O 压力测试脚本
实验3/requirements.txt Python 依赖清单
实验3/suite.def、配置环境.txt、perf性能分析.txt NPB 构建配置与环境、分析笔记
实验3/fuse_test_20251218_110601.log FUSE 综合测试日志
实验3/monitoring_cg_B、ft、mg_B/、mpimonitoring_cg_B/ 各负载的 top/strace/perf/vmstat/iostat 采集数据与火焰图
实验4/4OSbarber/barber_sem.c 信号量版本实现
实验4/4OSbarber/barber_cond.c 条件变量版本实现
实验4/4OSbarber/barber_*template.c、impl_guide*.md 课程提供的代码模板与实现指导
实验4/4OSbarber/test_*.log 运行测试日志
实验4/4OSbarber/claude.md、agent_prompts/、report_sections/ 实验指导与报告撰写过程文件

运行方法

实验2(Python 3.9+,依赖 matplotlib):

cd 实验2
python scheduler.py   # 交互式选择算法与参数
python test_full.py   # 跑全部对比场景,输出量化结果

cut.py 另需 opencv-python(import cv2),用于批量裁剪甘特图截图。

实验3(Linux 内核 >= 4.18,root,BCC;详细步骤见 实验3/README.md):

sudo apt install python3-bcc bpfcc-tools linux-headers-$(uname -r)
pip install -r requirements.txt
sudo env "PATH=$PATH" python3 bccmonitor.py            # 终端模式监控
sudo env "PATH=$PATH" streamlit run bccfront_auto.py  # Web 前端,localhost:8501
bash run_monitoring_final.sh                          # NPB 全流程采集

实验4(Linux,gcc,pthread):

cd 实验4/4OSbarber
gcc barber_sem.c -lpthread -o barber_sem
gcc barber_cond.c -lpthread -o barber_cond
./barber_sem 5 8   # 参数依次为: 座位数、顾客数
./barber_cond 5 8

来源声明

  • NPB 3.4.3(NAS Parallel Benchmarks)为 NASA 开源基准套件,按课程要求下载编译,其编译出的二进制与 perf 采集的二进制数据文件未入库;BCC 为 iovisor 开源项目,实验3 的 README 参考其官方文档编写。
  • 实验4 的 barber_*template.c 与 impl_guide*.md 为课程下发的代码模板与实现指导,barber_sem.c、barber_cond.c 为在其框架上的独立实现。
  • 六种调度算法实现、BCC 监控与可视化脚本、自动化监控与 I/O 测试脚本为本人自研;实验报告 docx/pdf、课件 pptx 与截图类图片未入库。
关于

操作系统三个实验:进程调度模拟、BCC/eBPF 系统监控、理发师问题(C 信号量与条件变量)

1.1 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号