Next: El control de procesos
Up: Los procesos en UNIX
Previous: Evolución de un proceso
Mediante la descripción dada en el apartado Evolución de un proceso,
queda explicada la genealogía de procesos en UNIX. Tan solo falta un pequeño
detalle: > cómo ha nacido el intérprete de comandos ?. La explicación está
en la figura 1.4. Cuando la computadora arranca el sistema
operativo, se ejecuta el fichero ejecutable kernel cuya misión es cargar
el núcleo del sistema operativo en memoria. El núcleo es el primer proceso
del sistema, y es padre de si mismo, puesto que su PID=PPID=0. La misión del
núcleo es controlar los recursos de la computadora, por lo que delega el
nacimiento de nuevos procesos en uno de sus hijos: init. Para cada uno de
los terminales datos de alta en el ordenador y que es ese instante están
usándose (tienen un usuario golpeando sus teclas) init crea un proceso
hijo en el que se ejecuta el programa getty que solicita la conexión.
Cuando ésta se obtiene, el mismo proceso se transforma en el programa
login que solicita el nombre de usuario y la contraseña (si esta fue
establecida). Si ambas informaciones son correctas, este proceso se convierte
en el intérprete de comandos.
Figura:
Ejemplo sobre la creación de procesos.
|
Mediante el comando ps puede comprobarse la genealogía de los
procesos del sistema. Los parámetros cambian dependiendo de la versión de
UNIX. Por ejemplo en Linux, para obtener la genealogía de nuestros procesos
podemos escribir:
width 3pt
width .3pt415ptbash# ps -xfl
F UID PID PPID PRI NI SIZE RSS WCHAN STAT TTY TIME COMMAND
0 0 1 0 1 0 44 84 1161df S ? 0:01 init
0 0 6 1 1 0 32 52 1164d6 S ? 0:00 (update)
0 0 7 1 1 0 32 80 10ff90 S ? 0:00 update(bdflush)
0 0 21 1 1 0 60 172 10ff90 S ? 0:04 /usr/sbin/crond -l10
0 0 37 1 1 0 69 140 130b5d S ? 0:01 /usr/sbin/syslogd
0 0 39 1 1 0 44 96 1164d6 S ? 0:00 /usr/sbin/klogd
0 0 41 1 1 0 72 88 130b5d S ? 0:00 /usr/sbin/inetd
0 0 932 41 9 0 46 252 130b5d S ? 0:00 \_ in.rlogind
0 999 933 932 1 0 386 540 10ff90 S pp0 0:01 \_ -csh
0 0 965 933 5 0 381 516 11b8a8 S pp0 0:00 \_ bash
0 0 987 965 28 0 65 196 0 R pp0 0:00 \_ ps -xfl
0 0 43 1 1 0 64 0 130b5d SW ? 0:00 (lpd)
0 0 50 1 1 0 251 184 1164d6 S ? 0:01 sendmail: accepting connections
0 0 59 1 1 0 41 0 1a3dd7 SW v04 0:00 (agetty)
0 0 60 1 1 0 41 0 1a3dd7 SW v05 0:00 (agetty)
0 0 61 1 1 0 41 0 1a3dd7 SW v06 0:00 (agetty)
0 0 130 1 1 0 41 0 1a3dd7 SW v03 0:00 (agetty)
0 0 500 1 1 0 41 108 1a3dd7 S v02 0:00 /sbin/agetty 38400 tty2
0 999 691 1 1 0 1117 1880 130b5d S ? 1:14 xfig
0 0 708 1 1 0 41 220 1a3dd7 S v01 0:00 /sbin/agetty 38400 tty1
bash#
width .3pt
depth .3pt
width -3pt
Para conocer el significado de cada columna lo más recomendable es hacer
man ps y leer con tranquildad las especificaciones de ese sistema
operativo.
Next: El control de procesos
Up: Los procesos en UNIX
Previous: Evolución de un proceso
Vicente González Ruiz
1998-07-13