首页 > 编程知识 正文

时间片调度算法用c语言实现,基于时间片的轮转调度例题

时间:2023-05-04 08:22:14 阅读:235083 作者:4813

时间片轮转调度算法的实验报告

实验概述:【实验目的及要求】

用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:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。