1
Cada programa que ejecuta el ordenador es un proceso.
El S.O. puede ejecutar varios procesos asignando pequeñas fracciones de tiempo a cada uno de forma que parece que todos funcionan simultáneamente.
Algunos procesos pueden estar “congelados” de forma que se le dedica el tiempo a aquellos procesos que realmente necesitan “tiempo”.
Procesos (I)
2
Un proceso puede “crear” otro proceso.
Relación padre-hijo
Init es el proceso padre de todos.
A cada proceso se le asigna un número (PID) process ID
Un “daemon” (demonio) es un proceso residente que generalmente está a la espera de realizar alguna función.
Ej: lpd es el “daemon” de impresión.
Procesos (II)
3
Si un proceso “padre” muere, también desaparecerán sus procesos hijos.
Esto puede evitarse con
nohup comando &
En este caso es el “abuelo” que hará las veces de padre.
Procesos (III)
4
Es importante que una máquina UNIX disponga de mucha memoria RAM, para tratar de tener la mayor cantidad de información en RAM, incluidos los procesos en ejecución.
UNIX permite memoria virtual.
Es útil pero puede ralentizar considerablemente un proceso (xosview)
Procesos (IV)
5
En ejecución (Running)
Dormidos (Sleeping)
En espera de Entrada/Salida (Waiting)
Zombies (Z)
Estados posibles de procesos
6
Planificación del procesos
El S.O. planifica en función de:
La prioridad del proceso
Los requisitos de CPU en instantes anteriores
Si se pueden suspender un proceso por procesos de espera.
Si se deben atender interrupciones de periféricos (de disco, red local, puertos serie,…)
7
En UNIX System V,
ps –ef muestra información de todos los procesos.
En UNIX BSD,
ps ax
Información de procesos (I)
8
Ejemplo de salida con ps
PID TTY STAT TIME COMMAND
2403 ? S 0:00 smbd
2424 ? S 0:00 in.telnetd
2425 p0 S 0:00 -bash
2471 p0 R 0:00 ps ax
2472 p0 S 0:00 more
63 ? S 0:00 /usr/sbin/rpc.por
TIME: (Hora:Minutos consumidos de CPU)
Información de procesos (II)
9
top muestra información de los procesos de forma que se actualiza periódicamente.
Aparecen ordenados en función del % de consumo de CPU.
2:14am up 2 days, 3:33, 1 user, load average: 0.07, 0.02, 0.00
54 processes: 53 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 1.7% user, 9.6% system, 0.0% nice, 88.6% idle
Mem: 30824K av, 30112K used, 712K free, 20584K shrd, 12412K buff
Swap: 124956K av, 2496K used, 122460K free 3992K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
11009 root 18 0 716 716 556 R 0 11.4 2.3 0:00 top
1 root 0 0 108 68 48 S 0 0.0 0.2 0:02 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:01 kflushd
3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:03 kswapd
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread
Información de procesos (III)
10
Es un pequeño mensaje de un proceso a otro.
La señales en realidad son números. Del 0 al 30.
Cada número representa un tipo de señal, que suelen entender muchos procesos.
El receptor puede “ignorar” la señal o atenderla.
Señales a procesos (I)
11
kill envía una señal a un proceso.
Todos los procesos cuando reciben la señal 9 (SIGKILL) entienden que deben “desaparecer” .
Otra señal útil es la 1 (SIGHUP) pues suele utilizarse en muchos “daemons” para reactulizar sus tablas.
Ej: kill –1 389 ó kill –SIGHUP 389
Señales a procesos (II)
12
Comodines
Como ocurre en DOS, ? * permiten actuar de comodines para uno o múltiple caracteres.
UNIX amplia de forma que se puede especificar un conjunto de caracteres válidos [abz] o rangos [a-m] o excluir rangos [^a-m]
ls [a-m]*
cp [ab]* /home/usuario
rm c[^0-4]*
13
Entrada estándar
Es posible redireccionar la entrada de teclado y salida por pantalla de muchos programas a otro alternativo.
comando < archivo_de_entrada
El contenido del fichero se dirige al comando
14
Salida estándar
También podemos reencaminar la salida a un fichero.
comando > fichero_salida
Ej:
ls –la > salida
Podemos añadir a un fichero
comando >> fichero_salida
ls b* >>salida
O bien utilizar tanto entrada como salida
sort salida
15
Salida de errores
Sh permite redirigir las salidas correspondiente a errones a una salida distinta de la salida estándar con 2>
rm prueba 2> errores
Si esta orden provoca un error (por que el fichero no exista o no haya permiso ) dicho mensaje se enviará al fichero errores en lugar de la pantalla.
16
Salidas
/dev/null es una especie de papelera
Actua como un fichero que siempre está vacio.
De forma que las salidas que no deseamos que aparezcan por pantalla o a un fichero se pueden enviar a dicho archivo.
Ej: rm datos >/dev/null 2>/dev/null
Página siguiente |