Los procesos e hilos en los Sistemas Operativos (SO) siempre han sido unos de mis temas favoritos en Informática. Permiten entender, de una manera mucho más profunda, cómo el SO gestiona los programas durante sus diferentes etapas de ejecución, abordar cuestiones relativas a la memoria y garantizar la seguridad aislada hasta el kernel. Es muy interesante.
La idea básica
Un proceso es simplemente un programa en ejecución. Un programa tiene estrictamente un proceso asociado a él. En casos muy raros esto puede no ser siempre cierto (Google Chrome como ejemplo), pero esto es cierto la mayoría de las veces.
Cada proceso tiene diferentes componentes que le permiten realizar sus tareas previstas. En particular, la pila y el montón se utilizan para la asignación de variables locales y de memoria dinámica, respectivamente.
Hay más componentes, pero basta con decir que cada proceso necesita estos componentes para ejecutarse como un programa.
Seguimiento de los procesos en el sistema
En un momento dado puede haber un par de cientos o menos de procesos en ejecución. A veces es útil ver información detallada sobre ellos, sobre todo si el ordenador funciona con lentitud: ya que ciertos procesos pueden estar acaparando la memoria del ordenador o la CPU. Ser capaz de localizarlos y posteriormente destruirlos es muy útil y se puede lograr con bastante facilidad.
Si está ejecutando Windows, puede abrir el Administrador de tareas y hacer clic en la pestaña Procesos para ver esta información. Si ejecuta Linux o una máquina basada en Unix, puede ejecutar una serie de comandos diferentes:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
¿Cómo gestiona el sistema operativo los procesos
Un proceso puede estar en un estado determinado en cualquier momento. Puede que se acabe de crear, que esté esperando a ejecutarse, que esté esperando el acceso a algún dispositivo de E/S, que haya sido interrumpido por algún otro proceso, etc. Para asegurar la máxima productividad, el sistema operativo necesita entender el estado de todos estos procesos y ser capaz de crear nuevos de forma inteligente, cambiar entre ellos, pausarlos, suspenderlos, etc. en los momentos adecuados.
Para hacer esto con eficacia, el sistema operativo mantiene lo que se conoce como un bloque de control de procesos para cada proceso. Contiene información útil como el estado actual del proceso, la siguiente instrucción a realizar y los dispositivos actualmente asignados al proceso.
Esto permite al sistema operativo gestionar diferentes procesos de forma efectiva, guardando el estado actual en el PCB, cambiando entre ellos y recargando ciertos procesos más adelante.
¿Cómo cambia el sistema operativo entre diferentes procesos
El cambio de contexto se refiere a la actividad específica en la que un sistema operativo guarda el estado de un proceso en ejecución y lo pausa para ejecutar otro. Debe hacerlo de forma que garantice que estos procesos no entren en conflicto y que el proceso guardado pueda reanudarse posteriormente sin problemas. Esto garantiza una característica clave en los sistemas operativos: la multitarea. El diagrama muestra cómo se utiliza el PCB para guardar el estado del proceso, ejecutar otro, y volver a cargar y continuar el inicial más tarde.