Ahora vamos a considerar el caso de imprimir en una
impresora que no coloca los caracteres en un
búfer, sino que imprime cada uno a medida que va llegando.
Si la impresora puede imprimir (por
ejemplo,) 100 caracteres/seg, cada carácter requiere 10 mseg
para imprimirse.
Esto significa que después de escribir cada carácter en el registro de datos de
la impresora, la CPU estará en un ciclo de inactividad durante 10 mseg, esperando a que se le
permita imprimir el siguiente carácter.
Este tiempo es más que suficiente para realizar un cambio de
contexto y ejecutar algún otro proceso durante los 10 mseg que, de otra manera, se desperdiciarían.
La forma de permitir que la CPU haga algo más mientras
espera a que la impresora esté lista es
utilizar interrupciones.
Cuando se realiza la llamada al
sistema para imprimir la cadena, el búfer se copia en espacio de kernel (como vimos antes) y el primer
carácter se copia a la impresora, tan pronto como esté dispuesta para aceptar un carácter. En ese
momento, la CPU llama al planificador y se ejecuta algún otro proceso. El proceso que pidió imprimir la
cadena se bloquea hasta que se haya impreso toda la cadena.

No hay comentarios.:
Publicar un comentario