You are on page 1of 13

Universidad Abierta Interamericana

Ingeniera en Sistemas Informticos

QNX - Administracin de Procesos

Grupo N1

QNX - Administracin 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)

Grupo N1

Un verdadero Microkernel
El microkernel lleva a cabo cuatro
servicios:
comunicacin entre procesos
comunicacin a bajo nivel de redes

scheduling de procesos
dispatching de interrupciones

Grupo N1

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 sesin
Prioridad
Trabado archivos
4

exec()
no
opcional
si
si
si
no

spawn()
si
no
opcional
si
si
opcional
si
opcional
si
no
Grupo N1

QNX - Administracin de Procesos


Ciclo de vida de un proceso

Creacin
ubicar el ID del proceso
establecer la informacin 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

Ejecucin
comienza a competir con otros procesos por el uso de los recursos
del CPU.
la muerte de un proceso padre no causa automticamente la muerte
del proceso hijo

Grupo N1

QNX- Administracin de Procesos


Finalizacin

Puede ser de dos maneras:


por una seal
por pedido explcito 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
finalizacin del proceso.
2) Al haber finalizado el terminiation thread es enviada una notificacin al
proceso padre.

Grupo N1

QNX - Administracin 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 seal de Stop. No puede utilizar el CPU.
Se libera por una seal de Continuar o por otra seal de finalizacion
WAIT.BLOCKED
esta a la espera del estado de uno o ms
procesos hijos
DEAD
el proceso ha terminado pero no puede enviar su
mensaje de exit a su padre. La memoria que ocupa, es liberada

Grupo N1

QNX - Administracin de Procesos


Transacciones de los procesos
HELD
WAIT
blocked

SEND
blocked

12

11

1
6

10

WAIT
blocked

16

READY

15

REPLY
blocked

13
5

DEAD
(zombie)

14

RECEIVE
blocked

SIGNAL
blocked

1- Proceso enva mensaje


2- Proceso 2 recibe mensaje
3- Proceso 2 responde mensaje
4- Proceso espera mensaje
5- Proceso recibe mensaje
6- Seal desbloquea proceso
7- Seal intenta desbloquear proceso
8- Proceso 2 recibe mensaje con seal
9- Proceso espera muerte de proceso hijo
10- Muere hijo, o seal desbloquea proceso
11- SIGSTOP seteado en proceso
12- SIGCONT seteado en proceso
13- Proceso muere
14- Proceso padre espera terminacin, se
Termina o espera terminacin.
15- Proceso llama semwait() en un semforo
no positivo.
16- Otro proceso llama sempost() o una seal
Desmascarada es enviada
Grupo N1

QNX- Administracin 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 simblicos de los procesos


Las aplicaciones pueden dividirse en procesos cooperadores. Estos procesos
generan una comunicacin confiable, ya que guardan el ID de los otros procesos.
Los procesos adquieren un nombre simblico que pueden registrar en el AP del nodo
dnde se ejecutan.
QNX soporta nombres locales y nombres globales ( a travs de toda la red)

qnx_name_attach ()
qnx_name_locate ()

asigna un nombre
localiza un proceso por su nombre

Grupo N1

QNX - Administracin de Procesos


Timing
Administracin 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.
Tambin pueden crear sus propios Timers.
sleep()
para medir en segundos
delay()
para medir en milisengudos

10

Grupo N1

QNX - Administracin de Procesos


Timing
Crear relojes
Pueden ser uno o ms, dependiendo de la configuracin 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 N1

QNX - Administracin de Procesos


Manejo de Interrupciones
Reacciona a las interrupciones de hardware y maneja el nivel ms
bajo de transferencia de datos entre la computadora y los dispositivos
externos

Caractersticas:
entra por una llamada externa (en lenguaje C)
se ejecuta en el contexto en que est embebido el proceso
tiene habilitada la opcin de interrupcin
no habla directamente con la interrupcin 8259 del hard
debe ser lo ms corto posible
interrupqnx_hint_attach ()
establece interrupcin
qnx_hint_detach()
remueve la interrupcin
12

Grupo N1

Grupo N1
Marcos Pryce-Jones
Marcelo DUrso
Ana Montagna
13

Grupo N1

You might also like