• 大小: 1.15MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-03
  • 语言: 其他
  • 标签:

资源简介

操作系统--多级反馈队列进程的控制算法,是我自己精心编得,大家多给意见啊!!

资源截图

代码片段和文件信息

#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 prior;//优先级
        int ntime;//运行需要时间
        int rtime;//已经运行时间
        int pstate;//进程所在队列号
};
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;
cout<<“进程号:    进程优先级:   进程已经运行时间:     进程需要运行时间:“< while(p!=NULL)
{
  cout<data.name<<“                 “<data.prior<<“               “<data.rtime<<“                    “<data.ntime<   p=p->next;
}

cout< free(p);
return OK;
}

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 FindQueue (linkQueue &Qint a)
{//查找进程号为a的进程,并删除
    QueuePtr pq;
p=(QueuePtr)malloc(sizeof(QNode));
q=(QueuePtr)malloc(sizeof(QNode));
    if(Q.front==Q.rear) return ERROR;
    p=Q.front->next;
q=Q.front;
while(p)
{

if (p->data.name==a)
{
            q->next=p->next;
free(p);
return 1;
}
else
{
q=p;
p=p->next;
        }
}
     return 0;
}
int QueueEmpty (linkQueue Q)
{//判断队列是否为空,为空则返回0
if(Q.front==Q.rear)
return 0;    
else
return 1;
 }
void running (linkQueue &ready1linkQueue &ready2linkQueue &ready3linkQueue &run)
{//继续运行程序
srand((unsigned)time(NULL));//让随机数不重复
        PCB temp1temp2;
        int timep1=1;//时间片1
int timep2=2;//时间片2
int timep3=3;//时间片3
        if (QueueEmpty(run)==0)//如果运行队列无进程则从相应的就绪队列取
          if (QueueEmpty(ready1)==1)//就绪队列1不空则取第一个
            { 
               DeQueue (ready1temp1);
                temp1.rtime++;
                EnQueue(runtemp1);
             }
           else
               if (QueueEmpty(ready2)==1)//就绪队列2不空则取第一个
                  {
                      DeQueue (ready2temp1);
                      temp1.rtime++;
                      EnQueue(runtemp1);            
                   }
               else 
                  if (QueueEmpty(ready3)==1)//就绪队列3不空则取第一个
            

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

     文件     540753  2009-10-13 11:11  jckz\Debug\jckz.exe

     文件     804056  2009-10-13 11:11  jckz\Debug\jckz.ilk

     文件     264624  2009-10-13 11:11  jckz\Debug\jckz.obj

     文件    2040484  2009-10-11 21:45  jckz\Debug\jckz.pch

     文件    1131520  2009-10-13 11:11  jckz\Debug\jckz.pdb

     文件      55013  2009-10-11 21:45  jckz\Debug\StdAfx.obj

     文件     164864  2009-10-13 11:11  jckz\Debug\vc60.idb

     文件     241664  2009-10-13 11:11  jckz\Debug\vc60.pdb

     文件       9307  2009-10-13 11:11  jckz\jckz.cpp

     文件       4217  2009-10-11 21:57  jckz\jckz.dsp

     文件        533  2009-10-11 20:19  jckz\jckz.dsw

     文件      50176  2009-10-13 11:13  jckz\jckz.ncb

     文件      53760  2009-10-13 11:13  jckz\jckz.opt

     文件       1089  2009-10-13 11:11  jckz\jckz.plg

     文件       1197  2009-10-11 20:19  jckz\ReadMe.txt

     文件        291  2009-10-11 20:19  jckz\StdAfx.cpp

     文件        773  2009-10-11 20:19  jckz\StdAfx.h

     目录          0  2009-10-11 21:48  jckz\Debug

     目录          0  2009-10-11 21:57  jckz

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

              5364321                    19


评论

共有 条评论

相关资源