You are on page 1of 20

Administración de Redes

PROCESOS EN LINUX

Profesor Carlos Figueira

Departamento de Computación y T. I.
USB

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Grandes objetivos de un
Sistema de Operación (SO)

Intercalar ejecución de varios procesos
para maximizar la utilización del CPU y
proveer tiempo de respuesta razonable

Asignar recursos a procesos

Soportar comunicación entre procesos
(IPC) y creación de procesos por parte
de los usuarios

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Procesos

Las tareas y programas se ejecutan en
un contexto llamado proceso

Contexto: memoria, tablas en el kernel
(archivos abiertos, sockets, PCB)

Los procesos tienen un identificador
PID

Procesos se alternan en el uso del CPU
(¡más de 80 aquí!)
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Ejemplo de ejecución de procesos
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Creación de procesos

Para ejecutar comandos y aplicaciones

Para proporcionar servicios, por
ejemplo, impresión, WWW, etc.

Creados por otros procesos por
clonación: copia casi exacta (excepto
PID)

Un proceso especial (init), con
PID=1, es la raíz del árbol de procesos
(¡Adán!)
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Atributos de procesos

Identificador propio (PID) y de su
padre (PPID)

Dueño (User ID o UID) y UID efectivo
(EUID): usado para control de acceso
de recursos. EUID ≠ UID si aplicación
tiene bit suid en 1

GID y EGID

Terminal de control (puede ser nulo)
Administración de Redes: Procesos en Linux Carlos Figueira/USB
fork-exec
PidHijo = fork(); /* se clona */
/* de aquí en adelante hay dos procesos */
if ( PidHijo != 0) {
printf(“Soy el papa %d, mi hijo es %d”,
getpid(), PidHijo);
wait(&status); /* espera que termine hijo */
}
else {
printf (“Soy el hijo %d, mi papa es %d”,
getpid(), getppid());
exit(0); /* termina con codigo 0 */
}

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Ciclo de vida de procesos

Creación

Se alternan en el uso del CPU, E/S y
otros recursos

Termina (voluntariamente, error, etc.)
retornando los recursos asignados
(memoria, archivos, tablas en kernel)

Algunos procesos no mueren
(demonios o daemons): httpd, sshd, ...
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Modelo de estado de procesos

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Modelo de colas de procesos

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Diagrama temporal de ocupación de CPU

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Modos de ejecución CPU

El CPU tiene dos modos de ejecución:
normal (usuario) y supervisor (kernel)

Cuando un proceso en modo usuario
hace llamada al sistema (Ej.: read)
– Ocurre un trap y pasa a modo supervisor
– El kernel ejecuta la primera parte del
read, pone el proceso en la cola de espera
– Selecciona nuevo proceso, pasa control y
regresa a modo normal
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Cambio de contexto

Cuando proceso sale del CPU, su
estado se guarda para el siguiente
turno de ejecución

El estado incluye valor de los registros
CPU, que son restituidos cuando el
proceso vuelve al CPU

Estado se guarda en la tabla de
Process Control Block en el kernel (uno
por proceso, indexado por PID)
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Señales (signals)

Solicitud de interrupción de procesos
(¡diferente a interrupción CPU!)

Enviadas a un proceso
– Para comunicarle algo desde otro proceso
(IPC primitivo)
– Para controlarlo desde el terminal
(suspenderlo, terminarlo, etc.)
– (Desde el kernel) Cuando comete una
infracción (ej.: acceso ilegal a memoria)
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Señales (cont.)

Pueden ser capturadas por procesos
(se ejecuta un manejador de la señal) o
ignorada (se ejecuta acción por
defecto)

Representada como entero (1-31)

HUP (1), QUIT (3), KILL (9), BUS,
SEGV (11), STOP, CONT, etc. KILL y
STOP no pueden ser capturadas
● man 7 signal 
Administración de Redes: Procesos en Linux Carlos Figueira/USB
Control de procesos

ps: reporta estatus de procesos

top: muestra procesos que más
consumen recursos

kill ­[signal] PID : envía señal a
proceso

Otros (shell): Ctrl-C, Ctrl-Z, bg, fg,
jobs, ...

Administración de Redes: Procesos en Linux Carlos Figueira/USB


Prioridad

Linux asigna el CPU tomando en
cuenta una prioridad

A menor valor de prioridad de un
proceso, mayor prioridad se tiene de
obtener el CPU

Asignada dinámicamente

Por momentos puede ser negativa (ej:
cuando ejecuta E/S)
Estado de procesos

Runnable (R)

Sleeping
– S: < 20 sec
– D: in disk wait

Zombie (Z)

Stopped (T)

Administración de Redes: Procesos en Linux Carlos Figueira/USB


ps -elf

S UID   PID  PPID PRI    SZ WCHAN  TTY      TIME CMD
S   0     1     0  76   453 ­      ?     00:00:04 init
S   0     2     1  75     0 ­      ?     00:00:00 keventd
S   0     3     1  75     0 ­      ?     00:00:00 kapmd
S   0  2516  2513  77  1264 ­      pts/1 00:00:00 bash
S 500  2988  2301  75 43362 schedu ?     00:03:16 soffice.bin
S 500  3019  2301  76  4879 schedu ?     00:00:01 gaim
R 500  3059  2409  77  1010 ­      pts/4 00:00:00 ps

Administración de Redes: Procesos en Linux Carlos Figueira/USB


top

PID USER     PRI NI SIZE  RSS SHARE ST %CPU %MEM  TIME CPU COMMAND
2253 root     15 0 31524  13M  6768 S  3.7  7.1  96:31   0 X
2560 figueira 15 0 41200  33M 24696 S  1.3 18.2   3:55   0 soffice.bin
2377 figueira 15 0  4536 3988  3532 S  0.9  2.0   3:10   0 artsd
3365 figueira 17 0  1108 1108   900 R  0.7  0.5   0:01   0 top
2401 figueira 15 0  7568 6272  5976 S  0.5  3.2   0:03   0 kdeinit

Administración de Redes: Procesos en Linux Carlos Figueira/USB

You might also like