📄 源程序.txt
字号:
#include<iostream>
using namespace std;
struct Process
{
char name[10];
int startTime;
int runTime;
int startIOTime;
int runIOTime;
Process *next;
};
void main()
{
int time;
int processNum;
int endedProcessNum;
Process p[20];
Process* runningProcess;
Process* readyProcessQueue;
Process* lastReadyProcess;
Process* waitProcessQueue;
Process* tempProcess1;
Process* tempProcess2;
Process* tempProcess3;
Process* tempProcess4;
time=0;
cout<<"input processNum:";
cin>>processNum;
endedProcessNum=0;
for(int i=0;i<processNum;i++)
{
cout<<"input process name:";
cin>>p[i].name;
cout<<"input "<<p[i].name<<"'s startTime:";
cin>>p[i].startTime;
cout<<"input "<<p[i].name<<"'s runTime:";
cin>>p[i].runTime;
cout<<"input "<<p[i].name<<"'s startIOTime:";
cin>>p[i].startIOTime;
cout<<"input "<<p[i].name<<"'s runIOTime:";
cin>>p[i].runIOTime;
p[i].next=NULL;
}
runningProcess=NULL;
readyProcessQueue=NULL;
lastReadyProcess=NULL;
waitProcessQueue=NULL;
while(endedProcessNum<processNum)
{for(int i=0;i<processNum;i++)
{
if(p[i].startTime==time)
{
if(readyProcessQueue==NULL)
readyProcessQueue=&p[i];
if(lastReadyProcess!=NULL)
lastReadyProcess->next=&p[i];
lastReadyProcess=&p[i];
}
}
if(runningProcess!=NULL)
{runningProcess->runTime--;
runningProcess->startIOTime --;
if(runningProcess->runTime ==0)
{
runningProcess=NULL;
endedProcessNum++;
}
else if(runningProcess->startIOTime==0)
{
runningProcess->next=waitProcessQueue;
waitProcessQueue=runningProcess;
runningProcess=NULL;
}
}
tempProcess1= waitProcessQueue;
tempProcess2= NULL;
while(tempProcess1!=NULL)
{
if(tempProcess1-> runIOTime==0)
{
if(tempProcess2==NULL)
waitProcessQueue= tempProcess1->next;
else
tempProcess2->next= tempProcess1->next;
tempProcess1->next=NULL;
if(readyProcessQueue==NULL)
readyProcessQueue= tempProcess1;
if(lastReadyProcess!=NULL)
lastReadyProcess->next= tempProcess1;
lastReadyProcess= tempProcess1;
if(tempProcess2==NULL)
tempProcess1=waitProcessQueue;
else
tempProcess1 = tempProcess2->next;
}
else{
tempProcess1-> runIOTime--;
tempProcess2= tempProcess1;
tempProcess1= tempProcess1->next;
}
}
if(runningProcess==NULL && readyProcessQueue!=NULL)
{
if(readyProcessQueue->next==NULL)
{
runningProcess=readyProcessQueue;
readyProcessQueue=NULL;
lastReadyProcess=NULL;
}
else
{
tempProcess1=readyProcessQueue->next;
tempProcess2=readyProcessQueue;
tempProcess3=readyProcessQueue;
tempProcess4=NULL;
while(tempProcess1!=NULL)
{
if(tempProcess1->runTime<tempProcess3->runTime)
{
tempProcess3=tempProcess1;
tempProcess4=tempProcess2;
}
tempProcess2=tempProcess1;
tempProcess1=tempProcess1->next;
}
if(tempProcess4==NULL)
{
runningProcess=readyProcessQueue;
readyProcessQueue=readyProcessQueue->next;
}
else if(tempProcess3->next==NULL)
{
runningProcess=tempProcess3;
tempProcess4->next=NULL;
lastReadyProcess=tempProcess4;
}
else{
runningProcess=tempProcess3;
tempProcess4->next=tempProcess3->next;
}
}
runningProcess->next=NULL;
if(readyProcessQueue==NULL)
lastReadyProcess=NULL;
}
cout<<"_____________________________________________"<<endl;
cout<<"System Time:"<<time<<endl;
if(runningProcess!=NULL)
cout<<"Running Process:"<<runningProcess->name<<endl;
else
cout<<"Running Process:none"<<endl;
cout<<"Ready Process Queue:";
tempProcess1=readyProcessQueue;
while(tempProcess1!=NULL)
{
cout<<tempProcess1->name<<" ";
tempProcess1=tempProcess1->next;
}
cout<<endl;
cout<<"Wait Process Queue:";
tempProcess1=waitProcessQueue;
while(tempProcess1!=NULL)
{
cout<<tempProcess1->name<<" ";
tempProcess1=tempProcess1->next;
}
cout<<endl;
time++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -