动态优先权进程调度算法

该代码实现了一个动态优先权进程调度算法,包括创建就绪队列和阻塞队列,插入、删除进程,更新队列状态等功能。通过模拟调度过程,展示了CPU工作、进程优先级调整和状态转换等操作。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<stdlib.h>
#define READY 1
#define BLOCK 2

struct PCB
{
	int ID;//进程id
	int PRIORITY;//进程优先级,越大越优先
	int CPUTIME;//已经运行的时间片
	int ALLTIME;//还要运行的时间片
	int STARTBLOCK;//进程开始变成BLCOK的时间片
	int BLOCKTIME;//经过BLCOKTIME之后进程由BLOCK转变成READY
	int STATE;//进程的状态READY--1,BLOCK--2
	PCB *next;//指向下一个进程

	PCB(int a1,int a2,int a3,int a4,int a5,int a6,int a7)
	{
		ID=a1;PRIORITY=a2;CPUTIME=a3;ALLTIME=a4;
		STARTBLOCK=a5;BLOCKTIME=a6;
		STATE=a7;
		next=NULL;
	}
};
PCB *Ready_Queue_Head=NULL;
PCB *Block_Queue_Head=NULL;
//创建了就绪队列和阻塞队列,均包含头结点,以后的节点插入均采取插入排序
void InitQueue()
{
	Ready_Queue_Head=(PCB*)malloc(sizeof(PCB));
	Ready_Queue_Head->PRIORITY=99999;
	Ready_Queue_Head->next=NULL;

	Block_Queue_Head=(PCB*)malloc(sizeof(PCB));
	Block_Queue_Head->PRIORITY=99999;
	Block_Queue_Head->next=NULL;
}
//用于cpu处理完所有进程后释放队列的头结点,避免内存泄露
void FreeQu
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值