En un sistema de monoprogramación todos los recursos del ordenador. CPU, memoria, E/S, etc. Se abocan a la ejecución de un solo programa a la vez. Esto conlleva a una baja utilización de los recursos, por ejemplo; Cuando el programa en ejecución realiza una operación de E/S se introduce la orden precisa en el registro de órdenes. El controlador responde a esto traduciendo esas órdenes al dispositivo, y poniendo a uno el bit de ocupación para indicar que el dispositivo está ocupado realizando una operación de E/S. Cuando termine la operación, el controlador pone a cero este bit para indicar que la operación concluyó, y el dispositivo está desocupado. Para saber cuándo termina la E/S, el programa, después de mandar la orden, tiene que ejecutar un ciclo del siguiente estilo:
- Leer el registro de estado
- Mientras (el bit de ocupación esté a uno)
- Leer el registro de estado
- Fin Mientras
Esto nos conlleva a que en un momento dado la CPU este realizando una acción sin ocupar la E/S y esta ultima quede ociosa o bien la E/S este siendo ocupada y la CPU revisando la finalización de algún ciclo; cómo podemos ver en la imagen (grafico), donde los rectángulos rellenos a trazas representan el ciclo de comprobación. Para dar una medida de la infrautilización de los recursos que conlleva esta forma de realizar las E/S, piénsese que en el tiempo en que una impresora imprime una línea, la CPU, en lugar de ejecutar el ciclo de comprobación que aparece líneas más arriba, podría ejecutar millones de instrucciones de otro programa. A esta forma de realizar la E/S de los sistemas de monoprogramación se le llama E/S controlada por programa.
Los sistemas monoprogramables se pueden dar de tres formas:
· Sistemas monoprogramables lineales: se caracterizan por tener una cola de atención sin prioridades y un proceso no finaliza hasta terminar de ejecutarse.
· Sistemas monoprogramables con prioridades: Tienen una cola de atención por prioridades y al igual que el anterior un proceso no termina hasta finalizar su ejecución.
· Sistemas monoprogramables con prioridades y tiempo de salida: Tienen una cola de atención por prioridades y un proceso puede terminar al completar su ejecución o al terminar el intervalo de tiempo de atención prefijado, en este caso se devolverá a la cola de atención.