# 计算机操作系统课程设计:进程管理系统的模拟实现
# 一、设计内容
一个允许n个进程并发运行的进程管理模拟系统设计。该系统功能包括进程创建、撤销、阻塞、唤醒、查看和进程的同步控制。
## 1.1进程的创建
①手动创建:可以设置进程的运行时间与优先级,以及资源A,B,C的需求量;
②自动创建:进程的优先级、运行时间、资源需求量等属性,可以由系统产生随机数自动生成。当资源需求满足时,进程会加入就绪队列,等待占用处理机。进程的pid由创建顺序自动给出。
## 1.2进程的撤销
在输入进程的pid之后可以对进程进行撤销操作。
## 1.3进程的阻塞
在输入进程的pid之后可以对进程进行阻塞操作,如果当前进程正在运行,则其状态将会由运行态变为阻塞态。
## 1.4进程的唤醒
在输入进程的pid之后可以对进程进行唤醒操作,可以将设置为阻塞态的进程转为就绪态。
## 1.5进程的查看
在输入进程的pid之后可以查看进程的优先级、运行时间和资源占有量。
## 1.6进程的同步控制
进程在运行时,会根据其算法分析其优先级,运行时间等特性,产生进程执行的先后顺序,分别占用处理机,并发的执行。
## 1.7进程的调度算法
系统设置了先来先服务算法、高优先级算法、时间片轮转算法和短作业优先算法4种算法。
## 1.8界面显示
进程在执行时,每过1秒,都会在显示区打印输出当前正在执行的进程,及其所需执行时间,以方便观察进程的执行过程。
# 二、设计思想和实现方法
## 2.1进程控制块(PCB)
系统使用PCB来表示和管理每个进程的信息,每个进程都会有一个PCB。PCB中包含了进程的各种属性,如进程ID、运行时间、优先级、资源需求等。通过PCB,系统可以对进程进行调度和管理。
## 2.2资源管理
系统维护了几个资源(A、B、C),并使用计数器(A、B、C)来记录每个资源的可用数量。每个进程通过P(申请资源)和V(释放资源)操作来管理资源的占用和释放。P操作判断进程的资源需求是否满足,如果满足则分配资源并更新计数器,否则进程被阻塞。V操作释放进程占用的资源,并更新计数器。
## 2.3调度算法
系统实现了几种常见的进程调度算法,包括先来先服务(FIFO)、高优先级优先(HPF)、时间片轮转(RR)和短作业优先(SF)。通过调用不同的调度算法函数,可以选择不同的调度策略对进程进行调度。其中时间片轮转算法会设置两个标志位(分别表示当前进程正在执行与正在调用时间片轮转算法)与一个计数常量,当计数常量的值等于运行时间时,修改标志位,表示进程运行完成。
## 2.4定时器
系统使用定时器来触发进程调度。定时器每隔一定时间触发一次,调度器根据调度算法选择一个进程进行运行,并更新进程的状态。定时器的触发频率可以根据实际需求进行调整。
## 2.5队列管理
系统使用队列来管理就绪队列、阻塞队列和进程队列。就绪队列存储可以立即运行的进程,阻塞队列存储因资源不足而被阻塞的进程,进程队列存储所有的进程。系统根据需要将进程从一个队列移动到另一个队列,并根据队列中的进程状态进行相应的操作。
## 2.6用户界面
系统使用了一个名为my_list的对象来管理和显示进程的状态和操作结果。my_list对象提供了add_and_show函数,用于将信息添加到列表中并显示出来。用户可以通过查看列表中的信息来了解进程的状态和操作结果。
综上所述,该进程管理系统的设计思想是通过维护进程控制块(PCB)来管理和调度进程,使用资源管理和调度常见的算法来分配和调度进程的资源,通过定时器和队列管理来触发和管理进程调度,通过用户界面来展示和记录进程的状态和操作结果。
# 四、运行结果
## 4.1初始界面
![image](https://github.com/yanyanlai/process-management-system/assets/110188868/a182dfc9-fa37-4fdb-bf07-7663b725591f)
## 4.2手动创建进程
![image](https://github.com/yanyanlai/process-management-system/assets/110188868/9ade374f-2e9d-4193-a663-cfdeb48ff984)
## 4.3自动创建进程并执行
![image](https://github.com/yanyanlai/process-management-system/assets/110188868/3de50d5a-f829-4cea-b4e8-dd21c8d5480d)
## 4.4时间片轮转效果演示
![image](https://github.com/yanyanlai/process-management-system/assets/110188868/09e5b547-4064-4ca7-bb91-d5d4ac27c542)
# 四、总结分析
## 4.1个人总结
### 4.1.1问题及解决方法
(1)多线程同步问题: 由于涉及到多个线程对共享资源的访问,我面临了同步问题,可能导致数据不一致性。
解决方法:使用互斥锁 (std::mutex) 保护共享资源的访问,确保每次只有一个线程能够修改资源。
(2)动态添加控件及样式设计:动态添加控件时,需要考虑样式表的应用,以及如何更灵活地管理界面元素。
解决方法:使用 Qt 的信号与槽机制,动态调整样式表,同时考虑使用 QML 或其他技术进行更灵活的界面设计。
### 4.1.2软件设计及功能改进
用户交互体验: 界面设计上可以进一步优化,考虑添加更多用户交互元素,如图形化的进程状态展示、更友好的提示信息等。
错误处理:目前对于一些异常情况的处理较为简单,可以增加更完善的错误处理机制,提高程序的稳定性。
### 4.1.3个人收获与感想
多线程编程:通过解决同步问题,我更深入地理解了多线程编程的挑战和解决方案,对于资源共享和互斥访问有了更清晰的认识。
Qt 框架应用:学会了使用 Qt 框架进行界面设计和事件处理,这为我今后开发 GUI 应用提供了更多的经验和技能。
在以后的学习中,我会进一步完善程序的功能,提高代码的健壮性,同时学习和应用更多先进的软件设计和开发技术。这个课设为我提供了一个很好的实践平台,让我更加自信地面对复杂的软件设计和开发任务。
没有合适的资源?快使用搜索试试~ 我知道了~
基于C++ / QT的模拟进程管理系统的设计与实现课程设计
共19个文件
cpp:5个
h:4个
jpg:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 163 浏览量
2024-10-15
21:31:03
上传
评论
收藏 93KB ZIP 举报
温馨提示
【作品名称】:基于C++ / QT的模拟进程管理系统的设计与实现【课程设计】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 设计内容 一个允许n个进程并发运行的进程管理模拟系统设计。该系统功能包括进程创建、撤销、阻塞、唤醒、查看和进程的同步控制。 1.1进程的创建 ①手动创建:可以设置进程的运行时间与优先级,以及资源A,B,C的需求量; ②自动创建:进程的优先级、运行时间、资源需求量等属性,可以由系统产生随机数自动生成。当资源需求满足时,进程会加入就绪队列,等待占用处理机。进程的pid由创建顺序自动给出。 1.2进程的撤销 在输入进程的pid之后可以对进程进行撤销操作。 1.3进程的阻塞 在输入进程的pid之后可以对进程进行阻塞操作,如果当前进程正在运行,则其状态将会由运行态变为阻塞态。 1.4进程的唤醒 在输入进程 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
资源推荐
资源详情
资源评论
收起资源包目录
process-management-system.zip (19个子文件)
process-management-system
dispatcher.h 803B
mainwindow.h 985B
mainwindow.cpp 6KB
dispatcher.cpp 10KB
main.cpp 292B
config.h 1023B
mainwindow.ui 13KB
rc.qrc 193B
OS.pro 1KB
OIP (3).jpg 18KB
OS.pro.user.f036a95 24KB
OIP (1).jpg 5KB
OS.pro.user 24KB
config.cpp 715B
pcb.cpp 3KB
pcb.h 850B
OIP (2).jpg 21KB
README.md 6KB
OIP.jpg 22KB
共 19 条
- 1
资源评论
小英子架构
- 粉丝: 1010
- 资源: 4042
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享uCOS-II信号量集很好的技术资料.zip
- 技术资料分享ucOS-II入门教程(任哲)很好的技术资料.zip
- 技术资料分享UCOSII 2.90 ReleaseNotes很好的技术资料.zip
- 技术资料分享Ucos-II-中文注释版很好的技术资料.zip
- 技术资料分享uCGUI的性能与资源占用很好的技术资料.zip
- 技术资料分享uCGUI 简介很好的技术资料.zip
- 技术资料分享TJA1050很好的技术资料.zip
- 技术资料分享TF应用很好的技术资料.zip
- CourseDesign_Graph-数据结构课程设计
- AndroidStudio Demo-android studio计算器
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功