Red de conocimiento informático - Consumibles informáticos - ) Utilice programación en lenguaje C (u otros lenguajes, como Java) para implementar un determinado algoritmo de programación de procesos (como la programación dinámica de prioridades) para N procesos.

) Utilice programación en lenguaje C (u otros lenguajes, como Java) para implementar un determinado algoritmo de programación de procesos (como la programación dinámica de prioridades) para N procesos.

Público: class PrivilegeProcess {

Público *** static void main(String[] args) {

MiQueue MiQueue new MiQueue ( //Declaración); Cola

Placa de circuito impreso [PCB = {nueva PCB(001,8,1), nueva PCB(002,7,9), nueva PCB(003,3, 8), nueva PCB (004, 1, 7), nueva PCB (005, 7, 4)};

gt; segmento de PCB = nueva PCB ();

(INT I = 0; lt; pcb. length; ) {// La inicialización se ordena primero y la clasificación de selección aquí utiliza el primer equipo de alta prioridad

(J = I; lt; pcb. length; J) {

(PCB[I]. Privilegio; PCB[J]. Privilegio) {

Segmento = PCB[1];

PCB[I] = PCB[J]; p>

PCB[J] = segmento;

}

}

}

Sistema. por out.println("Orden de los procesos después de poner en cola la primera vez:");

(int i = 0; lt; pcb.length; ) {

Llamada .out del sistema println(primer puesto en cola # nombre del programa: "pcb[i].name totaltime: "pcb[i].totaltime" of "privilege" PCB[i].privilege); }

();

myqueue.start(PCB);

}

}

Clase MyQueue {

INT índice = 0;

PCB [] PC = nueva PCB [5];

PCB [] PC1 = nueva PCB [4]

Temperatura de PCB = nueva PCB () br /gt; public *** cola no válida (proceso PCB) { // Algoritmo de cola

(índice == 5) {

("¡Fuera de límites!"); /p>

Regresar

}

PC [índice] = proceso

Índice

}

Público***:PCB DEQUEUE(){//Algoritmo de eliminación de la cola (índice == 0)

Devuelve vacío

( INT I = 0; lt; pc1. longitud; ) {

PC1[I] = PC[1];

}

Índice -

Temperatura = PC[0 ];

(INT I = 0; lt; pc1.longitud; ) { BR /gt; PC[I] = PC1[I]

}

Condiciones del informe;

}

Público *** Inicio no válido (PCB [] PC) {//Algoritmo de tabla de proceso

(PC[0] .isNotFinish==True||PC[1 isNotFinish==True||PC[2 isNotFinish==True||PC[3].

cuando isNotFinish == Verdadero | PC[4]. isNotFinish ==) {

// *Nota: | los operadores son falsos, todos los resultados de las expresiones son falsos; de lo contrario, son verdaderos

(INT I = 0; lt; longitud de la PC;) {

PC[I]. run(this); /gt; } System.out.println();

(int i = 0; lt; pc.length;) { // Maneja cada ejecución una vez por prioridad de reordenamiento de longitud de segmento de ejecución una vez

(j = i;lt;pc.length;J) {

if (PC[I]privilegelt;PC[J].privilege ) {

Temperatura = PC[I];

PC[I] = PC[J]

PC[J] = Temperatura

}

p>

}

}

}

}

}

clase PCB { // Declaración de nivel de procedimiento

y nombre int, tiempo total, privilegios de tiempo de ejecución

boolean isNotFinish

public PCB() {

}

public PCB (nombre, int privilegio de tiempo total) {

this.name = nombre; // nombre del proceso

this.totaltime = totaltime; /p>

this.privilege = Privilege; //Prioridad de tiempo total this.runtime = 2; //El valor del intervalo de tiempo es 2

this.isNotFinish = true // Si se completó la ejecución<; /p>

("Valor inicial: nombre del programa:" nombre "tiempo total:" privilegio "privilegio" de tiempo total);

System.out. Llamar a println();

}

MyQueue MQ public *** invalid run() { // Procesamiento basado en el algoritmo de intervalo de tiempo implementado

(totalTimegt ; 1) { totaltime = running; // El tiempo total es mayor que 1, tiempo total = tiempo total - segmento de tiempo

Privilegios -

("Nombre del programa: "nombre" tiempo restante : ""privilegio"); tiempo total

} else if (tiempo total == 1) {

tiempo total -; // Cuando el tiempo total es 1, el tiempo de ejecución es 1

gt; privilegio -

("nombre del programa:" nombre "remaintime:" privilegio de "privilegio" de tiempo total

}otro{

<); p> isNotFinish = false; // 0, establece el indicador isNotFinish en falso

}

if (isNotFinish == true) { br mq.deQueue(); p> mq.enQueue (este);

}

}

}