GProcesos_esquema

Anuncio
Gestión de Procesos (esquema)
Concepto
Programa en ejecución, e.d., unidad de procesamiento gestionada por el SO
El proceso reside en memoria principal y, conforme se ejecuta, va modificando su contexto.
La información que caracteriza a un proceso es:
la “imagen de memoria” (texto+datos+pila),
el “contexto de programación” (registros h/w)
y el BCP (Bloque de Control del Proceso)
El SO mantiene estructuras de datos asociadas al proceso que permiten identificar los recursos:
segmentos de memoria, ficheros abiertos, puertos de comunicaciones,…
Jerarquía de procesos: padre e hijos, en forma de árbol genealógico
Entorno del proceso: conjunto de variable=valor que se incluyen en la pila del proceso
Grupos de procesos: derivados de un shell, dependientes de un terminal,…
Hay operaciones que afectan al grupo como unidad: ej, suspender un grupo
Multitarea
Multitarea: coexistencia de varios procesos activos a la vez
Multiusuario: soporte de varios usuarios que trabajan simultáneamente desde varios terminales
Tiempo compartido: reparto “equitativo” del tiempo de CPU entre varios usuarios
Bases de la multitarea:
paralelismo real E/S-CPU,
alternancia de fases E/S-CPU de los procesos
carga en memoria de varios procesos a la vez
Proceso Nulo: código que se ejecuta cuando no hay otra tarea que ejecutar
Estados de los procesos: en ejecución, en espera de ejecución, en espera de evento
Planificador (scheduler): parte del kernel que selecciona el siguiente proceso a ejecutar
Activador (dispatcher): parte del kernel que prepara la ejecución del proceso planificado
Grado de multiprogramación: número de procesos activos
- en estado “planificable”  dispuestos para ser activados
- cargados en memoria
- identificados por el SO  con BCP vigente
Información del proceso
Contexto hardware del proceso = estado del procesador
Registros generales, CS:IP, SS:SP, Status, otros ()
Cuando se interrumpe un proceso, lo primero es salvar su “contexto h/w” en pila kernel
Imagen de memoria
Regiones de texto, datos y pila
Obtenidas a partir del fichero ejecutable
Información del BCP
Planificación y estado: “contexto h/w”, evento esperado, prioridad, info de planificación
Descripción de regiones
Recursos asignador: ficheros abiertos, puertos de comunicación asignados
Punteros para formar listas: de preparados, de relaciones jerárquicas,…
Comunicación: espacio para señales, mensajes,…
Tablas del SO
Tabla de BCPs
Tabla de ficheros, de montajes
Tablas de E/S: de drivers de bloques, de drivers de caracteres,
Formación de un proceso
- Asignar un espacio de memoria
- Seleccionar un BCP libre
- Rellenar el BCP (a partir del proceso padre, a partir del fichero ejecutable)
- Cargar los segmentos de texto y datos iniciales
- Crear el segmento de pìla inicial: incluye entorno y parámetros de invocación
- Marcar listo para ejecución
Estados del proceso
1.
2.
3.
4.
5.
6.
En ejecución: en fase de procesamiento. Contexto h/w en CPU
Bloqueado: en espera de que ocurra un evento. Contexto h/w en BCP
Preparado: planificable pero no seleccionado. Contexto h/w en BCP
Suspendido: en espera de asignación de memoria (swapped),
Parado: retirado de la competencia por la CPU (suspended/stopped)
En espera batch: en expectativa de ser introducido al sistema
Cambio de contexto
Atención a una interrupción
Salvar el contexto h/w en la pila del kernel
Ejecutar la RSI
Cambio de estado de proceso
Salvar y actualizar información en el BCP de un proceso que detiene su ejecución
Activación de un proceso (dispatching)
Actualización del BCP
Recuperación del contexto h/w
Vuelta de interrupción
Procesos ligeros (hilos o threads)
Cada uno de los flujos de ejecución, asociados a sendas funciones, que componen un proceso.
Hilo de ejecución primario: función main()
Información particular de cada hilo
Contexto h/w: registros, IP y SP
Estado del hilo: en ejecución, listo o bloqueado
Información compartida por todos los hilos de un proceso
BCP  espacio de memoria, ficheros abiertos, temporizadores, señales, contabilidad,…
Estado de los hilos vs., estado del proceso
Paralelismo, variables compartidas y llamadas no bloqueantes
Comparar:
- un proceso con varios hilos
- un proceso convencional (con un solo hilo)
- un proceso convencional y llamadas no bloqueantes
- varios procesos convencionales
Diseño con hilos
Separación de tareas
Modularidad
Aumento de velocidad de ejecución
Compartición de variables globales
Uso de mecanismos de sincronización
Solapamiento de las ejecuciones de los hilos
* Diseño de servidores con hilos
1. Hilo distribuidor y “pool” de hilos trabajadores
2. Conjunto independiente de hilos trabajadores iguales
3. Operación en cadena de (pipeline) de varios hilos
Planificación
1.
2.
3.
A largo plazo: aplicada a procesos batch; añade nuevos procesos al sistema
A medio plazo: aplicada a procesos suspendidos (swapped); carga en memoria
A corto plazo: aplicada a proceso listos para ejecutarse; asigna el procesador
Expulsión (expropiación o preemption)
El SO le retira, forzosamente, el uso del procesador al proceso en ejecución
Colas de procesos
Colas batch: organizadas según características del trabajo (job)
Colas de procesos: organizadas según prioridad, carácter del proceso (interactivo o de
usuario, de sistema, de tiempo real)
Objetivos de planificación
Reparto equitativo del procesador
Optimización del uso del procesador
Mejora (disminución) del tiempo de respuesta interactivo
Mejora (disminución) del tiempo de espera en batch
Mejora (aumento) de la productividad batch (throughput)
Cumplimiento de los plazos de tiempo real
Algoritmos de planificación
Round-robin
Organización en cola circular con asignación de “quantos” de tiempo
Expropiación por agotamiento del quanto y replanificación
FIFO
Organización en lista ordenada por tiempo de llegada
Prioridades
Fijas o dinámicas
Organización en listas ordenadas por prioridades asignadas o calculadas
SJF, SRTF
Organización en lista ordenada por tiempo previsto de ejecución
Caso batch: tiempo previsto para la ejecución del proceso
Caso interactivo: tiempo previsto de la próxima ráfaga de CPU
Variantes: con/sin expropiación
Lotería
Selección por sorteo:
cada proceso está asociado a un rango de valores
y un generador de números aleatorios extrae un valor ganador.
Tiempo real
A plazo fijo: EDF
Periódicos: RMS
Planificación POSIX en Linux 2.2
Política SCHED_FIFO de tiempo real no crítico
Valores de prioridad fija de tiempo real
Un proceso solo sufre expropiación si aparece otro de mayor prioridad
Política SCHED_RR de tiempo real no crítico
Valores de prioridad fija de tiempo real
Un proceso sufre expropiación, además, si agota su “quanto”
Política SCHED_OTHER
Valores de prioridad dinámica interactiva asociados al “quanto” restante
Reevaluaciones de prioridad por “épocas”, según comportamiento.
Época: marcada por el agotamiento de los quantos de los procesos “listos”
Planificación Windows en W’NT
16 niveles con prioridad fija de tiempo real
15 niveles con prioridades variables de procesos interactivos, según comportamiento
1 nivel de sistema (proceso nulo)
Señales y excepciones
Señales: interrupción de proceso
Origen  otro proceso o el SO
Tipos:
Excepciones hardware: SIGBUS, SIGILL
Comunicación: SIGPIPE
E/S asíncrona: SIGIO
…
Efecto y armado:
Armar  asociar una función a una señal (con sigaction())
Actuación  ejecución de la función asociada y retorno
Excepciones: evento que requiere la ejecución de un código fuera del flujo normal
Generadas por hardware o software
Respondidas por el SO en primera instancia
Redirigidas a un manejador, si ha sido declarado (soporte del lenguaje de programación)
try {…} except {…}
Temporizadores
Servicio alarm(segundos), que genera una señal SIGALRM al consumir el plazo indicado
Servidores y demonios
Servidor:
Proceso pendiente de recibir órdens provenientes de procesos cliente
Estructura de bucle infinito: {lectura de orden, ejecución de orden, respuesta}
Uso de puertos de comunicación
Servidor secuencial: el servidor mismo ejecuta las órdenes
Servidor paralelo: delega la ejecución las órdenes en procesos hijo o en hilos
Demonio:
Proceso con las siguientes características
- se inicia al arrancar el sistema y está siempre activo (no acaba)
- funciona como servidor o realizando tareas periódicas
- delega el trabajo específico en otros procesos o hilos
- se ejecutan en background: no están asociados a un Terminal
Ejemplos: telnetd, httpd, lpd
Servicios POSIX
Gestión de procesos
Identificación de proceso: getpid(), getppid(), getuid(), geteuid()
Entorno de proceso:
getenv(), setenv()
Creación de proceso:
fork(), exec()
Terminación de proceso: exit(), atexit(), wait(), waitpid()
Gestión de hilos
Atributosde hilo:
pthread_attr_init(), pthread_attr_destroy()
Creación e identificación: pthread_create(), pthread_self()
Terminación:
pthread_join(), pthread_exit()
Planificación:
De proceso:
sched_setparam(), sched_scheduler(), sched_getparam()
Atributos:
sched_get_priority_min(), sched_get_priority_max()
De hilos:
pthread_setschedparam(), pthread_getschedparam()
Gestión de señales:
Conjunto de señales:
sigemtyset(), sigfillset(), sigaddset(), sigdelset()
Envío de señales:
kill(), alarm(), sleep()
Armado de señales:
sigaction()
Máscara de señales:
sisprocmask(), sigpending()
Espera de señales:
pause()
Descargar