miércoles, 13 de marzo de 2013

Algoritmo FCFS


Las siglas FCFS significan en inglés First Come First Served (Primero en llegar, Primero en ser Servido), dentro de los algoritmos de Planificación de la CPU, este es el más sencillo.
La carga de trabajo se procesa simplemente en un orden de llegada. Por no tener en consideración el estado del sistema ni las necesidades de recursos de los procesos individuales, la planificación FCFS puede dar lugar a pobres rendimientos.
Este algoritmo 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á ejeucutando solo cede la CPU por dos razones:
  • Que se bloquee voluntariamente en espera de un evento. (Impresora, fichero, etc)
  • Cuando termina su ejecución.


Código del ejemplo hecho en python:

#! /usr/bin/python
# -*- coding: utf-8 -*-
cola_procesos = []
total_wtime = 0
n = int(raw_input('Ingresa el numero de procesos: '))
for i in xrange(n):
     cola_procesos.append([])#agregamos un objeto de tipo lista a la cola
     cola_procesos[i].append(raw_input('Ingresa el nombre del proceso: '))
     cola_procesos[i].append(int(raw_input('Tiempo de espera: ')))
     total_wtime += cola_procesos[i][1]
     cola_procesos[i].append(int(raw_input('Ingresa el tiempo de rafaga: ')))
     print ''

cola_procesos.sort(key = lambda cola_procesos:cola_procesos[1])

print 'Nombre del proceso\t\t Tiempo de espera \t \tTiempo de rafaga'
for i in xrange(n):
     print cola_procesos[i][0],'\t\t',cola_procesos[i][1],'\t\t',cola_procesos[i][2]

print 'Tiempo total de espera: ',total_wtime
print 'Tiempo promedio de espera: ',(total_wtime/n)