Next: Spooler de impresora
Up: No Title
Previous: Editor interactivo v2
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:
- 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.
- 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.
- 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:

- Cada búfer requiere acceso exclusivo. No pueden hacerse dos
operaciones a la vez sobre el mismo búfer.
- 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.
Angel Herranz Nieva
Thu Oct 31 20:12:45 MET 1996