?? cpupriority.cpp
字號:
#include <iostream.h>
class PCB
{
public:
char pname[20]; //進程名
int level; //進程的優先級
int runtime; //估計運行時間
char state; //進程狀態
class PCB * next; //尾鏈接指針
class PCB * pre; //頭鏈接指針
public:
void ShowInf()
{
cout<<"進程名:"<<pname<<endl;
cout<<"運行級:"<<level<<endl;
cout<<"估計運行時間:"<<runtime<<endl;
cout<<"進程狀態:"<<state<<endl;
cout<<endl;
}
};
PCB pcb[5];
PCB *pcbHead;
PCB *pCurRunProc;
long CurTime;
//創建進程
void CreateProcess()
{
//鏈接就緒進程頭尾
pcb[0].next = &pcb[1];
pcb[1].next = &pcb[2];
pcb[2].next = &pcb[3];
pcb[3].next = &pcb[4];
pcb[4].next = NULL;
pcb[0].pre = NULL;
pcb[1].pre = &pcb[0];
pcb[2].pre = &pcb[1];
pcb[3].pre = &pcb[2];
pcb[4].pre = &pcb[3];
pcbHead = &pcb[0];
//初始化5個進程信息
cout<<"請輸入5個進程信息:"<<endl;
for(int i = 0;i < 5;i++)
{
cout<<"請輸入進程"<<i+1<<"的信息:"<<endl;
cout<<"進程名:";
cin>>pcb[i].pname;
cout<<"運行級:";
cin>>pcb[i].level;
cout<<"估計運行時間:";
cin>>pcb[i].runtime;
pcb[i].state = 'R';
}
cout<<endl<<"以下為運行記錄:"<<endl;
}
//選擇進程
int SelectProcess()
{
int nRC = 0;
PCB *pcbTemp = pcbHead;
//如果就緒進程隊列為空,退出
if( pcbTemp == NULL)
return 0;
pCurRunProc = NULL;
int lv = 65535;
//從就緒進程隊列中選擇出一個高優先級的進程
do
{
if((pcbTemp->state == 'R') && (pcbTemp->level <= lv))
{
lv = pcbTemp->level;
pCurRunProc = pcbTemp;
}
pcbTemp = pcbTemp->next;
}
while( pcbTemp != NULL);
return 1;
}
//運行進程
void RunProcess()
{
if(pCurRunProc->runtime == 0)
{
pCurRunProc->state = 'C';
//就緒進程頭
if(pCurRunProc == pcbHead)
{
pcbHead = pCurRunProc->next;
pCurRunProc->pre = NULL;
pCurRunProc->next = NULL;
}
//就緒進程尾
else if(pCurRunProc->next == NULL)
{
if(pCurRunProc->pre != NULL)
{
pCurRunProc->pre->next = NULL;
pCurRunProc->pre = NULL;
}
else
{
pcbHead = NULL;
}
pCurRunProc->next = NULL;
}
//就緒進程中
else
{
pCurRunProc->pre->next = pCurRunProc->next;
pCurRunProc->next->pre = pCurRunProc->pre;
pCurRunProc->pre = NULL;
pCurRunProc->next = NULL;
}
}
else
{
pCurRunProc->level++;
pCurRunProc->runtime--;
CurTime++;
cout<<"當前時間:"<<CurTime<<endl;
pCurRunProc->ShowInf();
}
}
void main()
{
CurTime = 0;
CreateProcess();
int nRun = SelectProcess();
//當沒有進程可運行時退出
while( nRun == 1)
{
nRun = SelectProcess();
RunProcess();
}
cout<<endl<<"進程運行完畢!"<<endl;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -