Fcfs fss
-
Upload
david-rodriguez-gomez -
Category
Documents
-
view
680 -
download
1
Transcript of Fcfs fss
Algoritmo FCFS (First come-First
served)
posee un alto tiempo de
respuesta de la CPU pues el proceso no
abandona la CPU hasta no haber
concluido pues es un algoritmo Sin
Desalojo (No Apropiativo)
La planificación FCFS elimina la
noción e importancia de las prioridades de los
procesos.
Para elegir el proceso al cual se
le asignará la CPU, se escoge el
que lleva más tiempo listo
(primero en la cola).
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.
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()];
}
/*EN ESTA PARTE SE CALCULA EL TIEMPO PROMEDIO DE ESPERA DEL ALGORTIMO*/public double getTiempoEsperaPromedio(){for (inti=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;}
/*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;
}
}
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
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
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
Ejemplo en UNIX Los recursos no utilizados por un grupo de porción justa se distribuyen a otros grupos en proporciona sus
necesidades relativas.
Diego Camilo Aguirre Lora
Gracias