Escalonamento de Processos Round-robin
eu ja tenho a base em fifo, mais nao consigo fazer o escolamento usando em quantum. que poder ajudar resolver esse problema..
package GerenciamentoDeProcessos;
import javax.swing.JOptionPane;
public class TestaProcesso {
public static void main (String[] args){
Fifo fifo = new Fifo();
fifo.rodar(Integer.parseInt(JOptionPane.showInputDialog(""+"Quantidade de processos: ")));
}
}
package GerenciamentoDeProcessos;
public class Processo {
private int numeroProcesso;
private int numCiclos;
private int tempoChegada;
private int tempoEspera;
private int tempoTermino;
private int tempoAcabar;
public int getNumeroProcesso() {
return numeroProcesso;
}
public void setNumeroProcesso(int numeroProcesso) {
this.numeroProcesso = numeroProcesso;
}
public int getNumCiclos() {
return numCiclos;
}
public void setNumCiclos(int numCiclos) {
this.numCiclos = numCiclos;
}
public int getTempoChegada() {
return tempoChegada;
}
public void setTempoChegada(int tempoChegada) {
this.tempoChegada = tempoChegada;
}
public int getTempoEspera() {
return tempoEspera;
}
public void setTempoEspera(int tempoEspera) {
this.tempoEspera = tempoEspera;
}
public int getTempoTermino() {
return tempoTermino;
}
public void setTempoTermino(int tempoTermino) {
this.tempoTermino = tempoTermino;
}
public int getTempoAcabar() {
return tempoAcabar;
}
public void setTempoAcabar(int tempoAcabar) {
this.tempoAcabar = tempoAcabar;
}
}
package GerenciamentoDeProcessos;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Fifo {
private ArrayList<Processo> listaProcessos = new ArrayList<Processo>();
private int contProcessos;
private int contTempo;
private int quantum;
void rodar(int quantProcessos) {
inicializarLista(quantProcessos);
processarLista();
}
void inicializarLista(int quantProcessos) {
for (int i = 1; i <= quantProcessos; i++) {
Processo p = new Processo();
// Atribui o numero de Processo (i)
p.setNumeroProcesso(i);
p.setNumCiclos(Integer.parseInt(JOptionPane
.showInputDialog("Numero de Ciclos de Processo: " + i)));
p.setTempoChegada(Integer.parseInt(JOptionPane
.showInputDialog("Tempo de chegada de Processo: " + i)));
listaProcessos.add(p);
}
}
void processarLista() {
Processo p = new Processo();
String saida = "Proc NC TC TE TT TA";
for (int i = 0; i < listaProcessos.size(); i++) {
p = listaProcessos.get(i);
contTempo = contTempo + p.getNumCiclos();
p.setTempoTermino(contTempo);
p.setTempoAcabar(contTempo - p.getTempoChegada());
p.setTempoEspera(contTempo - p.getNumCiclos() - p.getTempoChegada());
saida += "\n " + p.getNumeroProcesso() + " "
+ p.getNumCiclos() + " " + p.getTempoChegada()
+ " " + p.getTempoEspera() + " "
+ p.getTempoTermino() + " " + p.getTempoAcabar();
}
JOptionPane.showMessageDialog(null, saida);
}
}
package GerenciamentoDeProcessos;
import javax.swing.JOptionPane;
public class TestaProcesso {
public static void main (String[] args){
Fifo fifo = new Fifo();
fifo.rodar(Integer.parseInt(JOptionPane.showInputDialog(""+"Quantidade de processos: ")));
}
}
package GerenciamentoDeProcessos;
public class Processo {
private int numeroProcesso;
private int numCiclos;
private int tempoChegada;
private int tempoEspera;
private int tempoTermino;
private int tempoAcabar;
public int getNumeroProcesso() {
return numeroProcesso;
}
public void setNumeroProcesso(int numeroProcesso) {
this.numeroProcesso = numeroProcesso;
}
public int getNumCiclos() {
return numCiclos;
}
public void setNumCiclos(int numCiclos) {
this.numCiclos = numCiclos;
}
public int getTempoChegada() {
return tempoChegada;
}
public void setTempoChegada(int tempoChegada) {
this.tempoChegada = tempoChegada;
}
public int getTempoEspera() {
return tempoEspera;
}
public void setTempoEspera(int tempoEspera) {
this.tempoEspera = tempoEspera;
}
public int getTempoTermino() {
return tempoTermino;
}
public void setTempoTermino(int tempoTermino) {
this.tempoTermino = tempoTermino;
}
public int getTempoAcabar() {
return tempoAcabar;
}
public void setTempoAcabar(int tempoAcabar) {
this.tempoAcabar = tempoAcabar;
}
}
package GerenciamentoDeProcessos;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Fifo {
private ArrayList<Processo> listaProcessos = new ArrayList<Processo>();
private int contProcessos;
private int contTempo;
private int quantum;
void rodar(int quantProcessos) {
inicializarLista(quantProcessos);
processarLista();
}
void inicializarLista(int quantProcessos) {
for (int i = 1; i <= quantProcessos; i++) {
Processo p = new Processo();
// Atribui o numero de Processo (i)
p.setNumeroProcesso(i);
p.setNumCiclos(Integer.parseInt(JOptionPane
.showInputDialog("Numero de Ciclos de Processo: " + i)));
p.setTempoChegada(Integer.parseInt(JOptionPane
.showInputDialog("Tempo de chegada de Processo: " + i)));
listaProcessos.add(p);
}
}
void processarLista() {
Processo p = new Processo();
String saida = "Proc NC TC TE TT TA";
for (int i = 0; i < listaProcessos.size(); i++) {
p = listaProcessos.get(i);
contTempo = contTempo + p.getNumCiclos();
p.setTempoTermino(contTempo);
p.setTempoAcabar(contTempo - p.getTempoChegada());
p.setTempoEspera(contTempo - p.getNumCiclos() - p.getTempoChegada());
saida += "\n " + p.getNumeroProcesso() + " "
+ p.getNumCiclos() + " " + p.getTempoChegada()
+ " " + p.getTempoEspera() + " "
+ p.getTempoTermino() + " " + p.getTempoAcabar();
}
JOptionPane.showMessageDialog(null, saida);
}
}
Rafha
Curtidas 0