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