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