2.5.1 Multitarea, multiprogramación y multiproceso
Un sistema multitarea es aquel que permite la ejecución de varios procesos sobre un procesador mediante la multiplexación de éste entre los procesos.
La multitarea se implementa generalmente manteniendo el código y los datos de varios procesos simultáneamente en memoria y multiplexando el procesador y los dispositivos E/S entre ellos.
La multitarea suele asociarse con soporte software y hardware para la protección de memoria con el fin de evitar que los procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes en memoria, un sistema multitarea, sin embargo, no tiene necesariamente que soportar formas elaboradas de gestión de memoria y archivos. En este sentido multitatarea es sencillamente sinónimo de concurrencia.
El término multiprogramación designa a un SO que además de soportar multitarea proporciona formas sofisticadas de protección de memoria y fuerza el control de la concurrencia cuando los procesos acceden a dispositivos E/S y a archivos compartidos; en general, la multiprogramación implica multitarea pero no viceversa.
Los SO operativos de multiprogramación soportan generalmente varios usuarios en cuyo caso también se les denomina sistemas multiusuario o multiacceso. Los SO para multiproceso gestionan la operación de sistemas informáticos que incorporan varios procesadores conocidos habitualmente como sistemas multiprocesadores. Los SO para multiprocesadores son multitarea por definición, ya que soportan la ejecución simultánea de varias tareas o procesos sobre diferentes procesadores y serán multiprogramados si disponen de los mecanismos de control de concurrencia y protección de memoria adecuados. En general, todos los SO de multiprogramación se caracterizan por mantener un conjunto de procesos activos simultáneamente que compiten por los recursos del sistema, incluidos el procesador, la memoria y los dispositivos E/S.
Un SO de multiprogramación vigila el estado de todos los procesos activos y de todos los recursos del sistema, cuando se producen cambios importantes de estado o cuando es invocado explícitamente el SO se activa para asignar recursos y proporcionar ciertos servicios de su repertorio.