You are on page 1of 10

Generalitat de Catalunya

Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

Pt3 - Processos a Linux

Alumne (COGNOMS, NOM):

Professor: Rubn Arroyo


rarroyo2@xtec.cat

Format i data del lliurament de la prctica


Format del lliurament
Document PDF amb la segent nomenclatura:
1erCOGNOM_2onCOGNOM_NOM_DAM-M01-UF1-NF2-Pt3.pdf

Data del lliurament


Dijous, 24 de novembre de 2016, 12:00h

Objectius generals de la prctica


Consolidar el conceptes sobre processos a Linux.

Teoria de procesos
Definicin y entorno
Un proceso representa un programa en curso de ejecucin y, al mismo tiempo, todo su entorno de
ejecucin (memoria, estado, identificacin, propietario, proceso padre...).
Los datos de identificacin de un proceso son:
- PID: Process ID, s un nmero de proceso nico. Unix enumera cada proceso con el fin
de poder diferenciarlo de los otros. El primer proceso iniciado por el sistema es 1, y se trata de
un proceso llamado generalmente init. Se utiliza el PID cuando se trabaja con un proceso. Iniciar
10 veces el mismo programa (mismo nombre) produce 10 PID diferentes.
- PPID: Parent Process ID, s un nmero de proceso padre. Cada proceso puede iniciar
otros procesos, sus procesos hijos (child process). Cada proceso hijo debe contener, entre toda
su informacin, el PID del proceso padre que lo inici. Todos los procesos tienen un PPID salvo
el proceso 0, que es un seudoproceso que representa el inicio del sistema (crea el 1 init).
- UID y GUID: Un nmero de usuario responsable del suceso y otro del grupo:
corresponde al UID y al GID de la cuenta de usuario que inicia el proceso. El sistema lo utiliza
para determinar, a travs de la cuenta, los permisos que el proceso tiene para acceder a los
recursos. Los procesos hijos heredan ambas cuentas. En algunos casos se puede modificar este
comportamiento.
- Duracin y prioridad del proceso: la duracin del proceso corresponde al
tiempo de ejecucin consumido desde la ltima invocacin. En un entorno multitarea, el tiempo
de procesador se comparte entre los procesos y no todos tienen la misma prioridad. Los
procesos de ms alta prioridad son ejecutados primero.

Pgina 1 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

Cuando un proceso est inactivo, su prioridad aumenta con el fin de tener la oportunidad de ser
ejecutado. Cuando est activo, su prioridad baja con el fin de dejar paso a otro. Es el planificador
de tareas del sistema el que gestiona las prioridades y los tiempos de ejecucin.
- Directorio de trabajo activo: tras su inicio, se configura el directorio actual del
proceso (desde el cual se inici). Este directorio servir de base para las rutas relativas.
- Ficheros abiertos: tabla de los descriptores de ficheros abiertos. Por defecto al
principio slo hay tres presentes: 0, 1 y 2 (los canales estndares). Con cada apertura de fichero
o de nuevo canal, la tabla se rellena. Al cierre del proceso, se cierran los descriptores (en
principio).
- Otra informacin adicional es el tamao de la memoria asignada, la fecha de
inicio del proceso, el terminal de atribucin, el estado del proceso, los UID efectivo y real, as
como los GID efectivo y real.

Estados de un proceso
Durante el periodo de vida de un proceso (tiempo entre el inicio y la salida) puede pasar por diversos
estados o process state:
-

Ejecucin en modo usuario (user mode)


Ejecucin en modo ncleo (kernel mode)
En espera E/S (waiting)
Dormido (sleeping)
Listo para la ejecucin (runnable)
Dormido en el swap (memoria virtual)
Nuevo proceso (born or forked)
Fin de proceso (zombie)

El modelo de procesos de Unix es complejo, pero sus caractersticas ms evidentes son:


Caracterstica

Descripcin

Identificacin

PID: Identificador de proceso


PPID: Identificador de proceso padre

Usuario

UID: Identificador de usuario


EUID: Identificador de usuario efectivo

Prioridad

Prioridad combinada: realimentacin automtica + valor nice ajustado


por el usuario
El valor nice [-20,20] normal es 0. El usuario puede empeorar el
valor nice pero slo root puede mejorarlo.

Memoria

Gestin de memoria virtual:


VIRT: Tamao virtual.
RES: Espacio residente.
SHR: Espacio compartido.
SWAP: Descargado.

Recursos

La asignacin de recursos (ficheros, dispositivos, conexiones de red)


se realiza por proceso.
Pgina 2 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

Creacin

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

La llamada al sistema fork() permite que un proceso padre se


bifurque en dos procesos idnticos, salvo por el PID y PPID.

Control de procesos y tareas desde el shell


2
Para la shell cada sentencia a ejecutar constituye una tarea, aunque una tarea pueda estar
formada por varios procesos. Algunos comandos de utilidad relacionados con los procesos son:
Comando

Funcin

ps

Muestra informacin sobre los procesos.


ps
ps fax
ps faxl
ps -U <usuario>

top

Monitor del sistema.

uptime

Muestra la carga media del sistema.

kill
killall

Enva una seal a un proceso, o a todos los procesos de un programa


determinado.
Por defecto envan la seal de terminar (SIGTERM), pero tambin se
pueden utilizar
para enviar la seal de muerte (SIGKILL) o cualquier otra.

nice
renice

Lanzan un proceso con un valor de nice (de -20 a 19) o bien ajustan el
valor nice de un proceso creado.

nohup

Lanza un proceso con su salida desconectada del terminal. til si se


quiere lanzar un proceso que siga vivo despus de cerrar el terminal
que lo lanz.

Primer y segundo plano en el shell


El shell soporta dos planos de ejecucin. En primer plano foreground cuando el proceso que se
ejecuta se realiza de manera interactiva conectado a nuestro terminal (salida y entrada). En segundo
plano background donde se encuentran todos los procesos que se ejecutan sin paralizar nuestra
entrada.
Cuando se teclea una orden en la shell, el proceso correspondiente se lanza en primer plano y el shell
queda ocupado (no procesa una nueva entrada) hasta que termina. Si se quiere lanzar una tarea que
tardar en completarse, se puede lanzar en segundo plano utilizando el smbolo & al final de la
sentencia.
Ejemplo:
alumne@localhost ~]$ kwrite fichero 2>/dev/null &
Pgina 3 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

[1] 4983
[alumne@localhost ~]$
[1]+ Done kwrite fichero 2>/dev/null
[alumne@localhost ~]$
La ejecucin de kwrite hubiese ocupado el terminal desde el que se lanz si no se hubiese especificado
el &. Al lanzar el proceso en segundo plano, la shell nos indica: El nmero de trabajo o tarea en segundo
plano [1], y el PID del nuevo proceso 4983. Cuando concluye la ejecucin de kwrite, el shell nos
indica que la tarea [1] se ha completado.
Los comandos internos del shell fg y bg permiten controlar la ejecucin en primer y segundo plano. El
comando interno jobs muestra la lista de tareas lanzadas desde el shell Bash. Las combinaciones de
teclas <CTRL+C> y <CTRL+Z> permiten terminar y abortar y terminar el trabajo en primer plano.
Comando

Funcin

fg
fg %<job_number>

Pasa a primer plano el trabajo por defecto o el trabajo especificado.

bg
bg %<job_number>

Reanuda en segundo plano la ejecucin del trabajo.

jobs

Muestra la lista de trabajos lanzados desde el shell. El smbolo +


acompaa al ltimo trabajo parado y el - al penltimo.

<CONTROL+Z>

Detiene, sin terminar, el proceso en primer plano.

<CONTROL+C>

Termina el trabajo en primer plano.

Orden ps
ps

[OPCIONES]

[PID] ...

Informa sobre los procesos en ejecucin. Las opciones admitidas (con o sin guin "-") son:
Opcin

Descripcin

Formato largo

Formato usuario, muestra nombre y hora inicio.

Formato trabajos, muestra PGID y SID

Formato seales

Mostrar tambin procesos de otros usuarios.

Mostrar procesos sin terminal de control.

No truncat lneas para que quepa en un ancho de pgina. Agregar una


w para cada lnea extra.
Pgina 4 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

Sin encabezado

Slo procesos en ejecucin

ps auxwww | more
Muestra todos los procesos en ejecucin, en formato usuario, incluidos los que no tienen terminal
asignado, admitiendo hasta 4 lneas por comando.

Desenvolupament de la prctica
La realitzaci dels segents apartats es realitza mitjanant el terminal. Documenta tots els passos
necessaris, realitzant captures de pantalla mostrant les sortides del terminal, per portar a la realitzaci
dels segents apartats.
1. Muestra todos los procesos que se estn ejecutando en tu sistema.
2. Construye el rbol de procesos "vivos" del sistema en la versin jerrquica. desde su
inicio. Cul es el proceso padre de todos los procesos? Explica la funcin de otros 4 procesos
que aparezcan.
3. Muestra todos los procesos que se estn ejecutando en tu sistema en forma interactiva.
4. Rellena la siguiente tabla relacionada con los parmetros del comando ps
Parmetro

Accin

-f
-l
-e
-u
-g
-t
-p
-a
-x
-w
-ww

Pgina 5 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

5. Explica en forma el significado de cada columna que se obtiene al ejecutar la orden ps


-l
Cabecera de la columna Significado
UID
PID
PPID
C
STIME
TTY
TIME
CMD
F
S
PRI
NI
WCHAN
6. Ejecuta en primer plano la orden sleep 100. Puedes utilizar la lnea de comandos
para ejecutar rdenes, como por ejemplo, obtener la fecha date?. Ejecuta en primer plano la
orden que deja inactiva la pantalla durante 200 segundos. Para el proceso y devulvelo al primer
plano.
7. Ejecuta en primer plano la orden que deja inactiva la pantalla durante 200 segundos.
Para el proceso, y devulvelo a segundo plano. Puedes utilizar la lnea de comandos para
ejecutar otras rdenes?
8. Ejecuta en segundo plano la orden que deja inactiva la pantalla durante 200 segundos.
Trae el proceso al primer plano, pralo y devulvelo a segundo plano.
9. Cuntos procesos se pueden ejecutar en primer plano? Y cuntos procesos se pueden
ejecutar en segundo plano?
Nota: Una cerca en angls a Internet pot resoldre aquesta pregunta.
How many processes can be executed in foreground? How many processes can be executed in background?

Pgina 6 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

10. Ejecuta en primer plano la orden que deja inactiva la pantalla durante 200 segundos.
Para el proceso. Ejecuta en primer plano la orden que deja inactiva la pantalla durante 210
segundos. Para el proceso. Mira la lista de tareas pendientes y el estado de cada proceso.
Devuelve al primer plano el primer proceso y a segundo plano el segundo.
11. Ejecuta en primer plano la orden que deja inactiva la pantalla durante 300 segundos.
Para el proceso. Mira la lista de tareas pendientes y el estado del proceso. Devuelve al primer
plano el proceso. Mata el proceso. Mira la lista de tareas pendientes y el estado del proceso.
Compara la informacin de las dos listas de tareas pendientes
12. Crea el siguiente archivo:
cat > sinfin
while true
do
echo NO jugar a los videojuegos en clase y slo utilizar el
ordenador con fines acadmicos
sleep 3
done
<CONTROL+D>
Da permisos de ejecucin al programa con chmod +x sinfin y ejectalo mediante ./sinfin
Este programa genera un bucle infinito.
Ejecuta el programa en primer plano. Puedes listar tu directorio personal?
Ejecuta el programa en segundo plano. Puedes listar tu directorio personal?
13. Ejecuta el programa sinfin en primer plano. Puedes matar el proceso que genera?
Ejecuta el programa sinfin en segundo plano. Puedes matar el proceso que genera?
14. La orden que permite gestionar los procesos va asociada con el envo de determinadas
seales. Los nombres de las seales que se envan para manipular es bastante comn a todos
los sistemas Unixs, pero no as, los nmero que definen stas seales. Obtn la lista de todas
las seales definidos en tu sistema.
15. Teclea la orden ps -l y guarda su salida en ps.txt1. Ejecuta el programa sinfin en
segundo plano. Vuelve a teclear la orden ps -l observa los nuevos procesos que aparecen al
procesarse el script y guarda la informacin en ps.txt2. Compara la informacin de los
archivos ps.txt1 y ps.txt2. Vuelve a teclear la orden ps -l y observa si los nuevos
procesos han cambiados sus PIDs despus del tiempo que ha transcurrido, y guardando su
salida en ps.txt3. Compara la informacin de los archivos ps.txt1, ps.txt2 y ps.txt3.
Por qu cambian los PIDs de algunos procesos? Puedes matar el proceso que ha generado
por el programa sinfin?
Pgina 7 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

16. Ejecuta el programa sinfn en segundo plano y a continuacin cierra la sesin de la shell
(teclea exit o <CONTROL+D>) Qu ha sucedido con el proceso al volver al iniciar una nueva
sesin de la shell?
17. Cmo se puede conseguir que se siga ejecutando el programa sinfn, incluso despus
de haber cerrado la shell donde se ejecuta (despus de haber salido de ella con un exit
<ctrl+d>) Qu ha sucedido con el proceso al volver a iniciar una nueva sesin de la shell?
18. Calcula el nmero P con 4500 cifras decimales. Cunto tiempo tarda en ejecutase?
echo "scale=4500;4*a(1)"|bc -l
Calcula el nmero P con 6000 cifras decimales y el tiempo que tarda en realizar dicho clculo.
Calcula el nmero P con 7000 cifras decimales y el tiempo que tarda en realizar dicho clculo.
Compara todos stos tiempos con los del ordenador de tu compaero
Apunta los resultados en el archivo tiempo_1.txt
19. Define un alias, que calcula el nmero PI con 5000 cifras decimales.
Cunto tiempo tarda en ejecutarse?
20. Calcula la duracin de ejecucin de las siguientes rdenes en segundo plano:
sleep 200
echo "scale=4500;4*a(1)"|bc -l
ls -lR / > lista.txt 2>/dev/null
Compara el tiempo de clculo del nmero P con 4500 cifras decimales que habas realizado
anteriormente. Apunta los resultados en el archivo tiempo_2.txt
21. Veamos el efecto que tiene los cambios en las prioridades de ejecucin de una orden
sobre el tiempo total de ejecucin que requiere dicho proceso. El tiempo total que requiere el
clculo del nmero PI con 7500 cifras decimales en una mquina virtual sobre mi ordenador
personal es de 2 minutos y 9,204 segundos (Mi porttil ya tiene unos aitos. Esta orden hace
uso intensivo de la CPU, pero tiene un gasto bajo en otros recursos del sistema, como son "las
operaciones de entrada salida" o "las llamadas al sistema", entre otros. (Si has sido bueno/a y
los Reyes Magos te han obsequiado son un ordenador moderno de 4 ncleos y 32 GB de RAM,
en el clculo te ahorrars un tiempo que podr dedicar para repasar las unidades didcticas que
has suspendido)
Para poder realizar comparaciones anota en un archivo de texto 7500.txt la informacin que te
da la orden ps -l
ps -l >> 7500.txt
Ejecuta en segundo plano la orden, time echo "scale=7500;4*a(1)" | bc -l y anota en
un archivo de texto, 7500_0.txt la informacin que te da la orden ps -l durante su ejecucin.
Tambin anota la informacin que obtienes al final sobre del tiempo total de ejecucin de sta
orden.

Pgina 8 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

Cuando haya acabado la primera ejecucin del clculo del nmero P, vuelve a ejecutar en
segundo plano la misma orden anterior, es decir, echo "scale=7500;4*a(1)"|bc -l y
nuevamente anota la informacin que da la orden ps -l en el mismo archivo 7500.txt pero
ahora, respetando el contenido que tenias anteriormente. Observa que aparecen dos nuevos
procesos, el asociado a la calculadora bc (que es la que realiza el clculo) y la subshell que la
ha lanzado sta orden bash y que permanece en estado de espera wait hasta que la
calculadora haya acabado su trabajo.
Durante la segunda ejecucin cambia la prioridad del proceso asociado a la calculadora bc
aumentndola hasta +20. Vuelve a observar y anotar en el archivo 7500.txt la informacin que
de te da la orden ps -l durante la ejecucin del clculo del nmero P, y el tiempo total de
ejecucin de la orden cuando haya acabado.
Compara la informacin que te ofrecen las diferentes columnas almacenadas en el archivo
7500.txt y los tiempos totales antes y despus de haber cambiado la prioridad de ejecucin.
Comenta y explica las diferencias observadas.
22. Siguiendo la misma idea de la pregunta anterior, intenta sacar conclusiones sobre los
tiempos totales de ejecucin cuando comparas asignaciones de prioridades diferentes a un
conjunto de rdenes. La orden que te permite cambiar las prioridades de los procesos antes de
lanzarlas es nice
Para ello lanza simultneamente varios procesos, como son el clculo del nmero PI con 7000,
8000, 9000 y 10000 cifras.
echo "scale=7000;4*a(1)"|bc -l&; echo "scale=8000;4*a(1)"|bc -l&; echo
"scale=9000;4*a(1)"|bc -l&; echo "scale=10000;4*a(1)"|bc -l&
Una bsqueda recursiva desde el directorio raz:
ls lR / > lista.txt 2>/dev/null&
Y un script con un bucle infinito sinfin y marca a uno de ellos una prioridad baja, por ejemplo,
el del clculo del nmero P con 10000 cifras. Cuando hayan acabado todas las rdenes, vuelve
a repetir el mismo procedimiento, asignando ahora una prioridad alta al proceso en cuestin con
el cual quieres hacer la comparativa (el del clculo del nmero PI con 10000 cifras). Utiliza el
seguimiento de los procesos que da la orden ps y describe las conclusiones.
23. Ejecutar la orden ps -l dos veces, con 30 segundos de diferencia, y redirige la salida a
los archivos procesos_1 y procesos_2 respectivamente. Analiza las diferencias que se
muestran en los procesos que aparecen en esos dos momentos.
24. Genera el proceso del clculo del nmero PI con 10000 cifras en segundo plano y mata
la tarea que genera (no su nmero de proceso).

Saber ms
Understanding Linux Process States
https://access.redhat.com/sites/default/files/attachments/processstates_20120831.pdf
Pgina 9 de 10

Generalitat de Catalunya
Departament d'Educaci
Institut Provenana

CFGS - Desenvolupament dAplicacions Multiplataforma


Curs 2016-2017
M01 - Sistemes Informtics
UF1 - Installaci, configuraci i explotaci del sistema informtic i les xarxes.
NF2.- Installaci i configuraci de sistemes operatius.

Linux Processes Administration & Monitoring Tutorial


http://www.slashroot.in/linux-processes-administration-and-monitoring-tutorial

Pgina 10 de 10

You might also like