Gestión de Procesos

Anuncio
L
a
v
i
d
a
d
e
u
n
p
r
o
c
e
s
o
c
o
m
i
e
n
z
a
c
o
n
Administrador de Procesos
Concurrencia: Normalmente en una computadora co-existen n-procesos simúltaneamente
Administrador de Procesos: se encarga de seleccionar el proceso en turno a ser ejecutado en el
CPU
Objetivo: maximizar uso del CPU bajo un tiempo de respuesta razonable manteniendo un uso
justo, seguro y equilibrado del CPU entre los procesos.
Proceso: programa en ejecución.
• Aquel cuyas instrucciones son ejecutadas en ese momento por el CPU
• Entidad que puede ser asignada y ejecutada por un procesador
• Un proceso tiene un espacio de direcciones privado
• Los procesos del SO corren en modo kernel (privilegiado o supervisor)
• El resto de los procesos corren en modo usuario (sin privilegios)
Programa: entidad estática grabada en disco
Proceso: entidad dinámica grabada en memoria, i.e. processes, tasks, jobs
Tabla 1. Analogías: Diferencia entre programa y proceso
Programa
Proceso
receta
cocinar platillo
libro
Leer libro
Conforme se ejecuta un proceso, cambia de estado
Tabla 2. Nombres comunes para cada estado
Español
Inglés
l
a
Creado
created
Listo
ready
l
l
a
m
a
d
a
En ejecución
running
Suspendido
suspended, waiting
Destruido
terminated
a
l
s
i
s
t
e
m
a
d
e
f
o
Fig. 1. Estados Fundamentales de un Proceso
1
Fig. 2. Diagrama de Estados de un Proceso
Gestión de Procesos: ciclo de vida
La vida de un proceso comienza con la llamada al sistema defork, desde el shell por ejemplo con
./a.out :
1.-Con la llamada a fork se crea el proceso,iniciándose la información de contextoy asignando un
PID al proceso hijo a.out.Su proceso padre será el "shell".( Un proceso no se crea si: no
puedeencontrar el programa, faltade memoria, se ha sobrepasado elnúmerode procesos que se puede
crear...)
2.-El proceso pasa a estado "listo para ejecutarse".
3.-Existe una función "scheduler" o "planificador" que en funciónde la política , se encargade
seleccionar a un procesode la lista de "listo para ejecutarse".
4.-Un vez seleccionado el proceso a ejecutarse por el "planificador", se llama a la función
"dispatcher" que se encargade pasar a estado de ejecución adicho proceso, restaurando su
información de contexto.
5.-En ejecución se pasade modo usuario a modo supervisora travésde una llamada a sistema o
interrupción (cada vez que senecesita ejecutar alguna rutinadel sistema operativo tal como una
operaciónde E/S para escribir un mensaje en pantalla...). En modo usuario, se verifica lazona
de memoria a la que se accede, no sobrepase su área de programa de usuario(zonadatos
einstrucciones) y no modifica el áreadel Sistema Operativo(virus). Una vez
finalizada la ejecuciónde la rutinade E/S, el S.Odevuelve el control al programade usuario, pasando
a modo usuario
6.-Encaso de espera de un proceso por alguna operación de E/S,po run eventode otro proceso, o un
timer(intervalode tiempo), el p lanificador envía al proceso a ³estado durmiendo´.Para lo cual el
planificador selecciona el siguiente proceso a ejecutar y el dispatcher lo pasa a estadode
ejecución. Una vez que la razón por el que un proceso esta "durmiendo" finalice el planificador
pasa a estado "listo de ejecución".
7.-Los procesos tienen un quanto de tiempo de ejecución para el uso equitativode la CPU. Sabiendo
que los procesos más prioritarios tendrán mayor número de quantos.
8.-En casode que la memoria esté saturada y haya necesidad deca rgar unpr ograma más
prioritarioenmemoria, el swapper o intercambiador se encardadepasar un proceso menos prioritario
a memoria secundariaguardando lainformaciónnecesaria para volverlo a cargar en memoria, y
una vez finalizado la ejecuciónde un proceso,de pasarlo a
memoria. Este transiegode memoria adisco ydisco a memoria
se ledenomina "swapping de procesos".
9.-Un proce so puedeacabar su ejecución si : llamada al sistemade fin_programa:exit  Otro
2
proceso le manda unSEÑALde SIGKILL: kill -9 nº PID
Gestión de Procesos: Tabla de Procesos
• Información de control para gestionar el proceso:
• Planificación y estado: Temporizadores que contabilizan el tiempo de CPU
utilizado en modo kernel y modo usuario
• Descripción de los segmentos de memoria asignados al proceso.
• Estado del procesador: valor de los registros de la cpu.
•
•
Punteros para estructurar los procesos en colas. Para que el planificador las gestione.
Comunicación entre procesos:
• Descriptores de eventos: Qué eventos despertarán al proceso.
• Campo de señales: enumera las señales recibidas pero todavía no tratadas
Cambio de Contexto
•
•
•
•
Cuando se esta ejecutando un proceso, se dice que el sistema se esta ejecutándo en el
contexto de un proceso.
Se denomina cambio de contexto a la acción de cargar el procesador con el contexto del
proceso que pasa a ocupar la CPU, salvando previamente el contexto del proceso que
abandona la CPU en su PCB.
Se provoca un cambio de contexto cuando:  fin quanto  finaliza el proceso  operación de
sincronización-tenga que esperar  llamada al sistema (operaciónde entrada/salida) mediante
el mecanismo trap (interrupción software) queda bloqueado a la espera de finalizar la
operación.
Interrupción hardware que desbloquee un proceso más prioritario.  la llegada de un proceso
más prioritario.
Planificador de Procesos:Unix,tradicional
• Los PCBs estarán ordenados en la colas de preparados de acuerdo a la política de
planificación utilizada.
• El planificador se encarga de decidir a quién dará la tajada (slice o quanto)de tiempo.
• En Unix se utiliza el algoritmo de planificación que se denomina Round Robin Multinivel
con Prioridades Dinámicas.
• 1º aproximación: Algoritmo Round-Robin
• Cola FIFOde procesos planificados
• Funcionamiento: Se coge el proceso más antiguo y una vez ejecutado su quanto,
vuelve a introducirse en la cola.
• Ventaja: Es un algoritmo justo.
• Desventaja: los procesos con mayor prioridad se ejecutarán con la misma frecuencia
que los menos prioritario
Ordenes relativas a procesos: ps
Examinar las opciones en el manual (castellano):
-a: información de los procesos de todos los usuarios
-e: variables de entorno
-u: muestra los procesos de un solo usuario
-r: sólo procesos en ejecución
-x: todos los procesos del sistema
-l: salida larga
3
Ejemplos: ps ±aux, ps -edaf
Ordenes relativas a procesos: ps/top
Ordenes de procesos: nice & renice
• Nice ±n comando : fija el valor de nice para la ejecución de un cierto proceso
• Valores válidos de -20 a 19
• Los usuarios sólo pueden bajar la prioridad
• El root puede subir la prioridad a un proceso.
• Ejemplo: lanzar los dos running y running1 con nice diferente y con el comando top
visualizar lo que ocurre.
• Renice ±n PID: Modifica la prioridad a un proceso ya en ejecución
• Ejemplo: invertir la ejecución de running y running1, para que el menos prioritario pase a
ser más prioritario (y consuma más CPU).
Ordenes de procesos: sleep, wait, nohup
• Sleep tiempo (segundos): Demora durante un cierto tiempo el inicio de una orden o genera
una espera durante la ejecución
• (sleep 3600; who >> registro) &
• Wait: cuando en programación shell, nos interesa esperar a que acaben los procesos en
background (&) antes de ejecutar la siguiente orden:
• Orden1 > archivo1 &
• Orden2 > archivo2 &
• Wait
• Sort archivo1 archivo2
• Nohup: Cuando un proceso muere, todos sus subordinados ±si los hubiera- mueren
también. Al finalizar una sesión (login, konsole) también.
• Con nohup, un comando seguirá en ejecución a pesar de que el usuario que lo lanza se haya
desconectado. Es interesante redirigir las salidas para capturarlas:
• Nohup orden > salida 2>errores &
Ordenes de procesos: kill y señales
• Kill: envía señales a procesos
• Kill ±nº_de_señal PID
• Un usuario puede eliminar cualquier proceso suyo
• El root puede eliminar cualquier proceso
• Las señales son sucesos externos a los procesos que tienen un número asociado.
• Por defecto se ejecuta la señal 15 SIGTERM (finalización software)
• La señal nº 9 SIGKILL provoca la terminación incondicional e inmediata del proceso
• Kill -9 PID
• Ejemplo:Desde konsole arrancar varios programas y finalizarlos con kill y/o con xkill
Procesos: Control de trabajos (bg, fg, jobs, CTRL+Z)
1-Desde un terminal en X lanzamos un proceso (mozilla) 2-El terminal queda bloqueado
3-Con CTRL+Z paramos el proceso
4-Con ps vemos que el proceso esta sTopped
5-Con ³jobs´ vemos la lista de tareas de esa terminal
6-Con bg lo mandamos a segundo plano
7-Con fg + nº de trabajo lo traemos a primer plano de nuevo (bloqueamos terminal
4
Descargar