#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"
struct process
{
char name;
int arri_time;//arrived time
int serv_time;//servered time
int have_done_time;//已经运行时间
int done_time;//完成时间
int turn_around_time;//周转时间
float wei_turn_around_time;//带权周转时间
struct process * next;
};
int time=-1;
int time_slice=1
;//时间片初始值为1
Isempty(struct process* head)
{
if (head->next==NULL)
return true;
else return false;
}
void pushline(struct process* head,struct process* rn)
{
if (rn==NULL)
return;
struct process* x;
x=head;
while (x->next!=NULL)
{
x=x->next;
}
x->next=rn;
}
void popline(struct process* head,struct process** x)
{
if(!Isempty(head))
{
*x=head->next;
head->next=(*x)->next;
(*x)->next=NULL;
}
}
void isnewcome(struct process* head,struct process* readyline)
{
struct process* x;
if (head->next==NULL)
return;
if (head->next->arri_time==time&&head->next!=NULL)
{
cout<<time<<" time "<<"a new process arrive"<<endl;
popline(head,&x);
pushline(readyline,x);
}
}
void main()
{
struct process* head;
struct process* newnode;
struct process* tail;
struct process* readyline;//队列
readyline=(struct process*)malloc(sizeof(process));
readyline->next=NULL;
int i;
struct process* rightnow;
struct process* p;
/*struct process* n;*/
head=(struct process*)malloc(sizeof(process));
if(!head)
{
cout<<"内存分配错误"<<endl;
}
head->next=NULL;
tail=head;
while (1)
{
newnode=(struct process*)malloc(sizeof(process));
cout<<"请输入进程名"<<endl;
cin>>newnode->name;
if(newnode->name=='#')
break;
cout<<"请输入进程到达时间"<<endl;
cin>>newnode->arri_time;
cout<<"请输入进程服务时间"<<endl;
cin>>newnode->serv_time;
newnode->done_time=0;
newnode->turn_around_time=0;
newnode->wei_turn_around_time=0.0;
newnode->have_done_time=0;
// tail->next=newnode;
newnode->next=NULL;
//tail=newnode;
pushline(head,newnode);
}
p=head->next;
while(p!=NULL)
{
cout<<p->name<<"进程"<<endl;
p=p->next;
}
ss: while(time<200)
{
time++;
//cout<<"当前TIME"<<time<<endl;
isnewcome(head,readyline);
if (time!=0)
pushline(readyline,rightnow);
i=time_slice;
//cout<<"i="<<i<<endl;
while (i!=0)
{
//cout<<"DANG QIANG TIME"<<time<<endl;
if (i==time_slice)
{
i--;
if(!Isempty(readyline))
{
popline(readyline,&rightnow);
rightnow->have_done_time++;
rightnow->done_time=time;
cout<<"run "<<rightnow->name<<endl;
if (rightnow->have_done_time==rightnow->serv_time)
{
rightnow->turn_around_time=rightnow->done_time-rightnow->arri_time+1;
rightnow->wei_turn_around_time=(float)rightnow->turn_around_time/rightnow->serv_time;
cout<<"********************"<<endl<<rightnow->name<<" have done!"<<endl;
cout<<"turn_around_time:"<<rightnow->turn_around_time<<endl;
cout<<"wei_turn_around_time:"<<rightnow->wei_turn_around_time<<endl;
cout<<"********************"<<endl;
rightnow=NULL;
goto ss;
}
// else
//pushline(readyline,rightnow);
}
else //break;
goto ss;
}
else
{
i--;
time++;
isnewcome(head,readyline);
// popline(readyline,&rightnow);
rightnow->have_done_time++;
rightnow->done_time=time;
cout<<"run "<<rightnow->name<<endl;
if (rightnow->have_done_time==rightnow->serv_time)
{
rightnow->turn_around_time=rightnow->done_time-rightnow->arri_time+1;
rightnow->wei_turn_around_time=(float)rightnow->turn_around_time/rightnow->serv_time;
cout<<"********************"<<endl<<rightnow->name<<" have done!"<<endl;
cout<<"turn_around_time:"<<rightnow->turn_around_time<<endl;
cout<<"wei_turn_around_time:"<<rightnow->wei_turn_around_time<<endl;
cout<<"********************"<<endl;
rightnow=NULL;
goto ss;
}
//else
// pushline(readyline,rightnow);
}
}
}
/* readyline=head->next;
head=readyline->next;
p=readyline;
readyline=readyline->next;
while (1)
{
time_slice=1;
while (time_slice!=0)
{
time++;
q=head->next;
while (q!=NULL)
{
if (q->arri_time==time)
{
n=readyline;
while (n->next!=NULL)
{
n=n->next;
}
n->next=q;
//加入就绪队列
}
else q=q->next;
} //便利链表将到达进程加入就绪队列
time_slice--;
p->have_done_time++;
if(p->have_done_time==p->done_time)
{
cout<<p->name<<"完成"<<endl;
}
//运行当前进程
}
if(readyline==NULL)
break;
}*/
}
Arc-kid
- 粉丝: 4
- 资源: 17
最新资源
- COMSOL仿真模型:孔洞无损检测中的声波传播模拟,COMSOL-孔洞无损检测 模型介绍:本模型使用弹性波,时域显示物理接口模拟波在线弹性介质中的传播 此模型中存在一个椭圆孔洞,目的是为了仿真当材料
- COMSOL 5.6版固体超声导波在黏弹性材料中的仿真模型:汉宁窗调制信号与广义麦克斯韦模型应用,COMSOL-固体超声导波在黏弹性材料中的仿真 模型介绍:激励信号为汉宁窗调制的5周期正弦函数,中心频
- 风光储柴直流微电网系统的核心技术与并离网切换机制研究,风光储柴直流微电网可并离网切 含: 1.永磁直驱风机+mppt+整流+并网逆变 mppt采用扫描搜索法 整流采用转速外环电流内环双闭环控制 并网逆
- PV光伏与锂离子电池系统的Matlab Simulink仿真模型研究:阵列、变换器与控制模块详解,PV光伏+锂离子电池系统 Matlab Simulink仿真模型 模型主要包括以下几个部分: PV光伏
- "Carsim与Simulink联合仿真:车辆状态估计详解,包括质心侧偏角等六状态参数,基于Dugoff轮胎模型和CKF滤波",Carsim和simulink联合仿真车辆状态估计 估计的状态为:质心侧
- 双馈异步发电机仿真模型设计与实现方法探索,双馈异步发电机仿真模型 ,核心关键词:双馈异步发电机;仿真模型;电力电子;能量转换;控制系统;性能分析;动态响应;运行效率;参数设计;模型验证 ,"双馈异步发
- Matlab Simulink下的七自由度整车动力学模型搭建与验证:结合魔术轮胎模型与轮毂电机模型的综合应用,Matlab Simulink模型代搭 七自由度整车动力学模型 魔术轮胎模型 轮毂电机模型
- 基于STM32F103芯片的USB升级模拟U盘固件更新功能介绍,stm32 usb升级 模拟u盘 固件更新 芯片:stm32f103 功能介绍:stm32的usb口连接到电脑,boot程序会自动模拟出
- 基于Simulink MBD的新能源电动汽车主驱电驱控制器算法模型与开发资料:AUTOSAR架构下的MCU电机控制策略与ASIL C功能安全实现,主机厂基于Simulink MBD新能源电动汽车主驱电
- 两级式单相光伏并网仿真系统:BOOST电路MPPT控制实现最大功率跟踪,桥式逆变spwm波调制及双闭环控制,两级式单相光伏并网仿真 前级采用BOOST变电路,通过电导增量法MPPT控制实现最大功率点跟
- 光伏MPPT仿真模型的恒定电压法研究与应用探讨,光伏MPPT仿真模型-恒定电压法 ,核心关键词:光伏MPPT仿真模型;恒定电压法;光伏系统;最大功率点跟踪(MPPT)技术;恒定电压算法 ,"恒定电压法
- 光伏MPPT仿真:直接电压法(恒定电压法)的应用与自建光伏电池的替代方案,光伏MPPT仿真-直接电压法(恒定电压法),可替自建光伏电池 ,核心关键词:光伏MPPT仿真;直接电压法(恒定电压法);可替换
- 微电网下垂与PQ控制仿真研究:探索智能电网的稳定与高效控制策略,微电网下垂控制仿真,pq控制仿真 ,核心关键词:微电网下垂控制仿真; pq控制仿真; 仿真分析; 微电网技术; 电力控制 ,微电网仿真:
- MPC模型预测控制:从原理到代码实现,涵盖双积分、倒立摆、车辆运动学与动力学跟踪控制案例,mpc模型预测控制从原理到代码实现 mpc模型预测控制详细原理推导 matlab和c++两种编程实现 四个实际
- 交错并联Buck电路设计与仿真:波形图对比及参数分析,交错并联Buck电路的设计与仿真 与传统Buck电路进行比较,下图为仿真波形图,图二和图三分别对应占空比为0.5的交错并联Buck和Buck的输
- 基于有功无功外环与电流内环的MMC整流器平均值模型:PI解耦环流抑制器与最近电平逼近调制技术的应用,201电平MMC整流器平均值模型,采用有功功率和无功功率外环,交流电流内环,PI解耦环流抑制器,最近
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页