⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 源程序.txt

📁 进程是操作系统最重要的概念之一
💻 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 + -