操作系统中的处理机调度是资源管理的关键部分,它决定了如何有效地分配CPU时间给多个并发执行的任务。在这个实验报告中,我们关注的是两种常见的调度算法:先来先服务(FCFS)和短作业优先(SJF)。
1. **先来先服务(FCFS)调度算法**:
FCFS是最简单的调度策略,它按照作业到达的顺序分配CPU。在实验的`fcfs()`函数中,首先对所有作业按照提交时间进行排序。如果一个作业在另一个作业之前提交,那么它将优先获得CPU时间。作业的开始时间(`kstime`)等于其提交时间(`tjtime`),然后通过加上运行时间(`yxtime`)得到结束时间(`jstime`)。等待时间(`ddtime`)为开始时间与提交时间之差,周转时间(`zztime`)是等待时间与运行时间之和,而带权周转时间(`dqzztime`)是周转时间与运行时间的比值。计算所有作业的平均周转时间和平均带权周转时间。
2. **短作业优先(SJF)调度算法**:
SJF算法的目标是减少平均周转时间,它优先选择运行时间最短的作业。在`sjf()`函数中,首先也对作业按运行时间进行排序,然后计算每个作业的开始时间、结束时间、等待时间、周转时间和带权周转时间,与FCFS类似,但排序依据是运行时间而不是提交时间。SJF可以进一步分为非抢占式和抢占式,但在这个实验中没有提及抢占。
3. **实验流程**:
- 用户通过主函数`main()`输入作业的基本信息,包括作业号、提交时间和运行时间。
- 然后,用户选择调度算法,可以选择FCFS或SJF,由`cool()`函数实现。
- 根据用户的选择,调用相应的调度函数,如`fcfs()`或`sjf()`,并计算每个作业的相关时间指标。
- 输出所有作业的详细信息以及平均周转时间和平均带权周转时间。
通过这个实验,学生能够深入理解处理机调度的基本概念,熟悉不同的调度策略,并通过C语言编程实现这些策略。这有助于他们在实际操作系统设计中更好地分析和优化资源分配,提高系统效率。