设计一个按照优先级调度算法实现处理机调度的程序

本文档描述了一个设计用于模拟优先级调度算法的处理机调度程序。程序使用PCB表示进程,通过动态优先级调整,选择优先级最高的进程运行。每次进程运行后,更新优先级和运行时间,并根据条件进行抢占。程序包含数据结构说明、流程图、参考代码和运行结果展示,验证了算法的正确性和稳定性。
摘要由CSDN通过智能技术生成

设计一个按照优先级调度算法实现处理机调度的程序

一、优先级调度算法实现处理机调度的程序设计提示如下:

( 1 ) 假设系统有n个进程,每个进程用一个进程控制块(PCB)来代表。进程控制块的格式如下表所示,且参数意义也相同。进程的优先数、到达时间和估计运行时间由用户程序任意设定,且优先数越低,优先级越高。调度时,总是选择优先级最高的进程运行。
(2)为了调度方便,设计一个指针指向就绪队列的第一个到达进程。另外再设一个当前运行进程指针,指向当前正运行的进程。
(3)处理机调度时,总是选择已经到达队列的优先级最高的进程运行。为了采用动态优先级调度,进程每运行一次,其优先级就减1。
(4)由于本题目是模拟实验,所以对被选中的进程并不实际启动运行,而只是执行如下操作:
1)优先数加1;
2)估计运行时间减1;
3)输出当前运行进程的名字。
用这三个操作来模拟进程的一次运行。
(5)进程运行一次后,应判断该进程的剩余运行时间是否为0,若不为0,且其优先级低于就绪队列的其他进程的优先级,则选择一个高优先级进程抢占CPU运行,若该进程的剩余运行时间为0,则将该进程的状态置为完成状态“C”,并撤出就绪队列。
(6)若就绪队列不为空,则重复上述的步骤(4)和(5)直到所有进程都运行完为止。
(7)在所设计的调度程序中,应包含显示或打印语句,以便显示或打印每次选中进程的名称及运行一次后进程的变化以及就绪队列中各进程排队情况。

二、程序中使用的数据结构及主要符号说明

在这里插入图片描述

模拟PCB进程控制块设置了如上数据结构,其中name是进程名,arrivalTime是到达时间,priorityNum是优先级数,runTime是运行时间,status是进程状态。
其中:
name为用户程序自定义的
priorityNum为1~10的随机数
arrivalTime和runTime为1~5的随机数
status的值有三种:Ready,Working,End,分别代表就绪状态,运行状态和终止状态。

三、程序流程图

在这里插入图片描述

四、参考代码

PCB类:

package pcb;

public class PCB {
   
	private String name;//进程名字
	private int arrivalTime;//到达时间,1~5的随机数
	private int priorityNum;//优先级,1~10的随机数
	private int runTime;//运行时间,1~5的随机数
	private String status = "Ready";//进程状态

	public PCB(String name) {
   
		super();
		this.name = name;
		this.setArrivalTime(arrivalTime);
		this.setPriorityNum(priorityNum);
		this.setRunTime(runTime);
		//this.printInformation();	
	}
	
	//打印PCB信息
	public void printInformation() {
   
		System.out.println(this.getName()+"\t"+this.getArrivalTime()+"\t"+
				this.getRunTime()+"\t"+this.getPriorityNum()+"\t"+this.getStatus());
	}

	

//	public PCB(String name, int arrivalTime, int priorityNum, int runTime) {
   
//	super();
//	this.name = name;
//	this.arrivalTime = arrivalTime;
//	this.priorityNum = priorityNum;
//	this.runTime = runTime;
//	this.printInformation();
//}



	//进程运行
	public void run() {
   		
		this.priorityNum++;
		this
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值