-
大小:文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-11-07
- 語言: 其他
- 標(biāo)簽: 操作系統(tǒng)??
資源簡介

代碼片段和文件信息
#define?MAXQSIZE??100?????//最大隊(duì)列長度
#define?NULL?0
#define?OK?1
#define?OVERFLOW?0
#define?STATUS?int
#define?ERROR?0
#include?
#include?
#include?
using?namespace?std;
struct?PCB
{
int?name;//用數(shù)字對數(shù)據(jù)塊標(biāo)號
int?state;//其狀態(tài)為0或1
int?prior;//優(yōu)先級
};
typedef?struct?QNode
{//定義隊(duì)列的結(jié)點(diǎn)的結(jié)構(gòu)
???PCB???data;
???struct?QNode??*next;
}QNode?*QueuePtr;
typedef?struct?
{//定義隊(duì)列的結(jié)構(gòu)
???QueuePtr??front;????????????//隊(duì)頭指針???
???QueuePtr??rear;?????????????//隊(duì)尾指針
}linkQueue;??
int?InitQueue?(linkQueue?&Q)
{//初始化隊(duì)列
???Q.front=Q.rear=(QueuePtr)?malloc(sizeof(QNode));?
????if(!Q.front)?exit(0);
????Q.front->next=NULL;
????return?OK;
}
int?PrintQueue(linkQueue?&Q)//打印整個(gè)隊(duì)列
{
QueuePtr?p;
p=(QueuePtr)malloc(sizeof(QNode));
if(Q.front==Q.rear)?return?ERROR;
p=Q.front->next;
do
{
cout<data.name<<“?????????“<data.state<<“?????????“<data.prior< p=p->next;
}
while(p!=NULL);
cout< free(p);
return?OK;
}
void?print(PCB?&s)//打印單個(gè)進(jìn)程的情況
{
cout<
}
int?EnQueue(linkQueue?&QPCB?e)
{//入隊(duì)
QueuePtr?p;
????p=(QueuePtr)malloc(sizeof(QNode));
????if(!p)?exit(0);
????p->data=e;?p->next=NULL;
????Q.rear->next=p;
????Q.rear=p;
????return?OK;
}
int?DeQueue?(linkQueue?&QPCB?&e)
{//出隊(duì)
QueuePtr?p;
????p=(QueuePtr)malloc(sizeof(QNode));
???if(Q.front==Q.rear)?return?ERROR;
???p=Q.front->next;
???e=p->data;
???Q.front->next=p->next;
???if(Q.rear==p)?Q.rear=Q.front;
???free(p);
???return?OK;
}
int?GetHead?(linkQueue?&QPCB?&e)
{//讀取對列頭元素
e=Q.front->next->data;
return?OK;
}
int?QueueEmpty?(linkQueue?Q)
{//判斷隊(duì)列是否為空,為空則返回0
if(Q.front==Q.rear)
return?0;????
else
return?1;
?}
void?fifo(linkQueue?&waitlinkQueue?&oklinkQueue?&run)
{//先進(jìn)先出調(diào)度算法,wait為等待對列,ok為就緒隊(duì)列
srand((unsigned)time(NULL));//讓隨機(jī)數(shù)不重復(fù)
PCB?temptemp2;
int?t;
while(QueueEmpty(wait)==1||QueueEmpty(ok)==1)
{
///////////////////////////////////////////////就緒隊(duì)列放一個(gè)元素到運(yùn)行隊(duì)列中
if(1==QueueEmpty(ok))//ok隊(duì)列非空
{
DeQueue?(oktemp);//就緒隊(duì)列中出一個(gè)元素
temp.state=2;
EnQueue(runtemp);//就緒隊(duì)列頭進(jìn)入運(yùn)行隊(duì)列
cout<<“當(dāng)前執(zhí)行進(jìn)程為:“< }
else
{
cout<<“就緒隊(duì)列為空“< //return?;
}
//////////////////////////////////////////////////////////等待隊(duì)列的第一個(gè)進(jìn)程插入到就緒隊(duì)列
if(1==QueueEmpty(wait))//等待隊(duì)列非空
{
DeQueue?(?waittemp);
temp.state?=?1;
EnQueue(oktemp);
}
////////////////////////////////////////////////////////////輸出運(yùn)行情況
cout<<“進(jìn)程名???狀態(tài)????優(yōu)先級???“< cout<<“就緒隊(duì)列為:“< PrintQueue(ok);
cout<<“等待隊(duì)列為:“< PrintQueue(wait);
///////////////////////////////////////////////////////////如何處理正在運(yùn)行隊(duì)列
if(1==QueueEmpty(run))//ok隊(duì)列非空
{
t?=?rand()%2;
DeQueue?(runtemp);//就緒隊(duì)列中出一個(gè)元素
if(0==t)
{
temp.state=3;
}
else?if(1==t)
{
temp.state=1;
EnQueue(oktemp);//插入就緒隊(duì)列隊(duì)尾
}
else?if(2==t)
{
temp
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????4896??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\BuildLog.htm
?????文件?????663552??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\fifo.exe
?????文件????????146??2008-12-08?17:17??實(shí)驗(yàn)1\sy1\Debug\fifo.exe.em
?????文件????????212??2008-12-08?17:17??實(shí)驗(yàn)1\sy1\Debug\fifo.exe.em
?????文件????????145??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\fifo.exe.intermediate.manifest
?????文件????1511164??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\fifo.ilk
?????文件?????488185??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\fifo.obj
?????文件??????43520??2008-12-09?10:48??實(shí)驗(yàn)1\sy1\Debug\fifo.opt
?????文件????2468864??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\fifo.pdb
?????文件?????????67??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\mt.dep
?????文件??????50176??2008-12-08?13:20??實(shí)驗(yàn)1\sy1\Debug\vc60.idb
?????文件??????53248??2008-12-08?13:20??實(shí)驗(yàn)1\sy1\Debug\vc60.pdb
?????文件?????175104??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug\vc80.idb
?????文件?????167936??2008-12-15?10:14??實(shí)驗(yàn)1\sy1\Debug\vc80.pdb
?????文件???????9406??2008-12-15?10:14??實(shí)驗(yàn)1\sy1\fifo.cpp
?????文件???????4260??2008-12-08?13:24??實(shí)驗(yàn)1\sy1\fifo.dsp
?????文件????????533??2008-12-08?13:09??實(shí)驗(yàn)1\sy1\fifo.dsw
?????文件????1387520??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\fifo.ncb
?????文件??????48640??2008-12-08?13:24??實(shí)驗(yàn)1\sy1\fifo.opt
?????文件????????996??2008-12-08?13:20??實(shí)驗(yàn)1\sy1\fifo.plg
?????文件????????872??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\fifo.sln
????..A..H.?????14336??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\fifo.suo
?????文件???????5105??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\fifo.vcproj
?????文件???????1427??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\fifo.vcproj.0A071DF18F2E4E6.Administrator.user
?????文件?????204288??2009-01-07?20:35??實(shí)驗(yàn)1\實(shí)驗(yàn)報(bào)告1.doc
?????目錄??????????0??2008-12-15?10:36??實(shí)驗(yàn)1\sy1\Debug
?????目錄??????????0??2008-12-15?10:36??實(shí)驗(yàn)1\sy1
?????目錄??????????0??2009-12-29?20:32??實(shí)驗(yàn)1
-----------?---------??----------?-----??----
??????????????7304598????????????????????28
............此處省略1個(gè)文件信息
評論
共有 條評論