1 / 12
文档名称:

操作系统轮转调算法.doc

格式:doc   大小:219KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统轮转调算法.doc

上传人:beny00001 2021/12/18 文件大小:219 KB

下载得到文件列表

操作系统轮转调算法.doc

相关文档

文档介绍

文档介绍:word
word
1 / 12
word
学号 专业计算机科学与技术 某某
实验日期教师签字成绩
实验报告
【实验名称】轮转调度算法
【实验目的】
掌握轮转调度算法。
进一步认识如何实现处理器调度。
通过对进程调度算法的设计,深入理解进程调度的原理
【实验原理】
在分时系统中,最常用的是基于时间片的轮转算法调度算法。该算法采用了非常公平的处理机分配方式,即让就绪队列上的每个进程每次运行一个时间片。
word
word
2 / 12
word
【实验内容】
程序流程图:
word
word
3 / 12
word
通过分配时间片的方式让进程获得处理机,假如一个时间片未用完,正在运行的程序就已经完成,便将其从就绪队列删除,再调用队首进程,并分配时间片;在一个时间片未用完时,中断程序就会启动,将进程送至就绪队列的尾部。
程序:
#include<iostream>
#include<queue>
#define MAX 100
using namespace std;
struct PCD //定义结构体
{
char name;//进程名
int a_time;//到达时间
int s_time;//服务时间
int s_time2;
int f_time;//完成时间
float t_time;//周转时间
float wt_time;//带权周转时间
int state;//当前进程的状态
};
int Currenttime=0;
int turnover(PCD &n)//求周转时间
word
word
4 / 12
word
{
return =-;
}
float wturnover(PCD &n)//求带权周转时间
{
return =;
}
int main()
{
int t;
queue<PCD> q;
q=queue<PCD>();
PCD s[5];
s[0].name='A';//初始化结构体数组
s[1].name='B';
s[2].name='C';
s[3].name='D';
s[4].name='E';
cout<<"请输入五个进程的到达时间:\n";
for(int i=0; i<=4; i++)
{
cout<<s[i].name<<" 到达时间:";
word
word
5 / 12
word
cin>>s[i].a_time;
s[i].state=i;
}
cout<<"请输入五个进程的服务时间:\n";
for(int i=0; i<=4; i++)
{
cout<<s[i].name<<" 服务时间:";
cin>>s[i].s_time;
s[i] .s_time2=s[i].s_time;
}
cout<<"请输入时间片的大小:\n";
cin>>t;
for(int i=0; i<5-1; i++) //将ABCDE的到达时间升序排列
for(int j=0; j<5-1; j++)
if(s[j].a_time>s[j+1].a_time)
swap(s[j],s[j+1]);
(s[0]);//将第一个进程入队列
for(int i=1; i<5; i++) //5个都入队列
{
while(s[i].a_time>Currenttime+t)//当进程到达时间大于当前时间,执行队列中的进程
word
word
6 / 12
word
{
if(()==true) //到当前时间
Currenttime++;//队列中无进程
if(()!=true) //队列前面有进程