操作系统实验——多级反馈队列算法模拟

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
typedef struct node		/*进程节点信息*/  
{  
char name[20];			/*进程的名字*/  
int prio;				/*进程的优先级*/  
int round;				/*分配CPU的时间片*/  
int cputime;			/*CPU执行时间*/  
int needtime;			/*进程执行所需要的时间*/  
char state;				/*进程的状态,W——就绪态,R——执行态,F——完成态*/  
int count;				/*记录执行的次数*/  
struct node *next;		/*链表指针*/  
}PCB;  
typedef struct Queue	/*多级就绪队列节点信息*/  
{  
PCB *LinkPCB;			/*就绪队列中的进程队列指针*/  
int prio;				/*本就绪队列的优先级*/  
int round;				/*本就绪队列所分配的时间片*/  
struct Queue *next;		/*指向下一个就绪队列的链表指针*/  
}ReadyQueue;  
PCB *run=NULL,*finish=NULL;				/*定义三个队列,就绪队列,执行队列和完成队列*/  
ReadyQueue *Head = NULL;				/*定义第一个就绪队列*/  
int num;								/*进程个数*/  
int ReadyNum;							/*就绪队列个数*/  
void Output();							/*进程信息输出函数*/  
void InsertFinish(PCB *in);				/*将进程插入到完成队列尾部*/  
void InsertPrio(ReadyQueue *in);		/*创建就绪队列,规定优先数越小,优先级越低*/  
void PrioCreate();						/*创建就绪队列输入函数*/  
void GetFirst(ReadyQueue *queue);		/*取得某一个就绪队列中的队头进程*/  
void InsertLast(PCB *in,ReadyQueue *queue);   /*将进程插入到就绪队列尾部*/  
void ProcessCreate();							/*进程创建函数*/  
void RoundRun(ReadyQueue *timechip);			/*时间片轮转调度算法*/  
void MultiDispatch();							/*多级调度算法,每次执行一个时间片*/  

int main(void)  
{  
PrioCreate();							/*创建就绪队列*/  
ProcessCreate();						/*创建就绪进程队列*/  
MultiDispatch();						/*算法开始*/  
Output();								/*输出最终的调度序列*/  
return 0;  
}  
void Output()					/*进程信息输出函数*/  
{  
ReadyQueue *print = Head;  
PCB *p;  
printf("进程
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值