队列的典型实例问题——CPU时间片轮转调度

Posted tyxmax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列的典型实例问题——CPU时间片轮转调度相关的知识,希望对你有一定的参考价值。

 1 //eg输入5 100
 2 //      p1 150
 3 //      p2 80
 4 //      p3 200
 5 //      p4 350
 6 //      p5 20
 7 #include<iostream>
 8 #include<string>
 9 #include<queue>
10 using namespace std;
11 int main()
12     int n;//任务数
13     int time;//时间片
14     cin>>n; 
15     cin>>time;
16     string p[100000];//任务名
17     int t[100000]; 
18     string pp;
19     queue<string>q;
20     for(int i=1;i<=n;i++)//输入各个任务和用时 
21         cin>>p[i];
22         q.push(p[i]);
23         cin>>t[i];
24      
25     int timeans=0;//计时器 
26     while(!q.empty())
27         pp=q.front();    
28         if(t[pp[1]-0]<=time)//耗时小于等于时间片
29             timeans=timeans+t[pp[1]-0];//计时器加上这次的时间 
30             q.pop();//完成后出队 
31             cout<<pp<< <<timeans<<endl; 
32         
33         else//耗时大于时间片
34             timeans=timeans+time;//计时器加上这次的时间
35             t[pp[1]-0]-=time;//更新这个任务的用时            
36             q.pop();//出队
37             q.push(pp); 
38         
39     
40     return 0;
41  

 

以上是关于队列的典型实例问题——CPU时间片轮转调度的主要内容,如果未能解决你的问题,请参考以下文章

模拟处理机进程调度-简单循环轮转调度算法

时间片轮转算法和优先级调度算法模拟实现

UCOIII时间片轮转调度

《操作系统_时间片轮转RR进程调度算法》

调度算法:时间片轮转优先级多级反馈队列

时间片轮转(RR)优先级调度算法以及多级反馈队列调度算法