1. DIRECCION GENERAL DE EDUCACIÒN SUPERIOR TECNOLÒGICA
Instituto Tecnológico del Valle de Oaxaca
“TIPOS DE PROCESOS”
INVESTIGACIÒN QUE PRESENTA
Jorge Ivan López Morales
L.I: Juan de Dios Marcos Gómez
Ing. Tecnologías de la Información y las Comunicaciones
No Lista: 18 Grupo: 6A
Ex-Hacienda de Nazareno, Xoxocotlán, Oaxaca.
Marzo de 2014.
2. En este documento se describe que es un proceso y los distintos tipos que se presentan en cierto tiempo dentro de los sistemas operativos, en qué consisten así como citar algunos ejemplos de los procesos.
This paper describes a process and the different types that occur within a certain time operating systems, what they are and some examples of processes.
TIPOS DE PROCESOS
Proceso
Un proceso es una instancia de un programa que está en ejecución. De partida todo proceso dispone de una única línea de ejecución. Se puede entender como la vista dinámica (en ejecución) de un programa.
Procesos en sistemas operativos
Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede disponer uno o más de un proceso hijo.
Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario que ha lanzado dicho proceso.
El proceso init es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre.
La información necesaria para administrar un proceso se guarda en una estructura controlada por el S.O. llamada Bloque de Control de Procesos o PCB (Process Control Block)
Para identificar los procesos el sistema operativo Unix asigna un número de identificación del proceso, o PID (Process IDentification).
Ejemplo de proceso y como identificarlo:
<Source lang="bash"> $ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 11:48? 00:00:00 /sbin/init ... practica 1712 1 18 12:08 ? 00:00:00 gnome-terminal practica 1713 1712 0 12:08 ? 00:00:00 gnome-pty-helper practica 1714 1712 20 12:08 pts/0 00:00:00 bash practica 1731 1714 0 12:08 pts/0 00:00:00 ps -ef </source>
La primera columna indica el UID del proceso, la segunda el PID, la tercera el PID del proceso padre. Por último, aparece el nombre del proceso en cuestión.
3. Procesos padre e hijo
Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema operativo nos ofrece una llamada al sistema que se denomina fork.
La sintaxis de la llamada efectuada desde el proceso padre es:
valor=fork()
Un proceso hijo es un proceso clon del padre. Sin embargo, procesos padre e hijo no comparten memoria, son completamente independientes.
Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre debe recoger el resultado de la ejecución de los procesos hijos para que estos finalicen adecuadamente. Para ello, el sistema operativo ofrece la llamada wait que nos permite obtener el resultado de la ejecución de uno o varios procesos hijo.
Si un proceso padre no recupera el resultado de la ejecución de su hijo, se dice que el proceso queda en estado zombi. Un proceso hijo zombi es un proceso que ha terminado su ejecución y que está pendiente de que su padre recoja el resultado de su ejecución.
Jerarquía entre procesos.
Como ya se indicó con anterioridad un proceso puede crear otros procesos. De igual forma los nuevos pueden crear otros y así sucesivamente.
Para representar gráficamente este proceso de creación sucesiva de procesos se utiliza el llamado grafo de procesos que no es más que un árbol dirigido con raíz . Un arco del nodo Pi al nodo Pj. En este caso se dice que Pi es el padre de Pj o que Pj es hijo de Pi. Cada proceso tiene un solo padre, pero tantos hijos como sean necesarios.
4. Tipos de procesos en Linux: Child, daemon, orphan y zombie
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. En dicho caso el Shell se convierte en proceso padre y el proceso ejecutado se convierte en hijo. En sistemas tipo Unix/Linux cada proceso tiene un padre excepto el proceso init.
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ó). Desde el momento en que su proceso padre es terminado el proceso de hace independiente (ya no es más un proceso child) y es tomado por el proceso init el cual lo convierte en un daemon.
5. 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. Aun 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 terminada toda la memoria y recursos asociados con dicho proceso son liberados pero la entrada del mismo en la tabla de procesos aún existe. Una seña SIGCHILD es enviada al proceso padre (ha sido terminado). Comúnmente el manejador de esta señal en el proceso padre ejecuta una llamada de espera que obtiene el estado de salida del proceso terminado y entonces la entrada del proceso zombie es borrada de la tabla de procesos.
6. REFERENCIA BIBLIOGRÁFICA
Tanenbaum, S. A. (1998). Sistemas Operativos, Diseño e Implementación. 2ª. Ed Edo. De México: Prentice Hall Hispanoamericana, S. A.
Abraham Silberschatz , Peter B. Galvin , Greg Gagne. (2005). Operating System Concepts. 7 Ed. Editor: John Wiley & Sons. pag 103 - 110, pag 307-325.
Concepción, C (2012). Tipos de procesos en Linux: Child, daemon, orphan y zombie. Recuperado el 26 de Febrero del 2014, de
http://fraterneo.blogspot.mx/2012/02/tipos-de-procesos-en-linux-child-daemon.html
Menendez, Maikel J. (2012). Los procesos en los sistemas operativos. Recuperado el 04 de Marzo del 2014, de http://www.monografias.com/trabajos82/procesos- sistemas-operativos/procesos-sistemas-operativos.shtml