> # ♻️ 资源
> **大小:** 688KB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010657**](https://www.yuque.com/sxbn/ks/100010657)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87415924**](https://download.csdn.net/download/s1t16/87415924)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# MockProcessCmd
[Experiment]设计和实现基于时间片与高优先级抢占调度算法的进程与资源管理功能模拟 OS
Computer operating system experiment.
### 开发环境
- IDE:Visual Studio 2019
- Language:C++ STL
### 功能需求
设计和实现进程与资源管理,并完成 Test shell 的编写,以建立系统的进程管理、调度、资源管理和分配的知识体系。该管理器能够完成进程的控制,如进程创建与撤销、进程的状态转换;能够基于优先级调度算法完成进程的调度,模拟时钟中断,在同优先级进程中采用时间片轮转调度算法进行调度;能够完成资源的分配与释放,并完成进程之间的同步。该管理器同时也能完成从用户终端或者指定文件读取用户命令,通过 Test shell 模块完成对用户命令的解释,将用户命令转化为对进程与资源控制的具体操作,并将执行结果输出到终端或指定文件中。同时要求设计与实现驱动程序(test shell):驱动该管理器工作,即将命令语言(即用户要求)转换成对与内核函数(如 create, request 等)的调用。
细节设计:
创建新进程时,新进程的父进程为运行态进程,新进程作为运行态的子进程;
有高优先级进程就绪态后马上抢占;
撤销父进程时,需要循环 kill 光所有子进程;
释放资源后如有进程可得到资源马上转入就绪态;
### 系统功能总体设计
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010249737-380ac18d-2f33-44ae-a70b-9ebc3361916c.png#averageHue=%23fafafa&from=url&id=psm0b&originHeight=526&originWidth=1006&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
共设计 4 个大模块:
- PCB 进程控制块该模块包含进程 PCB 的数据结构以及操作 PCB 内部数据变化的接口;
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010249806-c2abc2d7-d8da-4938-b5bb-810cb288df3b.png#averageHue=%23f1f1f1&from=url&id=rOfko&originHeight=547&originWidth=503&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
- RCB 资源控制块该模块包含进程 PCB 的数据结构以及操作 PCB 内部数据变化的接口;
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010249879-f3d87901-67c3-4b5e-b6cf-fbc2231859c9.png#averageHue=%23f4f4f4&from=url&id=kEhAW&originHeight=477&originWidth=500&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
- 进程管理模块该模块负责管理整个程序的进程池和资源池,对进程进行创建、撤销以及调度等管理任务,对资源进行分配和释放,维护着程序的就绪等待队列、阻塞等待队列,提供了对程序操作的命令接口,基于时间片与高优先抢占调度算法;
三个优先级就绪队列
System-2 User-1 Init-0
- Cmd 命令行模块该模块负责从用户终端 Cmd 中读取用户命令,完成对用户命令的解释,将用户命令转化为对进程与资源控制的具体操作,调用操作接口 API 并将执行结果输出到终端中。
```
void inputCmd(vector<string>& argvs); // 命令输入模块
void initCmd(); // Cmd初始化模块
void createProcessCmd(const vector<string>& argvs); // 进程创建模块
void destroyProcessCmd(const vector<string>& argvs); // 进程释放模块
void requestResourcesCmd(const vector<string>& argvs); // 资源申请模块
void releaseResoursesCmd(const vector<string>& argvs); // 资源释放模块
void showReadyListCmd(const vector<string>& argvs); // 显示就绪队列
void showResourcesListCmd(const vector<string>& argvs); // 显示资源情况
void timeOutCmd(const vector<string>& argvs); // 时间片切换(调度)
void quitCmd(const vector<string>& argvs); // 退出Cmd
void showHelpCmd(const vector<string>& argvs); // 显示帮助信息(自启)
void showProcessTable(const vector<string>& argvs); // 显示进程表
void showOneProcess(const vector<string>& argvs); // 显示某个进程情况
```
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010250012-d8ce0ae9-7b90-470d-b978-468133ef51e1.png#averageHue=%23f5f5f5&from=url&id=TERy6&originHeight=837&originWidth=309&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
### 类设计图
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010250295-a40270a8-96de-42e8-b162-b1bc0a49d198.png#averageHue=%23f8f8f8&from=url&id=Stl8F&originHeight=1529&originWidth=1416&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
### 小模块
- Cmd 命令处理模块
- init 进程自启动模块
- 创建新进程模块
- 释放进程模块
- 请求资源模块
- 释放资源模块
- 调度程序模块
- 测试验证输入模块
- 界面优化与测试
### 待处理注释 key:
- todo
- del
- test
### 后期改进:
- 把容器换成链式指针数据结构
- 把多级队列封装成类,可快速拓展
- 根据进程的 Type 进行优先级墙长调度,去除臃肿的升降级代码
- 优化 STL 容器的使用
- 增加 PPID 父进程 ID
### 已知 BUG 日志:
- 释放资源高优先级抢占升级
- 撤销进程循环 free resources 逻辑
- init 进程释放资源是出现 BUG
### 版本
- 可演示界面一般存在明显 BUG version=1
### 效果截图
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010250398-d1a666ad-84bb-4697-816d-bb5d29e1ff95.png#averageHue=%231c1b1b&from=url&id=vEQ91&originHeight=854&originWidth=1234&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010250482-5c60179c-571a-4e34-86a8-5080acbb6784.png#averageHue=%23191818&from=url&id=OH50J&originHeight=856&originWidth=1255&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010250559-dfc715e7-1fee-4e57-bc77-9a2c644da409.png#averageHue=%23171716&from=url&id=dxyiF&originHeight=853&originWidth=1231&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1714010250640-a0b29494-b205-4d22-acf0-49ff5b8d7361.png#averageHue=%231b1a1a&from=url&id=LwPZO&originHeight=860&originWidth=1233&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010657 设计和实现基于时间片与高优先级抢占调度算法的进程与资源管理功能模拟操作系统OS。本系统设计和实现进程与资源管理,并完成Test shell的编写,以建立系统的进程管理、调度、资源管理和分配的知识体系。
资源推荐
资源详情
资源评论
收起资源包目录
100010657-基于C++实现时间片与高优先级抢占调度算法的进程与资源管理功能模拟操作系统OS.zip (24个子文件)
mockprocesscmd
processManager.h 2KB
MockProcessCmd.vcxproj.filters 2KB
rcb.cpp 2KB
README
2.jpg 33KB
6.jpg 166KB
1.jpg 23KB
5.jpg 234KB
8.jpg 112KB
3.jpg 36KB
7.jpg 115KB
9.jpg 131KB
4.jpg 27KB
MockProcessCmd.cpp 814B
processManager.cpp 19KB
LICENSE 1KB
development.txt 1KB
main.cpp 11KB
splitTool.h 2KB
MockProcessCmd.sln 1KB
pcb.cpp 5KB
pcb.h 2KB
README.md 7KB
MockProcessCmd.vcxproj 8KB
rcb.h 1KB
共 24 条
- 1
资源评论
神仙别闹
- 粉丝: 2667
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功