Sistemas Operativos

El chino IV: La multitarea

Hasta antes de la salida al mercado de los procesadores multicore, todos los ordenadores para el hogar iban con un único procesador y con un único core. ¿Nunca os habéis preguntado como puede ser que con solamente un procesador ejecutemos varios programas al mismo tiempo?, esto es lo que se conoce como multitarea y es el chino de hoy.

Como de costumbre voy a utilizar una metáfora. Imaginemos que tenemos que imprimir una serie de archivos para que una serie de personas, una por archivo, pueda leer lo antes posible esos archivos y sólo disponemos de una impresora. Si no necesitaramos que las personas leyeran los archivos lo antes posible lo más óptimo sería abrir un archivo, imprimirlo y seguir con el siguiente hasta imprimirlos todos. El problema es que necesitamos una cierta interactividad y si lo hacemos de esta manera el primer usuario podrá estar leyendo su archivo desde que se imprime la primera hoja pero el resto tendrá que estar esperando hasta que se termine de imprimir ese archivo y los siguientes hasta que llegue el suyo.

Para solventar este problema y conseguir la interactividad que queremos hacemos lo siguiente. Abrimos el primer archivos, imprimimos la primera hoja y se la damos a la primera persona para que empiece a leer, ahora cerramos ese archivo y abrimos el siguiente y hacemos lo propio dándole la primera hoja a la siguiente persona para que empiece también a leer. Cuando ya tenemos impresas todas las primeras hojas empezamos con la segunda hoja.

El orden de imprimir las hojas no siempre será secuencial como acabo de explicar sinó que se puede optimizar según una serie de parámetros, por ejemplo, si una persona lee muy rápido y ya ha terminado de leer la segunda hoja mientras que otra va todavía por la primera pues se puede abrir su archivo para imprimir la tercera hoja antes que la segunda de la otra persona. Esto es lo que se conoce como dar prioridad.

El resultado es que hemos conseguido que todos empiecen y terminen de leer su archivo todos al mismo tiempo sin estar parados en ningún momento o lo que es lo mismo hemos implementado una multitarea.

Una curiosidad, en términos absolutos de tiempo se tarda menos en imprimir todos los archivos uno detrás de otro sin multitarea porque no tienes que estar perdiendo tiempo abriendo y cerrando archivos para cambiar de un archivo a otro para poder imprimir su hoja. Esto se lo que se conoce como cambio de contexto pero nos resulta más eficiente la multitarea porque no tenemos que estar esperando a que se termine de imprimir un archivo para seguir haciendo cosas.

Pues eso es lo que hace el núcleo de un sistema operativo, va metiendo y sacando procesos (más o menos un proceso vendría a ser un programa en ejecución aunque con matices) del procesador físico tan rápido, del orden de milésimas de segundo y mucho menos de tiempo de ejecución para cada uno, que da la impresión que se están ejecutando al mismo tiempo pero la realidad es que en un instante de tiempo sólo se está ejecutando uno. Lo que vendría a ser imprime una página en la metáfora, aquí vendría a ser ejecutate durante 1 milésima de segundo, luego sacaría ese proceso del procesador y metería otro (lo que vendría a ser cerrar el archivo y abrir el siguiente para imprimir su nueva página).

Las prioridades se establecen con una serie de colas, como las de la carnicería, pero estas se reordenan según las prioridades que se le quiera dar a los procesos igual que explicaba antes con la impresora.

Nuevamente espero que ahora entendáis mejor como consiguen los sistemas operativos hacer multitarea.

Cheli