RR和SJF CPU调度算法的Java代码
我已经尝试了数小时,搜索了一个包含到达时间作为代码输入的代码,但是,我找不到,也找不到。 代码的其余部分很简单,只是输入和输出。 我所需要的只是带有简单for循环的Java代码,它可以计算每个进程的周转时间和等待时间RR和SJF CPU调度算法的Java代码,java,Java,我已经尝试了数小时,搜索了一个包含到达时间作为代码输入的代码,但是,我找不到,也找不到。 代码的其余部分很简单,只是输入和输出。 我所需要的只是带有简单for循环的Java代码,它可以计算每个进程的周转时间和等待时间 循环赛 最短工作优先 算法 > P>经过一番努力,我终于找到了答案,但不是整个问题(RR-SJF),只是针对强> SJF,我还找到了 RR>强>的答案,C++中没有java。 如果有人能帮助我从C++到java转换 RR>强,我会非常感激。 SJF Java代码 import
- 循环赛
- 最短工作优先
算法 > P>经过一番努力,我终于找到了答案,但不是整个问题(RR-SJF),只是针对
import java.util.*;
public class SJF_m {
public static void main(String[] args) {
//______________________________________________________________________
//input
//______________________________________________________________________
Scanner sc = new Scanner(System.in);
System.out.println("Enter # of processes");
int n = sc.nextInt();
int ID;
int ArrivalTime[] = new int[n];
int ServiceTime[] = new int[n];
int FinishTime[] = new int[n];
int StartTime[] = new int[n];
int WaitingTime[] = new int[n];
int TurnAroundTime [] = new int[n];
int TotalWaitingTime = 0;
int TotalTurnAroundTime = 0;
double AVGWaitingTime;
double AVGTurnAroundTime;
System.out.println("_____________________________________");
for (int i = 0; i < n; i++) {
System.out.println("Enter id of process " + (i + 1));
ID = sc.nextInt();
}
System.out.println("______________________________________");
System.out.println("*Enter arrival time for each process*");
for (int i = 0; i < n; i++) {
System.out.println("Enter arival time for process " + (i + 1));
ArrivalTime[i] = sc.nextInt();
}
System.out.println("_______________________________________");
System.out.println("*Enter service time for each process*");
for (int i = 0; i < n; i++) {
System.out.println("Enter service time for process " + (i + 1));
ServiceTime[i] = sc.nextInt();
}
//______________________________________________________________________
//process
//______________________________________________________________________
int time = 0; // "time" for the current time.
int min = 0; // "min" for the least service time.
int j = 0; // "j" to save the task with the least time.
int count; // "count" to identify if it is the first operation in this turn.
for (int c = 0; c < n; c++) {
count = 0;
for (int i = 0; i < n; i++) //looping through all the tasks
{
if (FinishTime[i] == 0) //checking if the task wasn't done before
{
if (ArrivalTime[i] <= time) //checking if the task arrived or not
{
count++;
if (count == 1) //checking if it's the first task in this turn
{
min = ServiceTime[i];
j = i;
} else {
if (ServiceTime[i] < min) //checking if the task's service time is less than the current min
{
min = ServiceTime[i];
j = i; //takes procees number and puts it in "j" then compares again
}
}
}
}
}
StartTime[j] = time;
time += min;
FinishTime[j] = time;
}
//calculating waiting time and turn around time
for (int y = 0; y < n; y++) {
WaitingTime[y] = StartTime[y] - ArrivalTime[y];
TurnAroundTime[y] = WaitingTime[y] + ServiceTime[y];
TotalWaitingTime += WaitingTime[y];
TotalTurnAroundTime += TurnAroundTime[y];
}
AVGWaitingTime = (double) TotalWaitingTime / n;
AVGTurnAroundTime = (double) TotalTurnAroundTime / n;
//______________________________________________________________________
//output
//______________________________________________________________________
System.out.println("*Finish time for the processes*");
System.out.println("_______________________________________");
for (int i = 0; i < n; i++) {
System.out.println("Finish time for process " + (i + 1) + " " + FinishTime[i]);
}
System.out.println("____________________________________________________");
System.out.println("*Waiting time time for the processes*");
System.out.println("_______________________________________");
for (int i = 0; i < n; i++) {
System.out.println("Waiting time for process " + (i + 1) + " " + WaitingTime[i]);
}
System.out.println("____________________________________________________");
for (int i = 0; i < n; i++) {
System.out.println("Turnaround time time for process " + (i + 1) + " " + TurnAroundTime[i]);
}
System.out.println("____________________________________________________");
System.out.println("_______________________________________");
System.out.println("AVGWaiting time for processes " + " " + AVGWaitingTime);
System.out.println("____________________________________________________");
System.out.println("AVGTurnAroundTime time for processes " + " " + AVGTurnAroundTime);
System.out.println("____________________________________________________");
}
}
import java.util.*;
公共类SJF_m{
公共静态void main(字符串[]args){
//______________________________________________________________________
//输入
//______________________________________________________________________
扫描仪sc=新的扫描仪(System.in);
System.out.println(“进程的输入”);
int n=sc.nextInt();
int-ID;
int-ArrivalTime[]=新的int[n];
int ServiceTime[]=新的int[n];
int FinishTime[]=新int[n];
int StartTime[]=新的int[n];
int WaitingTime[]=新的int[n];
整数周转时间[]=新整数[n];
int TotalWaitingTime=0;
整型总周转时间=0;
双平均等待时间;
双平均周转时间;
System.out.println(“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
对于(int i=0;i