PS: 'Release.zip' 是打包好的,无需配置环境可以直接运行.exe
- 重新整理了文件分布
- 对部分逻辑做了修改
- 对配置文件逻辑重构, 并使用
[]
,=
作为语法糖
- Random 和 RdFile(新) 双模式:
- Random 可随机生成指令并存储(Save As)
- RdFile 可加载存储好的文件并生成指令(Load Form)
- 基于 RdFile 模式可实现 OPT 算法
- 新添记录视图功能:
- 三种指令追踪模式
- 文本状态区分: 已生产指令、已消费指令、下一条待消费指令
- 新添文件配置: 可以保存退出状态,实现更友好的交互体验
- 修复ShowLabel内存泄漏问题 且重构优化大量代码
起源是我一次操作系统实验用c++封装了一下,顺便发了一篇CSDN博客,虽然有伙伴觉得还不错,但我对这代码觉得非常糟糕,也因为自己没花太多时间: 页面置换算法模拟设计--CSDN_Leisure_水中鱼
于是便借着操作系统实践课做了这个项目。这不是对博客中代码的重构延续,而是重新从头开发的。
第一个版本于2023/12/12完成,花费20小时(正第一次研究利用Qt创建动画,费了些功夫。小慢),隔天又花了几个小时重构了部分代码,修复一些bug,添加选项卡等。
以后有可能会往里面陆续添加些有意思的,也可能就此结束。
- c++ 17
- qt 6.5.2
- cmake 3.27.5
- mingw 13.1.0
设计了生产者-消费者模拟演示系统。生产者模拟多个进程生产指令放入指令队列中,消费者模拟处理机从指令队列中取出指令并映射为页进行处理,实现页面置换算法。利用Qt产生动画,模拟演示这一过程更加生动形象,可以用于操作系统的教学中。
- main.cpp
- CMakeLists.txt
- view 负责窗口显示等
- mianwindow.*
- startwidget.*
- showwidget.*
- model
- showlabel.* 基于QLabel为了实现动画效果封装的模型
- other
- ... ... 基于ShowLabel类:生产者、消费者、缓冲队列、页面置换算法;等的封装
- 问题: 可能卡顿
- 可能是QTextEdit负载过大后、可能是当时电脑没接电源、可能是大量动画效果和信号槽导致主线程处理缓慢
- 对于用子线程分担暂无思路:
- 多子线程处理动画造成不明原因崩溃
- 逻辑上大部分都是对组件的处理,复杂计算导致的占用很少
- 目前信号槽部分耦合性较强、且大部分基于动画处理,未找到下手点
- ... ...
- ... ...
- ... ...