Lathack

Función de los Procesos en Linux

Función de los Procesos en Linux

Introducción

En este apartado veremos en detalle la función de los procesos en linux. También llamados “Demonios”, son aquellos que se ejecutan en segundo plano, siendo así, muy importantes en entornos tanto en Linux como en otros sistemas operativos.

Entendamos primero de donde viene su función:

Cuando ejecutamos un comando, las instrucciones se vuelcan en la memoria RAM del sistema para ser ejecutadas, una vez que finalizan su tarea, es liberado el espacio en memoria que estaba ocupando esa tarea. Cada uno de estos programas que pasan a la memoria del sistema y son ejecutados son lo que conocemos por el nombre de PROCESO.

Propietarios en Procesos

En Linux, tanto los archivos como los procesos, tienen un dueño. El mismo es el usuario que ejecuta el programa que da lugar al proceso. Esto viene a explicar parte de la seguridad de Linux en cuanto a permisos. Como los archivos tienen un usuario, un grupo y unos permisos determinados asignados a cada uno. Los procesos también poseen las mismas características, por lo tanto, estos contarán de cara al sistema de ficheros con los permisos que tenga el usuario que lo creó.

Ahora bien, la función de los procesos en linux ,con respecto al sistema de ficheros, es que pueden hacer tanto como el usuario al que pertenecen. Es decir, un programa ejecutado por un usuario no privilegiado nunca podrá leer en /root o modificar cosas en /usr/bin. Así como tampoco podrá modificar parámetros de procesos que no le pertenezcan. Sin embargo, el usuario root podrá ejercer cualquier acción sobre cualquier proceso.

Un proceso puede crear, a su vez, nuevos procesos (Procesos Padre-Hijo). En la práctica, todos los procesos son hijos del primer proceso ejecutado durante el arranque, el proceso “init”. Así, un proceso hijo, a pesar de ser nuevo, guarda una relación con el proceso que lo creó (proceso padre).

Propiedades de un Proceso

1) Estado:

Los estados más importantes son dormido (S), y en ejecución (R).

Sin embargo, cabe aclarar, habrá momentos en los que un proceso seguirá existiendo en el sistema, pero no estará haciendo nada realmente. Puede estar esperando a que una SEÑAL le sea enviada (sobre lo que trataremos más tarde) para volverse activo, o a nosotros como usuarios nos puede interesar detenerlo o pausarlo bajo determinadas circunstancias.

También existen los procesos con estado de “zombie”. En realidad, son procesos en modo ejecución, pero que por alguna razón el proceso padre no recogió el código de salida del proceso hijo. Por lo tanto, estos quedan “muertos” y por alguna u otra razón, todavía se encuentran en la tabla de ejecución. Por lo general, esto sucede después de una mala finalización del proceso.

2) Dueño y prioridad:

Generalmente es el usuario que lo ejecutó, y como ya se dijo, el proceso hereda los permisos del usuario de cara al sistema de archivos. Si un ejecutable es SUID, al ejecutarse, el proceso resultante adquiere los permisos del usuario dueño del archivo. Por lo general, un usuario normal no puede ejercer control sobre procesos que no le pertenecen. Unos procesos serán más importantes que otros, y van a tener mayor prioridad que otros al momento de solicitar alguna acción. El Kernel es el encargado de asignar lugar en memoria y capacidad en el procesador.

3) Tiempo de ejecución:

Es el tiempo que este proceso estuvo en la memoria del sistema ejecutándose.

Comando ps

El comando ps (process state) es el que permite informar sobre el estado de los procesos. Este comando está basado en el sistema de archivos /proc , es decir, lee directamente la información de los archivos que se encuentran en este directorio. Tiene una gran cantidad de opciones, incluso estas opciones varían dependiendo del estilo en que se use el comando. Estas variaciones sobre el uso de ps son las siguientes:

  •  UNIX, donde las opciones van precedidas por un guion –.

  •  BSD, donde las opciones NO llevan guion.

  •  GNU, donde se utilizan nombres de opciones largas y van precedidas por doble guion —.

Recordar:

No conviene mezclar las opciones UNIX con BSD ya que pueden dar resultados inesperados.

Opciones más comunes:

a Se muestran los procesos iniciados por l otros usuarios.

x Establece los procesos sin terminal de control alguna, o con una terminal de control diferente a la que se está utilizando.

u Muestra, para cada proceso, el nombre del usuario que lo inició y la hora a la que fue iniciado.

m Indica la información de memoria (combinandolo con “p” obtenemos el número de páginas).

j Formato de trabajo (jobs) pgid sid.

r Sólo muestra los procesos que se están ejecutando

Características de los procesos:

p o PID Process ID, número único o de identificación del proceso.

P o PPID Parent Process ID, padre del proceso.

U o UID User ID, usuario propietario del proceso.

t o TT o TTY Terminal asociada al proceso, si no hay terminal aparece entonces un ‘?’

T o TIME Tiempo de uso de cpu acumulado por el proceso.

c o CMD El nombre del programa o comando que inició el proceso.

RSS Resident Size, tamaño de la parte residente en memoria en kilobytes

SZ o SIZE Tamaño virtual de la imagen del proceso.

NI Nice, valor nice (prioridad) del proceso, un número positivo significa menos tiempo de procesador y negativo más tiempo (-20 a 19).

C o PCPU Porcentaje de CPU utilizado por el proceso

STIME Starting Time, hora de inicio del proceso

S o STAT Status del proceso

Estados de un proceso

Aquí no solo vemos información sobre la función de los procesos en linux, sino que estas opciones establecen el estado en el que se encuentra y, de esta manera, tomar alguna acción (como enviar una señal) para modificarlo. El envío de señales lo detallaremos más adelante.

ESTADO

DESCRIPCIÓN

r

(Runnable) en ejecución o en cola de ejecución.

s

(Sleeping) proceso en ejecución pero sin actividad por el momento, o esperando por algún evento para continuar.

d

Está asociado gernalmente a acciones de I/O del sistema.

x

Muerto, proceso terminado pero que sigue apareciendo, igual que los Z no deberían verse nunca.

z

(Zombie), difunto, proceso que por alguna razón no terminó de manera correcta, no debería haber procesos zombies.

<

Procesos con menor nice , es decir, mayor prioridad.

n

Procesos con mayor nice , es decir, menor prioridad.

l

Páginas en memoria bloqueadas (necesidad de funcionar en tiempo real).

S

Proceso líder de sesión.

+

Proceso en primer plano.

I

(Idle) hilo del kernel desocupado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

doce − 6 =

Lathack
Scroll al inicio