printing tasks karolina rivera jean robert charles jacinthe

Post on 24-Jan-2016

219 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Printing Tasks

Karolina RiveraJean Robert Charles Jacinthe

Un queue (cola) es una colección ordenada de elementos, donde se añaden elementos por atrás (trasero) y se empujan asea el “frente” donde se extraen por orden de entrada FIFO (First-in-First-Out).

What is a Queue?

En un día promedio 10 alumnos trabajan en el lab de computadoras con un tiempo dado. Suelen imprimir hasta 2 veces en ese tiempo y las tareas pueden ser de 1 a 20 páginas. En el lab la impresora (industrial) es capaz de procesar 10 páginas por minuto. Esta se podría cambiar buscando mejor calidad pero limitaría la impresión a 5 páginas por minuto. Esto atrasa a los estudiantes.

Printing Problem

• La fila se hace por orden de llegada (first-in-first-out).

• Cuando se termine una tarea (“task”) se ira a la siguiente.

¿Cuánto seria el límite de páginas que se debería imponer para poder agilizar el proceso?

Printing Problem

Si hay 10 estudiantes en el lab y cada uno imprime 2 veces serán 20 “print task” por hora como normal.

Podrían imprimir un solo documento que tenga de 1 a 20 páginas de largo.Si el contenido de cada papel es igual, la ejercitación del “print task” se hará de manera mas rápida.

¿Cuál es la probabilidad de que en un momento dado una tarea de impresión se va a crear?

Una tarea cada 180 segundos.

Main Simulation Steps

1. Crear un queue de print tasks. Cada task se le dará una marca de tiempo a su llegada. El queue al principio está vacío.

2. Para cada segundo (currentSecond):• ¿Se crea un nuevo print task? Si es así, agregarlo al queue con el

currentSecond para marcar el tiempo.

• Si el printer está vacío y un task espera,

• Mueve el siguiente task a el print queue y asígnalo al printer.• Substrae el timetamp del currentSecond para completar el

tiempo de espera del task.• Añada el tiempo de espera para esa tarea a una lista para

luego procésalo.• Basado en el número de páginas del print task, calcular

cuánto tiempo se requerirá.

• El printer hace un segundo de impresión si es necesario. También resta un segundo del tiempo requerido para esa la tarea.

• Si la tarea se ha completado, en otras palabras, el tiempo requerido ha llegado a cero, la impresora ya no está ocupado.

3. Después que la simulación este completa, calcular el promedio de tiempo de espera de la lista de tiempos de espera.

La clase Printer necesita saber si un task o tarea esta siendo imprimida. Si hay una tarea en la impresora pues esta esta “busy” (ocupada) y la cantidad de tiempo necesario puede ser computarizado por el numero de paginas en la tarea. El método tick disminuye el tiempo interno y establece el printer en estado de reposo si se terminas los tasks.

El método busy te dirá si con un True or False (cierto o falso) si el printer está desocupado o no, si esta ocupado es cierto cuando no es falso.

El método startNext hace que el printer siga a la próxima tarea y siga el siclo otra vez.

Aquí se le estará indicando a la simulación cuantas paginas tendrá la tarea.

Printing Class

Cada tarea necesita guardar un timestamp para poder computar el tiempo de espera. El timestamp representara el tiempo en que la tarea fue creada.El método waitTime puede ser usado para recuperar la cantidad de tiempo usado en la cola antes de que la impresión comience.

def simulation

El objeto printQueue es una instancia de nuestro ADT cola existente. Una función auxiliar booleano, newPrintTask, decide si una nueva tarea de impresión se ha creado.

Se utiliza otra vez la función randrange desde el módulo al azar para devolver un número entero aleatorio entre 1 y 180. Tareas de impresión llega una vez cada 180 segundos.

Al elegir al azar 180 de la gama de enteros aleatorios (línea 32), podemos simular este evento aleatorio. La función de simulación nos permite establecer el tiempo total y las páginas por minuto para la impresora.

Task Class

top related