Buscar en este blog

jueves, 22 de marzo de 2012

Procesos en Linux

Podríamos definir a los procesos como programas que están corriendo en nuestro Sistema Operativo. Dependiendo de la forma en que corren estos programas en LINUX se los puede clasificar en tres grandes categorías:
  • Procesos Normales.
  • Procesos Daemon.
  • Procesos Zombie.
Los procesos en GNU/Linux son organizados de forma jerárquica, cada proceso es lanzado por un proceso padre y es denominado proceso hijo. De está forma, todos los procesos en GNU/Linux son hijos de init ya que este es el primer proceso que se ejecuta al iniciar el ordenador y init es padre de todos los procesos. Si se mata al proceso padre, también desaparecerán los procesos hijos.
Procesos Normales
Los procesos de tipo normal generalmente son lanzados en una terminal (tty) Y corren a nombre de un usuario. Osea, son los programas que utiliza el usuario generalmente y se encuentran conectados a una terminal. El programa aparecerá el pantalla y interactuara con el usuario.

Proceso Daemon
Los procesos de tipo Daemon corren a nombre de un usuario y no tienen salida directa por una terminal, es decir corren en 2º plano. Generalmente los conocemos como servicios. La gran mayoría de ellos en vez de usar la terminal para escuchar un requerimiento lo hacen a través de un puerto.
Proceso Zombie
En sistemas operativos Unix un proceso zombie es un proceso que ha completado su ejecución pero aún tiene una entrada en la tabla de procesos. Esto se debe a que dicho proceso (proceso hijo) no recibió una señal por parte del proceso de nivel superior (proceso padre) que lo creó informándole que su vida útil ha terminado. Se pueden deber a errores de programación, a situaciones no contempladas por el programador y generalmente provocan lentitud y/o inestabilidad en el Sistema.
 Los principales estados en los que pueden encontrarse los procesos en Linux/Unix son los siguientes:

running (R) : Procesos que están en ejecución.
sleeping (S) : Procesos que están esperando su turno para ejecutarse.
stopped (D) : Procesos que esperan a que se finalice alguna operación de Entrada/Salida.
zombie (Z) : Procesos que han terminado pero que siguen apareciendo en la tabla de procesos.

Todos los procesos que corren en nuestro Sistema Operativo dependen del primer proceso que se lanza después del arranque: el proceso init, el padre de todos los procesos. Muchas veces los procesos no son únicos sino que dan lugar a muchos procesos secundarios.
Teóricamente el padre de cada uno de ellos debería en todo momento vigilar que es lo que hacen estos hijos. Si por alguna razón este padre falla en el control se pueden llegar a producir procesos de tipo zombie que pueden llenar el árbol de procesos, ocasionando que tengamos que reiniciar el equipo.

¿Podemos ver el árbol de procesos? En nuestro Sistema Operativo está representado en el directorio /proc, que es una estructura de arbol virtual que genera y monta nuestro kernel durante el arranque. En virtud de esto, cada vez que querramos ver un proceso debemos mirar por esta ventana que nos muestra realmente qué es lo que está ocurriendo con nuestro kernel.

Para ver el estado de los procesos en el sistema operativo tenemos varios comandos.


Tecleando el comando  top  desde una terminal se nos mostrarán todos estos procesos; este comando monitoriza dinámicamente los procesos del sistema mostrando su estado, uso de CPU, cantidad de memoria, tiempo desde su inicio, nombre, etc.



El comando ps es el encargado de mostrar todos los procesos que están ocurriendo en el sistema. Este comando no es interactivo, saca una foto de los procesos que están corriendo en ese mismo momento.
_________
Fuente: http://es.wikibooks.org/wiki/Descripci%C3%B3n_del_proceso_init
Fuente: http://www.creangel.com/drupal/?q=node/116