• 大小:
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-07
  • 语言: 其他
  • 标签: 操作系统  

资源简介

操作系统 进程调度

资源截图

代码片段和文件信息

#define MAXQSIZE  100     //最大队列长度
#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;//用数字对数据块标号
int state;//其状态为0或1
int prior;//优先级
};
typedef struct QNode
{//定义队列的结点的结构
   PCB   data;
   struct QNode  *next;
}QNode *QueuePtr;
typedef struct 
{//定义队列的结构
   QueuePtr  front;            //队头指针   
   QueuePtr  rear;             //队尾指针
}linkQueue;  
int InitQueue (linkQueue &Q)
{//初始化队列
   Q.front=Q.rear=(QueuePtr) malloc(sizeof(QNode)); 
    if(!Q.front) exit(0);
    Q.front->next=NULL;
    return OK;
}
int PrintQueue(linkQueue &Q)//打印整个队列
{
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)//打印单个进程的情况
{
cout<
}

int EnQueue(linkQueue &QPCB e)
{//入队
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)
{//出队
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)
{//判断队列是否为空,为空则返回0
if(Q.front==Q.rear)
return 0;    
else
return 1;
 }
void fifo(linkQueue &waitlinkQueue &oklinkQueue &run)
{//先进先出调度算法,wait为等待对列,ok为就绪队列
srand((unsigned)time(NULL));//让随机数不重复
PCB temptemp2;
int t;
while(QueueEmpty(wait)==1||QueueEmpty(ok)==1)
{
///////////////////////////////////////////////就绪队列放一个元素到运行队列中
if(1==QueueEmpty(ok))//ok队列非空
{
DeQueue (oktemp);//就绪队列中出一个元素
temp.state=2;
EnQueue(runtemp);//就绪队列头进入运行队列
cout<<“当前执行进程为:“< }
else
{
cout<<“就绪队列为空“< //return ;
}

//////////////////////////////////////////////////////////等待队列的第一个进程插入到就绪队列
if(1==QueueEmpty(wait))//等待队列非空
{
DeQueue ( waittemp);
temp.state = 1;
EnQueue(oktemp);
}
////////////////////////////////////////////////////////////输出运行情况
cout<<“进程名   状态    优先级   “< cout<<“就绪队列为:“< PrintQueue(ok);
cout<<“等待队列为:“< PrintQueue(wait);
///////////////////////////////////////////////////////////如何处理正在运行队列
if(1==QueueEmpty(run))//ok队列非空
{
t = rand()%2;
DeQueue (runtemp);//就绪队列中出一个元素

if(0==t)
{
temp.state=3;
}
else if(1==t)
{
temp.state=1;
EnQueue(oktemp);//插入就绪队列队尾
}
else if(2==t)
{
temp

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4896  2008-12-15 10:36  实验1\sy1\Debug\BuildLog.htm

     文件     663552  2008-12-15 10:36  实验1\sy1\Debug\fifo.exe

     文件        146  2008-12-08 17:17  实验1\sy1\Debug\fifo.exe.embed.manifest

     文件        212  2008-12-08 17:17  实验1\sy1\Debug\fifo.exe.embed.manifest.res

     文件        145  2008-12-15 10:36  实验1\sy1\Debug\fifo.exe.intermediate.manifest

     文件    1511164  2008-12-15 10:36  实验1\sy1\Debug\fifo.ilk

     文件     488185  2008-12-15 10:36  实验1\sy1\Debug\fifo.obj

     文件      43520  2008-12-09 10:48  实验1\sy1\Debug\fifo.opt

     文件    2468864  2008-12-15 10:36  实验1\sy1\Debug\fifo.pdb

     文件         67  2008-12-15 10:36  实验1\sy1\Debug\mt.dep

     文件      50176  2008-12-08 13:20  实验1\sy1\Debug\vc60.idb

     文件      53248  2008-12-08 13:20  实验1\sy1\Debug\vc60.pdb

     文件     175104  2008-12-15 10:36  实验1\sy1\Debug\vc80.idb

     文件     167936  2008-12-15 10:14  实验1\sy1\Debug\vc80.pdb

     文件       9406  2008-12-15 10:14  实验1\sy1\fifo.cpp

     文件       4260  2008-12-08 13:24  实验1\sy1\fifo.dsp

     文件        533  2008-12-08 13:09  实验1\sy1\fifo.dsw

     文件    1387520  2008-12-15 10:36  实验1\sy1\fifo.ncb

     文件      48640  2008-12-08 13:24  实验1\sy1\fifo.opt

     文件        996  2008-12-08 13:20  实验1\sy1\fifo.plg

     文件        872  2008-12-15 10:36  实验1\sy1\fifo.sln

    ..A..H.     14336  2008-12-15 10:36  实验1\sy1\fifo.suo

     文件       5105  2008-12-15 10:36  实验1\sy1\fifo.vcproj

     文件       1427  2008-12-15 10:36  实验1\sy1\fifo.vcproj.0A071DF18F2E4E6.Administrator.user

     文件     204288  2009-01-07 20:35  实验1\实验报告1.doc

     目录          0  2008-12-15 10:36  实验1\sy1\Debug

     目录          0  2008-12-15 10:36  实验1\sy1

     目录          0  2009-12-29 20:32  实验1

----------- ---------  ---------- -----  ----

              7304598                    28

............此处省略1个文件信息

评论

共有 条评论