資源簡介
1)每一個進程有一個PCB,其內容可以根據具體情況設定。
2)可以在界面設定的互斥資源(包括兩種:輸入設備與輸出設備)的數目
3)進程數、進入內存時間、要求服務時間可以在界面上進行設定
4)進程之間存在一定的同步與互斥關系,可以通過界面進行設定,其表示方法如下:進程的服務時間由三段組成:I2C10O5(表示進程的服務時間由2個時間片的輸入,10個時間片的計算,5個時間片的輸出)
進程間的同步關系用一個段表示:W2,表示該進程先要等待P2進程執行結束后才可以運行因此,進程間的同步與互斥關系、服務時間可以統一用四段表示為:I2C10O5W2
5)可以在運行中顯示各進程的狀態:就緒、阻塞、執行
6)采用可視化界面,可在進程調度過程中隨時暫停調度,查看當前進程的狀態以及相應的阻塞隊列
7)具有一定的數據容錯性

代碼片段和文件信息
#include?“stdafx.h“
#include“linkQueue.h“
int?Clinkqueue::QueueEmpty()const//判斷隊列是否為空
{
?return?front==NULL&&rear==NULL;
}
int?Clinkqueue::GetQueueLength()const//獲取隊列長度
{
return?count;
}
void?Clinkqueue::EnQueue(CString?idint?arrivetimeint?inputtimeint?ctimeint?outputtimeCString?wait)//入隊依次將新增的結點插到隊尾
{
PCB?*p;
p=new?PCB;
p->processID=id;
p->arrivetime=arrivetime;
p->inputtime=inputtime;
p->ctime=ctime;
p->outputtime=outputtime;
p->wait=wait;
p->rtime=0;
p->flags1=0;?
p->flags2=0;
p->state=““;
p->finishtime=0;
p->next=NULL;
if(!QueueEmpty())
{
rear->next=p;
rear=p;
}
else
????front=rear=p;
????count++;
}
void?Clinkqueue::DeQueue(PCB?*p)//刪除p元素
{
PCB?*q;
q=front;
if(QueueEmpty())
return;
if(rear==front)
{
rear=front=NULL;
count--;
return;
}
if(p==front)
{
front=p->next;
p->next=NULL;
count--;
return;
}
while(q->next!=NULL)
{
if(q->next==p)
{
q->next=p->next;
if(p==rear)
?????rear=q;
count--;
break;
}
q=q->next;
}
}
int?Clinkqueue::CheckPCB(CString?id)????//檢查是否存在指定id的節點
{
PCB?*p=front;
if(QueueEmpty())
{
return?0;
}
while(p)
{
if(p->processID==id)?return?1;?
p=p->next;
}
return?0;
}
CString?Clinkqueue::GetProID(PCB?*p)const
{
return?p->processID;
}
int?Clinkqueue::GetCTime(PCB?*p)const//CPU
{
return?p->ctime;
}
int?Clinkqueue::GetRTime(PCB?*p)const?????//已運行時間
{
return?p->rtime;
}
PCB?*?Clinkqueue::GetFrontPointer()const//獲取隊頭指針
{
return?front;
}
int?Clinkqueue::GetFinishTime(PCB?*p)const//獲取某個結點的R時間
{
return?p->finishtime;
}
int?Clinkqueue::GetATime(PCB?*p)?const//獲取某個結點的到達時間
{
return?p->arrivetime;
}
int?Clinkqueue::GetITime(PCB?*p)?const//獲取某個結點的I時間
{
return?p->inputtime;
}
int?Clinkqueue::GetOTime(PCB?*p)?const//獲取某個結點的O時間
{
return?p->outputtime;
}
CString?Clinkqueue::GetWait(PCB?*p)const
{
return?p->wait;
}
// CString?GetWait(PCB?*)const;
CString?Clinkqueue::GetState(PCB?*p)//獲取進程控制塊的狀態
{
if(!QueueEmpty())//隊列不為空
??????
return?p->state;
else
return?““;
}
void?Clinkqueue::EnQueue(PCB?*p)
{
if(!p)
???return;
p->next=NULL;
?????if(QueueEmpty())
??{
??front=rear=p;
?}
??else
??{
??rear->next=p;
??rear=p;
??}
??//?rear->next=NULL;
??count++;
}
int?Clinkqueue::alltime(int?aint?f)//計算兩個時間相差的秒數
{
int?c;
c=f-a;
return?c;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4909??2012-07-08?10:51??time\Debug\APPMODUL.obj
?????文件??????????0??2012-07-08?10:51??time\Debug\APPMODUL.sbr
?????文件??????26825??2012-07-09?06:33??time\Debug\li
?????文件??????????0??2012-07-09?06:33??time\Debug\li
?????文件?????105812??2012-07-08?10:51??time\Debug\StdAfx.obj
?????文件????1368165??2012-07-08?10:51??time\Debug\StdAfx.sbr
?????文件????4989952??2012-07-09?13:14??time\Debug\time.bsc
?????文件?????127040??2012-07-09?13:14??time\Debug\time.exe
?????文件?????237312??2012-07-09?13:14??time\Debug\time.ilk
?????文件??????27196??2012-07-09?06:33??time\Debug\time.obj
?????文件????7272232??2012-07-08?10:51??time\Debug\time.pch
?????文件?????500736??2012-07-09?13:14??time\Debug\time.pdb
?????文件???????4456??2012-07-09?09:29??time\Debug\time.res
?????文件??????????0??2012-07-09?06:33??time\Debug\time.sbr
?????文件??????84749??2012-07-09?13:14??time\Debug\timeDlg.obj
?????文件??????????0??2012-07-09?13:14??time\Debug\timeDlg.sbr
?????文件?????361472??2012-07-09?14:45??time\Debug\vc60.idb
?????文件?????421888??2012-07-09?13:14??time\Debug\vc60.pdb
?????文件???????2638??2012-07-08?16:09??time\li
?????文件???????1545??2012-07-09?06:33??time\li
?????文件???????3543??2012-07-01?16:28??time\ReadMe.txt
?????文件???????1078??2012-07-01?16:28??time\res\time.ico
?????文件????????396??2012-07-01?16:28??time\res\time.rc2
?????文件???????2153??2012-07-09?09:29??time\resource.h
?????文件????????202??2012-07-04?15:42??time\StdAfx.cpp
?????文件???????1052??2012-07-03?20:08??time\StdAfx.h
?????文件??????24048??2012-07-09?10:01??time\time.aps
?????文件???????3111??2012-07-09?19:03??time\time.clw
?????文件???????2206??2012-07-07?21:30??time\time.cpp
?????文件???????4599??2012-07-08?11:09??time\time.dsp
............此處省略14個文件信息
評論
共有 條評論