时间片轮转调度算法的实验报告
实验概述:【实验目的及要求】
用C语言编程实现时间片轮转调度算法
【实验原理】
基于调度算法思想用C语言编程实现Visual C++6.0实验内容:
本实验模拟在单处理机情况下处理机调度,用C语言编程实现先来先服务和最短作业优先调度算法。
【实验方案设计】
时间片大小固定,由用户输入。进程个数由用户输入。
每个进程用一个PCB表示。PCB包括进程名,到达时间,运行时间,剩余时间,进程状态,链接指针。其中,进程名,到达时间和运行时间由用户输入,剩余时间的初值等于运行时间。为简单起见,进程状态设为三种:就绪,运行和完成。链接指针指向下一个进程的PCB;
按照进程到达的先后顺序排成一个队列。设置一个队头指针指向队列中第一个进程,并设置一个队尾指针指向队列中的最后一个进程;
c. 执行调度时,先选择队首的第一个进程运行。另外设置一个指向当前运行进程的指针;
由于本实验是模拟实验,所以对选中进程并不实际启动运行,而只是执行:
被选中进程的状态置为运行态;
被选中进程的剩余时间减去时间片大小;
按照队列的顺序依次输出每个进程的进程名,到达时间,运行时间,剩余时间,进程状态。
用这三个操作来模拟进程的一次运行;
进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针,以指示应运行进程。同时还应判断该进程的剩余时间是否为0。如果不为0,则等待下一轮的运行;如果该进程的剩余时间为0,则将该进程的状态置为完成态,并退出队列;
f. 若处于就绪态的进程不为空,则重复第d步和第e步直到所有进程都运行完为止。
【实验过程】(实验步骤、记录、数据、分析)
测试用例1:
屏幕显示:Please input the process name, arrive time and run time
输入:
1 2 1
2 3 2
3 4 3
屏幕显示:Please input the slice
1
屏幕输出结果:
********************************************
name arrive run rest state
1 2 1 0 running
2 3 2 2 ready
3 4 3 3 ready
********************************************
name arrive run rest state
2 3 2 1 running
3 4 3 3 ready
********************************************
name arrive run rest state
2 3 2 1 ready
3 4 3 2 running
********************************************
name arrive run rest state
2 3 2 0 running
3 4 3 2 ready
********************************************
name arrive run rest state
3 4 3 1 running
********************************************
name arrive run rest state
3 4 3 0 running
********************************************
测试数据2:
2 3 1
1 2 3
5 4 2
测试数据3: