本研究探讨了多种进程调度模拟算法在操作系统中的实际应用效果,通过分析提高系统资源利用效率和响应速度的方法。
实验内容:进程调度模拟程序
假设有一组10个需要在CPU上执行的进程,并采用以下三种算法进行调度:
- 先进先出(FIFO)调度算法;
- 基于优先数的调度算法;
- 最短执行时间优先(SJF)调度算法。
实验要求确定这10个进程按照上述不同方法在CPU上的具体运行过程。每次进程被选中时,屏幕上应显示:
- 当前正在执行的进程信息;
- 就绪队列中的所有待处理进程的信息;
- 等待队列中的所有等待状态下的进程。
实验目的包括:
1. 掌握处理器调度及其实现方式。
2. 了解并掌握进程的状态以及它们之间的转换规则。
3. 学习和理解程序控制块(PCB)的作用及组成要素。
具体要求如下:
- 创建10个独立的进程,每个都具有一个对应的PCB。该结构至少应包含以下信息:进程名称、当前状态、优先级(数值范围为1至10)、在处理机上执行所需的总时间(以毫秒计)以及指向队列中相应位置的指针。
- 初始化这十个PCB,通过随机产生数字0或1来设定每个进程开始时的状态是就绪还是等待。
- 根据选定的调度算法选择一个当前处于就绪状态下的进程在CPU上执行任务。
- 在该进程中运行期间,如果生成了一个特定值为“1”的随机数,则将等待队列中的第一个PCB移动到就绪队列中作为最后一个元素进行处理。
- 进程开始执行后,根据随机产生的数值决定其具体的执行时间。若此时间为进程的剩余需要的时间或者更长,则该任务完成;否则从总需时内减去已运行的部分并继续等待下一次调度机会。
- 如果一个正在被执行的任务尚未结束,在它完成后会生成另一个0或1值的随机数,根据这个数值决定将执行中的进程重新放入就绪队列还是移动至等待状态中以待进一步处理。
整个模拟过程将持续进行直到所有处于就绪状态下的任务都被完成为止。