Next: Spooler de impresora Up: No Title Previous: Editor interactivo v2

# Spooler de impresora

Se trata de organizar un spooler de impresora con doble sistema de búfer. Existirá un búfer primario rápido en memoria, con capacidad limitada, y un búfer secundario en disco, de capacidad prácticamente ilimitada pero mucho más lento. Cuando un proceso usuario solicite una operación de escritura los datos a escribir se copiarán a un búfer, y posteriormente un proceso servidor de impresión irá tomando e imprimiendo los datos de los búfers.

Se pide programar esquemáticamente (toda la concurrencia, dejando sin refinar la abstracción de datos buffer, la acción de imprimir, etc) una realización de este esquema, basada en monitores, y que cumpla los siguientes criterios:

1. Cuando se pida una operación de escritura los datos a escribir se copiarán al búfer primario, si hay sitio, y si no al secundario.

2. Cuando un dato se copia a un búfer, permanece en él hasta el momento de imprimirlo, es decir, no hay trasiego de datos de un búfer a otro.

3. Los datos han de imprimirse en el orden en que llegaron las peticiones. Al iniciar una acción de impresión hay que determinar de qué búfer hay que tomar el siguiente dato. Obsérvese la situación en el siguiente ejemplo, que muestra cómo los datos pueden estar repartidos entre uno y otro búfer de manera irregular:

4. Cada búfer requiere acceso exclusivo. No pueden hacerse dos operaciones a la vez sobre el mismo búfer.

5. Durante el acceso al búfer lento en disco no debe estar bloqueada la aceptación de peticiones ni el acceso al búfer primario.

- Spooler de impresora (SOLUCIÓN)