Post on 18-Jul-2016
description
Universidad Abierta InteramericanaUniversidad Abierta InteramericanaIngeniería en Sistemas InformáticosIngeniería en Sistemas Informáticos
QNX - Administración de Procesos
Grupo N°1Grupo N°1
Grupo N°1Grupo N°122
QNX - Administración de ProcesosQNX - Administración de ProcesosResponsabilidades 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 N°1Grupo N°133
Un verdadero MicrokernelUn 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
Grupo N°1Grupo N°144
QNX - Administrador de ProcesosQNX - Administrador de Procesos
Primitivas para crear procesosfork () crea una imagen exacta del proceso creadorexec () reemplaza la imagen del proceso creadorspawn() crea un proceso nuevo, hijo del proceso creado
Item heredado fork() exec() spawn()ID proceso no si noAbrir archivos si opcional opcionalUID, GID real si si siID de sesión si si opcionalPrioridad si si opcionalTrabado archivos no si no
Grupo N°1Grupo N°155
QNX - Administración de ProcesosQNX - Administración de ProcesosCiclo 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
Grupo N°1Grupo N°166
QNX- Administración de ProcesosQNX- 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.
Grupo N°1Grupo N°177
QNX - Administración de ProcesosQNX - Administración de ProcesosEstado 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
Grupo N°1Grupo N°188
QNX - Administración de ProcesosQNX - Administración de Procesos
Transacciones de los procesos1- Proceso envía mensaje2- Proceso 2 recibe mensaje3- Proceso 2 responde mensaje4- Proceso espera mensaje5- Proceso recibe mensaje6- Señal desbloquea proceso7- Señal intenta desbloquear proceso8- Proceso 2 recibe mensaje con señal9- Proceso espera muerte de proceso hijo10- Muere hijo, o señal desbloquea proceso11- SIGSTOP seteado en proceso12- SIGCONT seteado en proceso13- Proceso muere14- 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
HELD
READY
WAITblocked
DEAD(zombie)
RECEIVEblocked
REPLYblocked
SENDblocked
SIGNALblocked
2
1
3
45
6
78
9
10
11 12
WAITblocked
14
13
15
16
Grupo N°1Grupo N°199
QNX- Administración de ProcesosQNX- Administración de Procesos
Determinar el estado de los proceso– qnx_psinfo() el estado de un proceso– qnx_soinfo() el estado de un proceso del SO
Nombres simbólicos de los procesosLas 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 () asigna un nombre– qnx_name_locate () localiza un proceso por su nombre
Grupo N°1Grupo N°11010
QNX - Administración de ProcesosQNX - 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 segundosdelay() para medir en milisengudos
Grupo N°1Grupo N°11111
QNX - Administración de ProcesosQNX - 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()
Grupo N°1Grupo N°11212
QNX - Administración de ProcesosQNX - Administración de Procesos
Manejo de InterrupcionesReacciona 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 posibleinterrupqnx_hint_attach () establece interrupciónqnx_hint_detach() remueve la interrupción
Grupo N°1Grupo N°11313
Grupo N°1Grupo N°1
Marcos Pryce-JonesMarcos Pryce-JonesMarcelo D’UrsoMarcelo D’UrsoAna MontagnaAna Montagna