模拟进程调度
1. 基本信息
姓名 | 学号 | 班级 | 是否编译成功 | 是否运行结果正确(逻辑也要正确) |
---|---|---|---|---|
是/否 | 是/否 |
如果代码运行不正确,写报告时,呈现所做的努力,按以下格式来写:
# 2. 做了什么
# 3. 碰到什么样的问题
# 4. 针对遇到的问题,你做了哪些努力
如果运行结果正确,按以下方式来写:
- 结合关键代码,解释代码背后的原理(对于别人不能一眼就能明白你代码要做什么的,你要给出解释)
- 给出测试结果,并解释运行结果
- 文末,再给出完整的代码
以下是代码运行正确的报告格式:
[!Warning]
实验报告内容应结合源代码分析,而不是贴个源代码,对源代码进一步解释,源代码只是服务于你的报告内容。
因此,应该按模块来讲解,而不是把一人代码文件贴上去,做增强版代码解释。
以下模板只是作为参考,可以根据需要,增加和删减章节。
2. 主函数
2.1 读取测试数据
2.2 选择调度算法部分
2.3 测试部分
3. PCB及进程创建
3.1 PCB定义
3.2 进程创建
3.3 进程销毁
3.4 平均等待时间和平均带权周转时间计算
4. 先来先服务调度
FIFO很简单,不需要算法介绍。直接给出算法实现部分。
5. 短作业优先
5.1 调度算法原理
描述你实现算法的技术细节,比如可抢占、不可抢占。
5.2 调度时机
什么时候调度,比如采用不可抢占,作业在运行过程中,来了一个进程,这个时候是没有调度的。
6. 优先级+时间片轮转
6.1 调度算法原理
6.2 算法实现
比如用什么样的数据结构存储进程链表,就绪队列是一个还是多个。
7. 运行结果及分析
呈现你是如何测试你的程序。
给出运行结果,并分析。对于这个小规模的测试(test_data_5.csv
),需要手动演算,再来判断演算结果与程序运行结果是否一致。对于test_data_200.csv
,不需要手动推演。
7.1 测试数据test_data_5.csv
7.2 测试数据test_data_200.csv
8. 实验过程中遇到的问题及解决方法
写下你实验过程中遇到的问题,以及你是如何解决的。也可以写下你对此实验的感想。
9. 附完整源代码
(1)process_schedule.c
(2)process_schedule.h