基于时间片的轮转调度算法
时间:2026-01-17
时间:2026-01-17
基于时间片的轮转调度算法 实验目的:深入了解算法的实现过程
实验内容:用C++模拟基于时间片的轮转算法
实验步骤:1、编写代码
2、运行调试
3、查看结果
4、编写实验报告
实验要求
在提交的实验报告中,必须包含如下内容:
(1) 设计思想、系统结构图、数据结构及程序流程图。
(2) 调试通过的源程序清单(含必要注释)及运行结果。
实验结果:
实验小结:
时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。时间片轮转调度中关键的一点是时间片的长度的选取。本实验默认时间片为1,在试验过程中基本满足了实验要求。通过本次实验,我更加了解了时间片轮转调度算法,通过翻看课本,对其的理解更加的深刻了,在以后的学习中,我会更加努力 的学习操作系统的相关课程。当然,实验中也遇到了问题,但都不是理论上的问题,而是编程的问题,根本原因还是编程基础不牢。以后会在编程方面努力。
源代码:
#include "stdio.h"
#include"stdlib.h"
struct PCB
{
int pid; //进程标识符
int rr; //已运行时间
int time; //进程要求运行时间
char sta; //进程的状态
struct PCB *next; //链接指针
};
struct PCB pcb1,pcb2,pcb3,pcb4,pcb5,*tail,*head,*rp;
init()
{
int i,time;
pcb1.pid = 1;
pcb2.pid = 2;
pcb3.pid = 3;
pcb4.pid = 4;
pcb5.pid = 5;
pcb1.rr =pcb2.rr =pcb3.rr =pcb4.rr =pcb5.rr = 0;
pcb1.sta = pcb2.sta = pcb3.sta = pcb4.sta = pcb5.sta = 'w'; printf("请输入时间片p1需要运行的时间:");
scanf("%d",&time);
pcb1.time = time;
printf("请输入时间片p2需要运行的时间:");
scanf("%d",&time);
pcb2.time = time;
printf("请输入时间片p3需要运行的时间:");
scanf("%d",&time);
pcb3.time = time;
printf("请输入时间片p4需要运行的时间:");
scanf("%d",&time);
pcb4.time = time;
printf("请输入时间片p5需要运行的时间:");
scanf("%d",&time);
pcb5.time = time;
pcb1.next=&pcb2;
pcb2.next=&pcb3;
pcb3.next=&pcb4;
pcb4.next=&pcb5;
pcb5.next=&pcb1;
head = &pcb1;
tail = &pcb5;
}
void printf1()
{
printf("+---------------|---------------|---------------|---------------+\n");
printf("|\tpid\t|\trr\t|\ttime\t|\tSTA\t|\n");
printf("|---------------|---------------|---------------|---------------|\n");
}
printf2()
{
printf("processes p%d running\n",head->pid);
printf1();
printf("|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n",head->pid,head->rr,head->time,head->sta);
printf("|---------------|---------------|---------------|---------------|\n");
rp=head;
while(rp!=tail)
{
rp=rp->next;
printf("|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n",rp->pid,rp->rr,rp->time,rp->sta);
printf("|---------------|---------------|---------------|---------------|\n");
}
}
operation()
{
int flag=1;
while (flag<=5)
{
head->rr ++;
if ((head->rr==head->time)||(head->time==0))
{
tail->sta='w';
head->sta='f';
printf2();
head=head->next;
tail->next=head;
flag++;
}
else
{
tail->sta='w';
head->sta='r';
printf2();
tail=head;
head=head->next;
}
}
}
void main()
{
init(); //初始化
printf("this is the begin state :\n"); printf2(); //显示初始状态 operation(); //运行
}
…… 此处隐藏:191字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:实验六 配位化合物的生成及其性质