Administración de procesos

Anuncio
Universidad Abierta Interamericana
Ingeniería en Sistemas Informáticos
QNX - Administración de Procesos
Grupo N°1
QNX - Administración de Procesos
Responsabilidades del Administrador de Procesos (AP)
– El AP trabaja muy cerca del Microkernel para proveer los servicios
esenciales del S.O.
– Comparten el mismo espacio de memoria
– Utiliza las primitivas del Microkernel para comunicarse con los otros
procesos
– Es responsable de:
– Crear nuevos procesos
– Administrar los recursos fundamentales asociados al
proceso (via mensajes)
2
Grupo N°1
Un verdadero Microkernel
El microkernel lleva a cabo cuatro
servicios:
– comunicación entre procesos
– comunicación a bajo nivel de redes
– scheduling de procesos
– dispatching de interrupciones
3
Grupo N°1
QNX - Administrador de Procesos
Primitivas para crear procesos
fork ()
crea una imagen exacta del proceso creador
exec ()
reemplaza la imagen del proceso creador
spawn()crea un proceso nuevo, hijo del proceso creado
Item heredado fork()
ID proceso
Abrir archivos si
UID, GID real si
ID de sesión
Prioridad
Trabado archivos
4
exec()
no
opcional
si
si
si
no
spawn()
si
no
opcional
si
si
opcional
si
opcional
si
no
Grupo N°1
QNX - Administración de Procesos
Ciclo de vida de un proceso

Creación
– ubicar el ID del proceso
– establecer la información que define el entorno del proceso

Carga
– es realizada por el “loader thread”
– el thread corre bajo el ID del nuevo proceso
– el AP puede manejar otros requerimientos mientras realiza la carga

Ejecución
– comienza a competir con otros procesos por el uso de los recursos
del CPU.
– la muerte de un proceso padre no causa automáticamente la muerte
del proceso hijo
5
Grupo N°1
QNX- Administración de Procesos
Finalización

– Puede ser de dos maneras:
– por una señal
– por pedido explícito del programa (exit)
– Involucra dos etapas:
1) Un “termination thread” se corre en el administrador de procesos. Este corre
con el mismo ID que el proceso a ser terminado y se encarga de la plena
finalización del proceso.
2) Al haber finalizado el “terminiation thread” es enviada una notificación al
proceso padre.
6
Grupo N°1
QNX - Administración de Procesos
Estado de los procesos
–
–
–
–
–
–
–
READY
está listo para usar el CPU
SEND.BLOCKED
RECEIVE.BLOCKED
REPLY.BLOCKED
SIGNAL.BLOCKED
SEMAPHORE.BLOCKED
HELD
recibe una señal de Stop. No puede utilizar el CPU.
Se libera por una señal de Continuar o por otra señal de finalizacion
– WAIT.BLOCKED
esta a la espera del estado de uno o más
procesos hijos
– DEAD
el proceso ha terminado pero no puede enviar su
mensaje de exit a su padre. La memoria que ocupa, es liberada
7
Grupo N°1
QNX - Administración de Procesos
Transacciones de los procesos
HELD
WAIT
blocked
9
SEND
blocked
12
11
1
6
10
WAIT
blocked
2
16
READY
15
REPLY
blocked
13
5
4
DEAD
(zombie)
14
8
RECEIVE
blocked
8
3
7
SIGNAL
blocked
1- Proceso envía mensaje
2- Proceso 2 recibe mensaje
3- Proceso 2 responde mensaje
4- Proceso espera mensaje
5- Proceso recibe mensaje
6- Señal desbloquea proceso
7- Señal intenta desbloquear proceso
8- Proceso 2 recibe mensaje con señal
9- Proceso espera muerte de proceso hijo
10- Muere hijo, o señal desbloquea proceso
11- SIGSTOP seteado en proceso
12- SIGCONT seteado en proceso
13- Proceso muere
14- Proceso padre espera terminación, se
Termina o espera terminación.
15- Proceso llama semwait() en un semáforo
no positivo.
16- Otro proceso llama sempost() o una señal
Desmascarada es enviada
Grupo N°1
QNX- Administración de Procesos
Determinar el estado de los proceso
– qnx_psinfo()
– qnx_soinfo()
el estado de un proceso
el estado de un proceso del SO
Nombres simbólicos de los procesos
Las aplicaciones pueden dividirse en procesos cooperadores. Estos procesos
generan una comunicación confiable, ya que guardan el ID de los otros procesos.
Los procesos adquieren un nombre simbólico que pueden registrar en el AP del nodo
dónde se ejecutan.
QNX soporta nombres locales y nombres globales ( a través de toda la red)
– qnx_name_attach ()
– qnx_name_locate ()
9
asigna un nombre
localiza un proceso por su nombre
Grupo N°1
QNX - Administración de Procesos
Timing
 Administración del Timing
– El sistema es mantenido por el SO.
– Está basado en la UTC (Universal Time Coodrinated)
0 hs 0 min 0 seg - Enero 1 de 1970

Facilidades del Timing
– Los procesos pueden hacer pausas por segundos o milisengundos.
– También pueden crear sus propios Timers.
sleep()
para medir en segundos
delay()
para medir en milisengudos
10
Grupo N°1
QNX - Administración de Procesos
Timing
 Crear relojes
– Pueden ser uno o más, dependiendo de la configuración del SO.
timer_create()

Armar relojes
– Intervalos absolutos (reemplazan):
basados en la UTC
– Intervalos relativos (agregan):
basados en el valor acutal del
reloj
intervaltimer_settime()

Resolution
de 500 microseg a 50 miliseng
qnx_ticksize()

Reading
verifica el estado del reloj
timer_gettime()
11
Grupo N°1
QNX - Administración de Procesos
Manejo de Interrupciones
Reacciona a las interrupciones de hardware y maneja el nivel más
bajo de transferencia de datos entre la computadora y los dispositivos
externos
Características:
–entra por una llamada externa (en lenguaje C)
–se ejecuta en el contexto en que está embebido el proceso
–tiene habilitada la opción de interrupción
–no habla directamente con la interrupción 8259 del hard
–debe ser lo más corto posible
interrupqnx_hint_attach ()
establece interrupción
qnx_hint_detach()
remueve la interrupción
12
Grupo N°1
Grupo N°1
Marcos Pryce-Jones
Marcelo D’Urso
Ana Montagna
13
Grupo N°1
Descargar