Gestion de Procesos
Imagen: Usando el comando "Kill" para matar el proceso mahjongg con PID 4786
* Un programa ejecutable es leído del disco por el kernel y es cargado en memoria para ejecutarse,convirtiéndose en un proceso.
* En un proceso no sólo hay una copia del programa, sino además el kernel le añade información adicional para poder manejarlo.
* Un proceso se compone de tres bloques fundamentales:
- segmento de texto
- segmento de datos
- pila
* Los procesos pueden ejecutarse en dos modos: usuario y kernel
* Los procesos pueden ejecutarse en dos modos: usuario y kernel
* Comandos de la Gestión de procesos:
ps – muestra los procesos activos del usuario
top – muestra todos los procesos activos
kill pid – mata el proceso con id pid
killall proc – mata todos los procesos proc [**]
bg – lista los procesos parados o en segundo plano
fg – lleva proceso más reciente a primer plano
fg n – lleva proceso n a primer plano
Unix proporciona un número de llamadas al sistema para creación y control deprocesos, que incluye:
fork: usado para crear un nuevo proceso (hijo).
exec: utilizado para cambiar el proceso actual por otro.
vfork: usado para crear un proceso nuevo, que comparte el espacio de direcciones del padre.
clone():llamada al sistema en Linux y es una forma genérica de fork() y pthread_create().
wait: esperar por el término de la ejecución de algún proceso hijo.
waitpid: usado para esperar el término de ejecución de un proceso hijo específico.
sleep: suspende la ejecución de un proceso por un tiempo determinado.
kill: usado para matar un proceso o enviar una señal.
abort: usado para terminar con la ejecución de un proceso en forma anormal.
getpid: devuelve el pid del proceso.
getppid: devuelve el pid del proceso padre.
getuid: devuelve el identificador de usuario.
getpgrp: devuelve el identificador de grupo del proceso.
UNIX/
fork: usado para crear un nuevo proceso (hijo).
exec: utilizado para cambiar el proceso actual por otro.
vfork: usado para crear un proceso nuevo, que comparte el espacio de direcciones del padre.
clone():llamada al sistema en Linux y es una forma genérica de fork() y pthread_create().
wait: esperar por el término de la ejecución de algún proceso hijo.
waitpid: usado para esperar el término de ejecución de un proceso hijo específico.
sleep: suspende la ejecución de un proceso por un tiempo determinado.
kill: usado para matar un proceso o enviar una señal.
abort: usado para terminar con la ejecución de un proceso en forma anormal.
getpid: devuelve el pid del proceso.
getppid: devuelve el pid del proceso padre.
getuid: devuelve el identificador de usuario.
getpgrp: devuelve el identificador de grupo del proceso.
UNIX/
- Linux es un sistema multiproceso que permite laejecución de varios procesos de forma simultánea
- Requiere de otro programa llamado ³Planificador oscheduler´ que permite gestionar que proceso entra a ejecutarse en cada instante en la CPU, ya que esta es unrecurso limitado.
- Todo proceso nace cuando algún otro proceso ejecuta lallamada al sistema clone. Una de las muchas formas dellamar a clone es a través de la función fork.
- clone crea un duplicado idéntico del proceso que la hallamado.
Tipos de Procesos
Child (hijos)
Son procesos creados por otro proceso durante su ejecución. Usualmente los procesos child son creados para ejecutar un binario desde un proceso existente, con la llamada del sistema fork(). Los procesos normalmente son creados para ejecutarse a través de un shell o terminal.
Daemon (demonios)
Son tipos especiales de procesos que se ejecutan en segundo plano y están relacionados con el sistema operativo y no tienen shell asociado. Estos corren con permisos de root y usualmente proveen servicios. El no tener shell asociado se logra separando el proceso del shell, creando un proceso nuevo y terminando el proceso padre (el shell que lo inició).
Orphan (huérfanos)
Usualmente un proceso crea un proceso hijo (child) y cuando el proceso hijo termina una señal es emitida al proceso padre para que pueda hacer todo lo requerido cuando el proceso hijo es terminado. Pero hay situaciones en las que los procesos padres son matados (killed). En dicho caso el proceso hijo queda huérfano y entonces es tomado por el proceso init. Aún así el proceso cuyo padre fue matado sigue siendo llamado huérfano ya que su padre original no existe.
Zombie
Cuando un proceso child o hijo es terminado o es completada su ejecución, luego su entrada en la tabla de procesos se mantiene hasta que el proceso padre obtenga la información del estado del proceso hijo terminado. Hasta entonces el proceso terminado entra en estado zombie y es conocido como proceso zombie. Cuando un proceso es terminado toda la memoria y recursos asociados con dicho proceso son liberados pero la entrada del mismo en la tabla de procesos aún existe.

No hay comentarios.:
Publicar un comentario