El algoritmo FCFS (First Come First Served) asigna la CPU al proceso que haya estado listo por más tiempo, sin considerar prioridades. Tiene un alto tiempo de respuesta debido a que un proceso no cede la CPU hasta terminar. El algoritmo FSS asigna la CPU de forma equitativa entre procesos paralelos, considerando la prioridad básica, uso reciente de CPU por el proceso y grupo, y distribuyendo recursos no usados a otros grupos.
3. posee un alto
tiempo de Para elegir el
respuesta de la proceso al cual se
La planificación le asignará la
CPU pues el
FCFS elimina la CPU, se escoge el
proceso no
noción e que lleva más
abandona la CPU
importancia de las tiempo listo
hasta no haber
prioridades de los (primero en la
concluido pues es
procesos. cola).
un algoritmo Sin
Desalojo (No
Apropiativo)
4. El proceso que se está ejecutando solo cede la CPU por dos razones:
Que se bloquee voluntariamente en espera de un evento. (Impresora,
fichero, etc)
Cuando termina su ejecución
Ventaja
• fácil implementación
Desventaja
• no es válido para entornos
interactivos ya que un proceso de
mucho cálculo de CPU hace
aumentar el tiempo de espera de los
demás procesos.
5.
6. Ejemplo en Java
import java.util.*;
public class FCFS {
/*ESTA CLASE RECIBE UN VECTOR CON TODOS LOS DATOS QUE SE NECESITAN PARA
EMPEZAR A EJECUTAR EL ALGORITMO, EN ESTE SE EMPIEZAN A
EJECUTAR LOS PROCESOS A COMO FUERON LLEGANDO*/
Vector VectorProcesos;
private double DoubleTiempoEspera=0;
private int DoubleTiempoEspera1=0;
private int vectoraux[];
private int NumeroProceso[];
private String ProcesosNombres[];
private double vectoraux1[];
/*EN EL CONTRUCTOR SE RECIBE EL VECTOR CON TODOS LOS DATOS DE LOS
PROCESOS*/
public FCFS(Vector VectorProcesos){
this.VectorProcesos = VectorProcesos;
vectoraux=new int[VectorProcesos.size()];
NumeroProceso=new int[VectorProcesos.size()];
ProcesosNombres=new String[VectorProcesos.size()];
vectoraux1=new double[VectorProcesos.size()];
}
7.
/*EN ESTA PARTE SE CALCULA EL TIEMPO PROMEDIO DE ESPERA DEL ALGORTIMO*/
public double getTiempoEsperaPromedio(){
for (int
i=0;i DoubleTiempoEspera+=((Procesos)VectorProcesos.elementAt(i)).getIntTiempoRafaga();
DoubleTiempoEspera1+=((Procesos)VectorProcesos.elementAt(i)).getIntTiempoRafaga();
ProcesosNombres[i]=((Procesos)VectorProcesos.elementAt(i)).getStringNombre();
NumeroProceso[i]=((Procesos)VectorProcesos.elementAt(i)).getIntTiempoLlegada()+1;
vectoraux[i]=DoubleTiempoEspera1;
vectoraux1[i]=DoubleTiempoEspera;
}
DoubleTiempoEspera=0;
for (int i=0;i DoubleTiempoEspera+=vectoraux1[i];
}
DoubleTiempoEspera=DoubleTiempoEspera/VectorProcesos.size();
return DoubleTiempoEspera;
}
/*SE DEVUELVEN LOS TIEMPOS DE RAFAGA*/
public int[] getValores(){
return vectoraux;
}
8. /*SE DEVUELVEN EL TIEMPO DE RAFAGA*/
public String[] getNombre(){
return ProcesosNombres;
}
/*SE DEVUELVE EL NUMERO DE PROCESO*/
public int[] getNumeroProceso(){
return NumeroProceso;
}
/*SE DEVUELVE EL TIEMPO PROMEDIO DE ESPERA*/
public double imprimeResultado(){
System.out.println(DoubleTiempoEspera);
return DoubleTiempoEspera;
}
}
9. Algoritmo FSS-Panificador por reparto equitativo
Utilizado en sistemas
multiusuario con procesos
paralelos (hilos)
cómo se comporta el
conjunto de procesos de
usuario que constituyen
una aplicación.
cada usuario dispone de
una parte del procesador
10. la planificación se lleva por prioridades, teniendo en cuenta la prioridad básica del
proceso, su utilización reciente de la CPU y la utilización reciente de la CPU por parte del
grupo al que pertenece. Cuanto mayor es el valor numérico de la prioridad, menor es ésta
En el caso de la utilización del grupo, la media se normaliza dividiendo por el peso del
grupo. Cuanto mayor es el peso asignado al grupo, menos afecta su utilización a la
prioridad
La FSS tiene en cuenta el historial de ejecución de un grupo a fin de procesos, junto con el
historial de ejecución individual de cada proceso
11. La planificación se lleva a cabo por prioridades. Cuanto mayor es
el valor numérico de la prioridad menor es ésta. Se tiene en cuenta
para la asignación de prioridades:
Prioridad Básica del proceso
Uso de CPU recientemente por parte del proceso
Uso de CPU recientemente por parte del grupo al que pertenec2
12. Los recursos no utilizados por un grupo de porción
Ejemplo en UNIX justa se distribuyen a otros grupos en proporciona sus
necesidades relativas.