问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

将最高优先数优先的调度算法改为时间片轮转调度算法

发布网友 发布时间:2022-05-06 18:39

我来回答

1个回答

热心网友 时间:2023-10-15 11:12

#include<iostream>
using namespace std;
struct PCB_Type{
char name;
int cpu_time;
};
struct QueueNode{
struct PCB_Type PCB;
struct QueueNode *next;
};

int main(){
int m,n,t;
int usecpu=0,unusecpu=0;
cout<<"输入就绪队列中的进程数目m:";
cin>>m;
cout<<"输入阻塞队列中的进程的数目n:";
cin>>n;
cout<<"输入唤醒系统资源的相隔时间片个数t:";
cin>>t;
struct QueueNode *readyhead=new QueueNode ,*readytail=new QueueNode,
*blockedhead=new QueueNode,*blockedtail=new QueueNode;
// readyhead=NULL;readytail=NULL;blockedhead=NULL;blockedtail=NULL;
readyhead=readytail;
blockedhead=blockedtail;
for(int i=1;i<=m;i++){
struct QueueNode *t1=new QueueNode;
cout<<"输入就绪队列中进程的name和cpu_time:";
cin>>t1->PCB.name>>t1->PCB.cpu_time;
readytail->next=t1;
readytail=t1;
}
for(int j=1;j<=n;j++){
struct QueueNode *t2=new QueueNode;
cout<<"输入阻塞队列中进程的name和cpu_time:";
cin>>t2->PCB.name>>t2->PCB.cpu_time;
blockedtail->next=t2;
blockedtail=t2;
}

cout<<"输出就绪队列的进程信息:";
for(struct QueueNode *t3=readyhead->next;t3!=readytail->next;t3=t3->next){
cout<<t3->PCB.name<<"、"<<t3->PCB.cpu_time<<"---> ";
}
cout<<"无进程";
cout<<endl;
cout<<"输出阻塞队列的进程信息:";
struct QueueNode *t4;
t4=blockedhead->next;
while(t4!=blockedtail->next){
cout<<t4->PCB.name<<"、"<<t4->PCB.cpu_time<<"---> ";
t4=t4->next;
}
cout<<"无进程";
cout<<endl<<"进程的运行顺序:";
int x=0;
while(readyhead!=readytail||blockedhead!=blockedtail){
if(readyhead!=readytail){
struct QueueNode *p=readyhead->next;
cout<<p->PCB.name<<",";
p->PCB.cpu_time--;
usecpu++;
if(readyhead->next!=readytail){
if(p->PCB.cpu_time>0){
readyhead->next=p->next;//出队列
readytail->next=p;
readytail=p;
}
else{
readyhead->next=p->next;
delete p;
}
}
else//队列中只有两个节点 头结点和尾结点
{
if(p->PCB.cpu_time<=0){readytail=readyhead;//只有进程为执行完,就继续执行,完成之后,把队列清空,释放指针p;就绪队列无进程
delete p;}
}

}
else
{
unusecpu++;
cout<<"_,";
}
x++;
if(x==t){
if(blockedhead!=blockedtail){

struct QueueNode *q=blockedhead->next;
if(blockedhead->next!=blockedtail)
{
blockedhead->next=q->next;
}
else
{
blockedhead=blockedtail;
}
readytail->next=q;
readytail=q;
x=0;
}
}
}
cout<<endl;
cout<<"cpu的利用率="<<usecpu<<"/"<<usecpu+unusecpu<<endl;
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Hive笔记 Hive-元数据 英语low是什么意思 Low low 的是什么意思? 如何打开电脑设置的打印机电脑打印设置在哪里打开 使用电脑打印机怎么设置打印机和电脑怎样连接该如何设置 win10打印机设置在哪里 win10打印机设置方法介绍 怎么在电脑上设置打印机在电脑上怎么找打印机设置 怎样为电脑设置打印机电脑里打印机设置在哪 电脑打印机在哪里设置电脑上的打印机在哪里 大学操作系统:假设下述四个作业同时到达,当使用最高优先数优先调度算法时,作业的平均周转时间为__小时 动态高优先权优先调度算法 大起大落代表什么生肖 优先级调度算法是什么 充电式刮胡刀打开开关充电会损坏什么电子元件? 大起大落猜一生肖 有一个场景,我梦见两次,但现实中并没有见过那样的场景,这是怎么回事? 【第一次梦】 我和闺蜜去本城 梦见去闺蜜家的新房子,正好又是我常去的地方 如何做青椒榨菜炒肉丝 梦见闺蜜家装修房子,什么没说,就醒了? 我梦到好多蛇咬我 华为p7没电后,充电不断重启动? 华为P7充电器能长期给苹果6S充电吗 小蚁摄像机怎么看有几个用户 如何通过富时中国A50指数期货持仓量判断价格走势 梦到很多蛇咬到自己,老公不管要害死自己,自己哭的很伤心 独立显卡显存越大,共享系统内存越大么?显存大小和共享系统内存有没有关系? 电脑上看到GPU显存是GPU专享是8g GPU共享显存是8G 共16G显存 蓝时光赴美生子流程如何 共享gpu内存为什么几乎不用 最高响应比优先作业调度算法 操作系统问题 关于响应比最高优先算法 在线等~ PD称为什么控制算法 什么是调度算法? 大起大落是指什么生肖?请友友帮助! 在最高优先级算法的系统中,cpu调度方式为不可抢占是,不会发生进程切换的是? 猜生肖,大起大落的动物 假设下述四个作业同时到达,当使用最高优先数优先调度算法时,作业的平均周转时间为 小时 重重叠叠,起起落落,大起大落又不怕失败的动物?猜一个生肖 重重叠叠,起起落落,大起大落又不怕失败是什么生肖 大起大落又不怕失败的动物,十二生肖动物 字谜,“大起大落”不稳当。打两个数字。 重重叠叠,起起落落,大起大落又不怕失败的生肖是什么呢 重重叠叠,起起落落,大起大落又不怕失败的动物是什么生肖 重重叠叠,起起落落,大起大落不怕失败的生肖是什么 怎样设置电脑开机后自动启动某个.EXE文件 怎样设置电脑开机后自动启动某个.EXE文件? 怎样设置开机自动运行EXE 恩施市百通招标代理有限责任公司巴东分公司怎么样? 如何把一个EXE文件设置成开机自动启动