Java操作系统进程调度算法——时间片轮转(RR)算法

本文介绍了Java中实现操作系统进程调度的时间片轮转(RR)算法,详细阐述了算法思想,定义了PCB进程控制块,并提供了实现思路、流程图和完整的代码示例,同时展示了实验输入示例和运行结果。
摘要由CSDN通过智能技术生成

Java操作系统进程调度算法——时间片轮转(RR)算法


前言

一、算法思想

按进程到达顺序将进程依次加入就绪队列当中,然后将 CPU 分配给位于队首的进程,确定一个时间片,让该进程执行一个时间片。当该进程执行时间到时,该进程可能已经执行完毕(可能在时间片未到时就以及执行完毕),或者未执行完毕,如果是前者只需将进程弹出队列即可,如果是后者则将该进程加入队尾,并将 CPU 分配给新的队首进程,如此循环。

二、数据结构

1.定义PCB进程控制块

String name;    //进程名
double AT;      //到达时间
double RT;	 	//需要运行时间
int CPUT=0;		//已用CPU时间
char State;     //进程状态

2.实现思路

(1)初始化进程控制块、各个队列。
(2)判断就绪队列是否为空;若不空,则就绪队列中首进程开始执行。
(3)设置时间片;时间片到,将运行进程已占用时间片+1。
(4)在该时间片内进程执行完毕,这种情况调度程序将立即把该进程弹出队列,并把 CPU 分配给新的队首进程。
(5)在该时间片内进程未执行完毕,调度程序将立即中断该进程执行,把该进程加入队尾,并将 CPU 分配给新的队首进程。

周转时间 = 进程完成时间 - 进程到达时间
带权周转时间 = 进程周转时间 / 进程实际运行时间
平均周转时间 = (进程1周转时间 + … + 进程n周转时间)/ n
平均带权周转时间 = (进程1带权周转时间 + … + 进程n带权周转时间)/ n

三、流程图

在这里插入图片描述

四、完整代码

import java.util.Scanner;

//private static void OS_HPF(HPF[] p)
class PCB{
          //进程的pcb
	String name;    //进程名
	double AT;         //到达时间
	double RT;	 		//需要运行时间
	int CPUT=0;		//已用CPU时间
	char State;     //进程状态
	PCB(){
   }
	PCB(String a,double b,double c){
   
		name=a;
		AT=b;
		RT=c;
	}
}
class Queue{
         //队列
	int a[]=new int[1000];
	int F=0;
	int L=0;
	void come(int num){
   
		if(L>=999)
			System.out.println("队满");
		a[L]=num;
		L++;	
	}
	void out(){
   
		if(F>L)
			System.out.println("队空");
		F++;
	}
	int isexit() {
   
		if(L>F)
			return 1;
		else
			return 0;
	}
}
class RR{
   
	String name;    //进程名
	double AT;         //到达时间
	double RT;	   //需要运行时间
	double Attime;
	double AQttime;
	public RR(){
    }
    public RR(String name, 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值