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 |