Está en la página 1de 30

Sistemas Operativos III

Unidad 08 Administracin de Procesos


Redes y Comunicaciones de Datos

Copyright 2007 por TECSUP

Administracin de Procesos

Sistemas Operativos III

Introduccin
Un punto importante a tomar en cuenta cuando se trabaja con un sistema operativo, es la cantidad de recursos que se estn utilizando. Estos recursos pueden ser por ejemplo capacidad de procesamiento o memoria, cuyo consumo afecta el rendimiento de la computadora. Este consumo de recursos es realizado por todos procesos que se estn ejecutando en la computadora. En esta unidad describiremos la forma cmo Linux trata los procesos, y cmo gestionar y monitorear el uso de los recursos de procesamiento y memoria.

Administracin de Procesos

Sistemas Operativos III

Objetivos
Entender como trabajan los procesos. Entender la genealoga de procesos en Linux. Entender el concepto de procesos Demonios. Entender el concepto de procesos Hurfanos y Difuntos. Utilizar herramientas de monitoreo del sistema. Realizar control de procesos. Realizar automatizacin de tareas.

Administracin de Procesos

Sistemas Operativos III

Contenido
Definicin de Proceso. Genealoga de Procesos. Procesos Demonios. Procesos Hurfanos y Difuntos. Herramientas de Monitoreo: ps, free, top, w, sar. Control de procesos. Automatizacin de tareas: at y crontab.

Administracin de Procesos

Sistemas Operativos III

Procesos
Un proceso es un programa en ejecucin. Todos los programas que corren bajo Linux son procesos. Por ejemplo, el Shell de un usuario, como bash, es un proceso que se ejecuta mientras est conectado al sistema. Los procesos pueden ser sncronos o asncronos. Los procesos sncronos se ejecutan uno despus de otro, esto se llama tambin Proceso en Foreground. En cambio los procesos asncronos se pueden ejecutar simultneamente con otro procesos, esto se llama tambin Proceso en Background.

Administracin de Procesos

Sistemas Operativos III

Procesos: PID
Cada proceso es identificado por un ID: PID: Process Identification Cada proceso tiene un proceso padre identificado por: PPID: Parent Process Identification

Proceso

PPID bash 1 PPID PPID PID1 PPID 1 200 1

Un nmero identificador, (Process ID o PID), identificador de proceso. Es necesario para referirnos a un proceso en concreto de los varios en ejecucin. Un PPID (Identificador del proceso padre), es el nmero que indica qu proceso cre al proceso en cuestin. Un estado; habr momentos en los que un proceso seguir existiendo en el sistema, pero no estar haciendo nada realmente. Puede estar esperando a que una SEAL le sea enviada (sobre lo que trataremos ms tarde) para volverse activo, o a nosotros como usuarios nos puede interesar detenerlo o pausarlo bajo determinadas circunstancias. Los estados ms importanes son dormido (S), y en ejecucin (R). Un dueo, generalmente es el usuario que lo ejecut, y como ya se dijo, el proceso hereda los permisos del usuario de cara al sistema de ficheros. Si un ejecutable es SUID, al ejecutarse, el proceso resultante adquiere los permisos del usuario dueo del archivo. Generalmente, un usuario normal no puede ejercer control sobre procesos que no le pertenecen. Una prioridad que determina su importancia. Ya vimos que no todos los procesos eran igual de importantes. Veremos cmo cambiar la prioridad de un proceso ms adelante.

Administracin de Procesos

Sistemas Operativos III

Procesos: PID
Cuando un proceso es creado se le asigna un nmero (PID) y es aadido a la tabla de procesos y cuando el proceso concluye es retirado de la tabla. Linux mantiene en memoria una tabla de procesos, con informacin de los procesos activos.
TABLA DE PROCESOS
.............. .......... .............. ..........

ENTRADA DE TABLA DE PROCESOS

NPROC

.............. .......... .............. .......... .............. .......... .............. ..........

PID PPID UID Prioridad Estado ...

Administracin de Procesos

Sistemas Operativos III

Arranque del sistema


Gestor de arranque Kernel Padre de todos los procesos

LILO

Linux

init

login

mingetty

xdm
Sistema X Windows

BIOS

bash
Intrprete de comandos
8

Segn el orden de inicio durante el arranque del sistema Linux observamos que despus de cargar la imagen del kernel se inicia el primer proceso del sistema, el proceso Init. Este proceso es el padre de todos los procesos, el inicia el resto de procesos; desde los necesarios para iniciar una interfaz en lnea de comandos, hasta los procesos necesarios para iniciar una interfaz grfica. Otros procesos luego sern iniciados por diferentes programas y por el usuario. Todos estarn debajo de Init, el proceso raz.

Administracin de Procesos

Sistemas Operativos III

Genealoga de Procesos
Un proceso que genera nuevos procesos es llamado padre. El nuevo proceso es llamado proceso hijo. El proceso mingetty es hijo del proceso init. Muchos procesos son creados por el Shell, bash en la mayora de distribuciones Linux, el cual crea procesos hijos para ejecutarlos. init
Proces o Padre

bash

Proces o Padre

mingetty

Proces o Hijo

cat

Proces o Hijo
9

Administracin de Procesos

Sistemas Operativos III

Genealoga de Procesos
En Linux los procesos se crean mediante una llamada (call) al sistema, la peticin crea otro proceso: fork.
HIJO PPID bash 1 PPID PPID PID1 PPID 1 300 200 PPID exec(date) date 1 PPID PPID PID1 PPID 1 300 200 exit( )

Comando ingresado: $ date


PPID bash 1 PPID PPID PID1 PPID 1 200 1 PADRE PPID bash 1 PPID PPID PID1 PPID 1 200 1 Sleep PPID bash 1 PPID PPID PID1 PPID 1 200 1 Sleep
10

fork( )

wait(hijo)

Al ejecutar un comando como date se realiza los siguientes eventos: El proceso (en este caso bash) crea una copia de si mismo: fork ( ). El nuevo proceso ser el proceso hijo. El nuevo proceso se sobrescribe con el programa a ejecutar (en este caso date): exec ( ). Cuando el proceso termina, muestra la fecha y la hora, invoca a la funcin exit: exit ( ). El proceso padre espera a que el proceso hijo termine: wait ( ). Una vez que el proceso hijo muere el proceso padre continua trabajando.

Administracin de Procesos

10

Sistemas Operativos III

Procesos Demonios
Son procesos que el sistema inicia para realizar tareas bsicas en forma peridica. Estos procesos no estn asociados con un terminal (tty) en particular. Algunos procesos demonios conocidos son los siguientes: init (PID 1) : Padre de todos los procesos cron : Tareas automtica lpd : Demonio de Impresin LPR

11

Un demonio (o servicio) es un proceso en background que esta designado a correr autnomamente con un poco o nada de intervencin del usuario. Un ejemplo es el demonio http (httpd), este espera en background escuchando en puertos especficos y sirve paginas o scripts de acuerdo a la peticin que se le haga.

Administracin de Procesos

11

Sistemas Operativos III

Proceso Init
Es el proceso padre de todos los procesos del sistema. Permanece en ejecucin mientras funciona el sistema. Durante el proceso de encendido lee el archivo de configuracin /etc/inittab que inicia el resto de procesos. Hay varios niveles de ejecucin, desde 0 hasta 6, los cuales se puede invocar manualmente. # init <nivel_ejecucin> Ejemplo:
# init 0 # init 1

12

El programa /sbin/init no forma parte de ncleo de Linux, es el primer programa de usuario (su PID es 1). Despus de iniciado el kernel, init coordina el resto del proceso de arranque. Cuando el comando init inicia, se transforma en el padre (o en el abuelo) de todos los procesos que se producen automticamente en el sistema. Siempre que el nivel de ejecucin cambia, init utiliza los scripts de /etc/rc.d/init.d para iniciar e interrunpir diferentes servicios, como puedan ser el servidor de red, el servidor DNS, etc.

Administracin de Procesos

12

Sistemas Operativos III

Procesos Hurfanos y Difuntos


Proceso Hurfano: Es un proceso que permanece activo despus que el proceso padre ha terminado. Son siempre adoptados por el proceso init (PID 1). Proceso Difunto (zombie): Proceso que ha terminado pero no ha sido removido de la tabla de procesos, porque su padre ya no esta esperando (wait) por l. Al morir el padre, stos procesos debe de morir, si an continan vivos son adoptados por el proceso init.

13

Administracin de Procesos

13

Sistemas Operativos III

Herramientas de Monitoreo
Los programas utilizados en el monitoreo del sistema son los siguientes: ps free top w sar

14

Administracin de Procesos

14

Sistemas Operativos III

Comando ps
Muestra el estado de los procesos activos. Es usado frecuentemente para saber el PID de un proceso colgado $ ps -ft <terminal> $ ps -ef
$ ps -t pts/0 PID TTY 18667 pts/0 18668 pts/0 18744 pts/0 18804 pts/0 TIME CMD 00:00:00 login 00:00:00 bash 00:00:00 su 00:00:00 gunzip
15

Administracin de Procesos

15

Sistemas Operativos III

Comando ps
Las opciones mas utilizadas son ps aux, donde:
a: Muestra tambin los procesos iniciados por los otros usuarios; x: Muestra tambin los procesos sin terminal de control alguna (esto se aplica a casi todos los servidores); u: Muestra, para cada proceso, el nombre del usuario que lo inici y la hora a la cual fue iniciado. # ps -aux

16

El campo PID, que contiene el identificador del proceso. El campo COMMAND contiene el nombre del comando ejecutado. El uso de la memoria por el proceso se indica en la columna %MEM. El uso del procesador por el proceso se indica en la columna %CPU. La columna TIME lista la cantidad total de tiempo de CPU usado. La columna RSS tamao del proceso en la memoria principal del sistema. La columna TTY nmero de terminal (consola) desde el que el proceso fue lanzado.

Administracin de Procesos

16

Sistemas Operativos III

Comando free
Muestra la cantidad y uso de la memoria del sistema
# free total Mem: 78452 -/+ buffers/cache: Swap: 204468 used 72360 41620 1812 free shared 6092 64 36832 202656 buffers 17676 cached 13064

Se puede utilizar el argumento -b, -k, -m y -g para mostrar los valores en Bytes, KB, MB y GB.

17

Administracin de Procesos

17

Sistemas Operativos III

Monitor del Sistema Gnome

18

Administracin de Procesos

18

Sistemas Operativos III

Comando w
Muestra qu estn haciendo los usuarios en el sistema Adems muestra promedio de carga (uptime) PCPU : tiempo que se esta ejecutando un comando
#w

19

Administracin de Procesos

19

Sistemas Operativos III

Comando top
# top

20

top: es la versin interactiva de ps, y tiene algunas utilidades interesantes aadidas. Si lo ejecutamos en una terminal y sin opciones, aparecer arriba informacin del sistema: usuarios, hora, informacin del tiempo de funcionamiento de la mquina, nmero de procesos, uso de CPU, uso de memoria, y uso del swap. Muestra cules son los procesos que actualmente estn consumiendo ms tiempo de CPU y memoria. Se puede modificar la informacin mostrada en forma interactiva. Opciones: P M h : Muestra la informacin ordenada por % CPU (valor por defecto) : Muestra la informacin ordenada por %MEM : Ayuda

Las opciones se ingresan despus de ejecutar el comando TOP.

Administracin de Procesos

20

Sistemas Operativos III

Control de Procesos
Procesos en Background : &
Se ingresa el smbolo & despus del comando. # find / -name *tmp >resul &

Terminacin de Procesos: kill


# kill -seal PID Ejemplos: kill -15 1020 kill -9 1020

// terminacin condicional // terminacin incondicional

21

Ejecutar un proceso en background significa que el proceso se ejecutara pero dejara libre al shell para continuar recibiendo otros comandos. Para esto utilizamos el smbolo & despus del comando. Tanto los procesos en segundo plano (background) como los que estn en primer plano, pueden ser detenidos (matados) utilizando el comando KILL. Este comando enva seales a los procesos, para indicarle al proceso que debe de terminar su ejecucin. Los procesos pueden manejar o responder las seales sin morir. Solo el dueo del proceso o el superusuario (root) puede matar un proceso. Para esto debemos conocer el PID del proceso que deseamos matar ( con el comando ps aux por ejemplo) y pasarle la seal 9 o 15 segn sea el caso.

Administracin de Procesos

21

Sistemas Operativos III

Control de Procesos
Terminacin de Procesos: kill
Sirve para enviar seales a los procesos, para indicarle al proceso que debe de terminar su ejecucin. Los procesos pueden manejar o responder las seales sin morir. Solo el dueo del proceso o el superusuario (root) puede matar un proceso. # kill -seal PID Ejemplos: kill -15 1020 kill -9 1020

// terminacin condicional // terminacin incondicional

22

Procesos que continuan luego de un logout: nohup $ nohup sort bigfile>sortfile & Asignacion de prioridades: nice $ nice --incremento comando # nice --incremento comando

Administracin de Procesos

22

Sistemas Operativos III

Automatizacin de tareas: comando at


Ejecuta un comando una sola vez en un tiempo determinado. at <hora> [fecha] [incremento]
hora : hhmm (14:00), now, midnight fecha : mes dia [ao] (Feb 14), monday, today, tomorrow incremento : +n mins, hrs, days.

Ej. $ at now + 2 min <Enter>


sort /etc/passwd > /tmp/arch.tmp <ctrl> + d

23

Ejecuta comandos en un tiempo especificado y opcionalmente una fecha. Los comandos pueden ser ledos de la entrada estndar o desde un archivo. Las tareas programadas se ejecutaran una sola vez de acuerdo al tiempo programado.

Administracin de Procesos

23

Sistemas Operativos III

Parmetros del comando at

Hora H rs (1,2 digitos) H rs:m in (3,4 digitos) H rm in (3,4 digitos) N ow N oon M idnight N ext

Parm etros del com ando at Fecha M es da ao Dia de la sem ana Today Tom orrow

Increm entos +n m ins +n hrs +n days +n w eeks +n m onths +n years

24

Administracin de Procesos

24

Sistemas Operativos III

Parmetros del comando at


Existen otros comandos para administrar los trabajos planificados con el comando at. Comando atq Lista las tareas ubicadas en la cola del comando at. Comando atrm <Job Id> Cancela un proceso ubicado en la cola del comando at.

25

Administracin de Procesos

25

Sistemas Operativos III

Comando crontab
Ejecuta en forma regular un comando en una fecha y tiempo determinado. Los comando que se van a ejecutar se guardan en un archivo. Este archivo consta de seis campos y puede contener varios comandos.
10
minutos 0-59

14
horas 0-23

4
da del mes 1-31

*
mes 1-12

*
da de la semana 0-6 0=Domingo

user01
usuario

/bin/script01
comando

Se ejecuta /bin/script01 todos los das 4 de cada mes, a las 14:10 horas, con los permisos del usuario user01.
26

Cron es una utilidad que permite ejecutar tareas en segundo plano a intervalos regulares utilizando el demonio CRON. Para esto hace uso de un archivo CRONTAB (CRON TABLE) que contiene las entradas que debern correr segn una hora y das determinados. Cada usuario tiene su propio crontab, y los comandos sern ejecutados con los permisos del usuario que es dueo del crontab.

Administracin de Procesos

26

Sistemas Operativos III

Comando crontab
$ crontab -e .cronfile 0,15,30,45 * 0 3
minutos 0-59 horas 0-23

Edita el archivo crontab * *


da del mes 1-31

* *
mes 1-12

1-5 2-6

root root

df -v>/tmp/df_log /u/larry/dayly_backup
comando

da de la usuario semana 0-6 0=Domingo

$ crontab -l $ crontab -r

lista las tareas cancela crontab

27

El formato utilizado para las entradas en el crontab es e siguiente: Minuto Hora Dia del Mes Mes Dia de la semana Tareas

Minuto = Minuto de la hora, entre 00 y 59. * indica todos los minutos. Hora = Hora del da en formato 24-horas, entre 00 a 23. * Indica todas las horas. Dia del mes = Entre 1 y 31, * indica todos los das. Mes = Mes del ao, entre 1 y 12. * indica todos los meses. Dia de la semana = 3 caracteres sun, mon, tue o numrico 0=sun, 1=mon, * indica todos los dias. Tarea = El comando que se desea ejecutar. Si se desea ejecutar una tarea por ejemplo cada 5 minutos: */5 * * * */script/a/ejecutar Lo mismo se puede utilizar si se desea cada por ejemplo 3 horas: * */3 * * * /script/a/ejecutar

Administracin de Procesos

27

Sistemas Operativos III

Enlaces
Reunir Informacin del sistema: http://www.europe.redhat.com/documentation/rhl9/rhl-cg-es-9/chsysinfo.php3 Tareas automticas: http://www.europe.redhat.com/documentation/rhl9/rhl-cg-es-9/chautotasks.php3 Resumen de comandos: http://www.osmosislatina.com/linux/comandos.jsp Manejo de procesos: http://es.tldp.org/Tutoriales/TutorialLinux/TutorialLinux/linux_files/linu x3.html Man de Kill http://nixdoc.net/man-pages/Linux/man1/kill.1.html

28

Administracin de Procesos

28

Sistemas Operativos III

Preguntas
1. Cul es el PID del proceso init? 2. Con que comando se muestra el uso de memoria del sistema? 3. Cul es la sentencia que ejecuta el script llamado script1 en background?

29

Administracin de Procesos

29

Sistemas Operativos III

Respuestas
1. El PID 1. 2. El comando free. 3. ./script1 &.

30

Administracin de Procesos

30

También podría gustarte