La administración de procesos en Linux es una de las tareas fundamentales del kernel. En este post compartiremos más detalles sobre el tema presentando los conceptos básicos. Además, hablaremos sobre cómo un proceso dado hace uso del (o los) procesador(es) de los que disponga nuestro equipo.
Administración de procesos en Linux
Para empezar, consideremos el caso de un sistema que posea un solo procesador. En la práctica, solamente un proceso puede utilizar el procesador en un momento dado. Luego de haberlo hecho, será el turno de otro proceso, y así sucesivamente. Por lo general, el tiempo que se le otorga a cada proceso es suficiente para que se lleve a cabo la tarea que deba realizar. Esta franja de tiempo es asignada por el kernel antes de darle acceso al proceso para que utilice el procesador. Debido a su corta duración, nosotros como usuarios percibimos como si en realidad varios procesos estuvieran utilizando el procesador de manera simultánea. El administrar procesos de esta manera es lo que hace de Linux un sistema operativo multitarea.
Aunque tengamos varios programas abiertos, solamente uno de ellos recibe acceso al procesador en un momento dado.
¿Qué sucede si no alcanza el tiempo asignado a un proceso?
En el caso de que la franja de tiempo asignada a un proceso no alcance para finalizar la tarea actual, el mismo es interrumpido por el procesador. En ese momento, el kernel toma control y registra el estado del procesador y de la memoria para luego retomarlo. Mientras tanto, el kernel elige otro de los procesos que están listos para ejecutarse y le da acceso al procesador. Esto se realiza de acuerdo a la prioridad que se le haya asignado a cada proceso.
En el caso de disponer de más de un procesador o núcleos, el kernel intentará aprovecharlos al máximo. En el caso descrito en el párrafo anterior, es posible que el proceso interrumpido continúe su ejecución en otro procesador o núcleo.