Bloque I: Principios de sistemas operativos

Documentos relacionados
Programación Concurrente

Plataformas de Tiempo Real

Programación Concurrente

Estándares POSIX. Estándares base

Bloque I: Principios de sistemas operativos

Programación Concurrente

Facultad de Ingeniería Industrial y de Sistemas v2.0 MA781U PLANIFICACION DE PROCESOS

Prácticas de Sistemas Operativos

Bloque I: Principios de sistemas operativos

POSIX-RT. Librería. Sistemas Informáticos de Tiempo Real Francisco Pastor Gomis

Taller de pthreads. Sistemas Operativos. Verano de 2009

Procesos e hilos. Pablo San Segundo (C-206)

Sistemas operativos 2ª edición. Capítulo 4 Planificación del procesador (extracto de las transparencias del libro)

Sincronización de Threads

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente

Conceptos de Planificación

Informática Electrónica Concurrencia

Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006

Plataformas de Tiempo Real

ISO Tema 7-B,

Bloque I: Principios de sistemas operativos

Planificación dinámica de tareas

Programación de Multitareas utilizando Hilos

SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos

HILOS POSIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011

Planificación multiprocesador. Niveles de granularidad. Niveles de granularidad. Niveles de granularidad. Planificación multiprocesador - SSOO I

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Programación Concurrente

Convivencia Gestión de Procesos

Sistemas Operativos I Manual de prácticas

Planificación con prioridades

Planificación de Procesos

Hilos de ejecución POSIX

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos.

Sistemas operativos, 2ª edición

Biblioteca de sistema

Sistemas Operativos II Junio 2006 Nombre:

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

MC Hilda Castillo Zacatelco PROCESOS

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Procesos e Hilos en C

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes

Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)

Arquitecturas cliente/servidor

PARTE II PROGRAMACION CON THREADS EN C

Sistemas Operativos Preguntas de Revisión

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas de Tiempo Real Planificación de Sistemas de Tiempo Real

Sistemas operativos 2ª edición. Capítulo 4 Planificación del procesador 1ª parte: planificación en monoprocesador

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

Sistemas Operativos. Procesos

Plataformas de Tiempo Real

Concepto de proceso. (c) 2006 Alexis Quesada / Francisco J. Santana 2

Sistemas Operativos II Febrero 2008 Nombre:

Sistemas Operativos Primer Recuperatorio Parcial 1

Planificador de Linux (Scheduler)

SISTEMAS OPERATIVOS:

Sucesos asíncronos. dit. dit. Juan Antonio de la Puente DIT/UPM UPM UPM

Sistemas Operativos Primer Examen Parcial 13/07/15

Threads. Hilos - Lightweight process - Procesos ligeros

SISTEMAS OPERATIVOS: PROCESOS. Planificación de procesos

Preguntas de autoevaluación tema 3

Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink

Sistemas Operativos. Curso Página Web: Asignaturas de programación en el plan de estudios

Sistemas Operativos Práctica 3

Tema 2: Gestión de la CPU

Procesos e hilos: cálculo de

Sistemas Operativos. Trabajo Práctico N ō 3

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

Sumario Prólogo Unidad didáctica 1. Introducción a los sistemas operativos Objetivos de la Unidad... 12

Procesos Definición y Estados

Ejercicio 1. Teoría [2,5 puntos]:

Scheduling de procesos en Linux 2.6

SISTEMAS OPERATIVOS: Lección 4: Planificación de Procesos

Tostadores y POSIX. 1. Introducción

Objetivos de la Planificación. Planificación Monoprocesador. Tipos de Planificación. Tiempo de respuesta Productividad Eficiencia del procesador

Análisis y Verificación Formal de Planificadores para Sistemas Operativos de Tiempo Real. Dr. Apolinar González Potes

Sistemas operativos 2ª edición. Capítulo 4 Planificación del procesador

Entorno de programación de nivel 1: La librería PCAP

Hilos (threads) Realizado por M. Curiel

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

Analista Universitario en Sistemas. Sistemas Operativos. Instituto Politécnico Superior THREADS

Cena de filosofos y sincronizacion java

Acceso coordinado a recursos compartidos

1 Primitivas básicas de OpenMP

Tareas Periódicas en POSIX

Introducción a los Sistemas Operativos

Sistemas Operativos. S.O. Estructura Básica. S.O. Como Administrador de Recursos. Multiprogramación. Multiprogramación y Procesos

Tecnología de software para sistemas de tiempo real

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Proceso. Threads, SMP, and Microkernels. Multithreading. Proceso

Programación Concurrente Recopilación de teoría referente a la materia

Concurrencia Monitores. Guillermo Román Díez

Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO

1- UNIVERSIDAD DE CIENCIAS EMPRESARIALES Y SOCIALES FACULTAD DE CIENCIAS EMPRESARIALES. Tecnicatura Universitaria en Programación de Sistemas

Concepto de Planificación Planificación: forma o criterio que se sigue a la hora de decidir que proceso debe entrar en ejecución.

Transcripción:

Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5. Planificación y despacho Tema 6. Sistemas de tiempo real y sistemas empotrados Tema 7. Gestión de memoria Tema 8. Gestión de dispositivos de entrada-salida GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 1 5 Notas: Tema 5: Planificación y despacho Conceptos. Políticas de planificación. Interfaz para planificación de procesos. Esquemas de planificación mixta entre procesos y threads. Planificación en sistemas multiprocesadores. Interfaz para planificación de threads. GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 2

1. Introducción Un thread puede estar en tres estados diferentes: en ejecución: está en ejecución en un procesador activo: está listo para ejecutar, pero aún no tiene un procesador disponible bloqueado o suspendido: esperando a una condición para poder continuar ejecutando expulsión en ejecución planificación activo suspensión bloqueado activación GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 3 Políticas de planificación: Conceptos básicos Política de Planificación: Conjunto de reglas para determinar el orden de ejecución de los procesos o threads Afecta a la ordenación de los procesos o threads cuando: - se suspenden - son expulsados - se activan - llaman a una función que cambia la prioridad o la política GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 4

Conceptos básicos: Objetivos de la planificación En sistemas de tiempo compartido - reparto equitativo del procesador - eficiencia: tiempos de respuesta promedio pequeños - potencia de cálculo: procesar en promedio la mayor cantidad posible de actividades En sistemas de tiempo real - predecibilidad: tiempos de respuesta de peor caso acotados - urgencia: tiempos de respuesta de peor caso pequeños, para actividades muy urgentes - criticalidad: hacer primero las actividades críticas GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 5 Conceptos básicos (cont.) Despacho: Es el conjunto de acciones que se llevan a cabo para comenzar la ejecución de una tarea Expulsión: La planificación puede ser expulsora o no Si es expulsora, una tarea (que tenga mayor prioridad) puede interrumpir a otra y desalojarla de la CPU Si no es expulsora, cuando una tarea comienza continúa ejecutando hasta que voluntariamente cede la CPU - más sencilla - tiempos de respuesta mucho peores GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 6

Conceptos básicos (cont.) Prioridad: Número asociado a cada proceso o thread y utilizado por la política de planificación A mayor valor, mayor prioridad prioridades fijas: número entero positivo que no cambia prioridades dinámicas: el valor cambia por sí solo Plazo (Deadline): Instante de tiempo en el que una tarea debe haber finalizado su actividad Se usa como prioridad dinámica en la planificación EDF (Earliest Deadline First): a menor plazo, mayor prioridad GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 7 2. Políticas de planificación Cíclica o round-robin Cada tarea recibe una rodaja del procesador Puede o no ser equitativa FIFO Las tareas se ejecutan en el orden que llegan: no expulsable Basada en prioridades Puede ser expulsable o no Primero el trabajo más corto Para trabajos en lista (batch) Puede sufrir inanición GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 8

Algunas políticas definidas en POSIX: SCHED_FIFO: planificación expulsora por prioridad, con orden FIFO para la misma prioridad SCHED_RR: planificación expulsora por prioridad, con orden rotatorio para la misma prioridad; la rodaja temporal es fija SCHED_OTHER: otra política de planificación por prioridad, dependiente de la implementación Los parámetros de planificación definidos son: struct sched_param { int sched_priority;... GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 9 3. Interfaz para la planificación de procesos Fijar política y parámetros, o sólo parámetros: #include <sched.h> int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); int sched_setparam (pid_t pid, const struct sched_param *param); Leer política y leer parámetros: int sched_getscheduler (pid_t pid); // devuelve la política int sched_getparam (pid_t pid, struct sched_param *param); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 10

Interfaz para la planificación de procesos (cont.) Ceder el procesador: int sched_yield (void); Leer los límites de los parámetros: int sched_get_priority_max (int policy); int sched_get_priority_min (int policy); int sched_rr_get_interval (pid_t pid, struct timespec *interval); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 11 4. Planificación mixta: Ámbito de contención Existen tres modelos de planificadores de threads: de sistema: - un planificador para todos los threads del sistema - los parámetros de planificación del proceso se ignoran de proceso: - un planificador para los procesos - otro planificador para los threads del proceso elegido - es el más eficiente, y menos predecible: no aconsejable para aplic. de tiempo real multi-proceso y multi-thread mixto: - un planificador para procesos y threads globales - otro para los threads locales del proceso elegido GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 12

5. Pl. en multiprocesadores: Dominio de asignación Los threads están pensados para ser aplicables en multiprocesadores La asignación de threads a procesadores es un campo de investigación abierto POSIX define el dominio de asignación de un thread como el conjunto de procesadores en los que ese thread puede ser ejecutado La forma de especificar el dominio de asignación es definida por la implementación Las reglas de planificación sólo son deterministas para dominio de asignación de tamaño uno y estático GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 13 6. Interfaz para la planificación de threads Atributos de planificación: Son parte del objeto de atributos que se utiliza al crear el thread Ámbito de contención (contentionscope); valores: - ámbito de sistema: PTHREAD_SCOPE_SYSTEM - ámbito de proceso: PTHREAD_SCOPE_PROCESS Herencia de atributos de planificación (inheritsched); muy importante, ya que si hay herencia no se hace caso del resto de atributos de planificación; valores: - hereda los del padre: PTHREAD_INHERIT_SCHED - usa los del objeto attr: PTHREAD_EXPLICIT_SCHED GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 14

Atributos de planificación (cont.) Política de planificación (schedpolicy); valores: - SCHED_FIFO - SCHED_RR - SCHED_OTHER Parámetros de planificación(schedparam); es del tipo: struct sched_param { int sched_priority;... GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 15 Funciones para atributos de planificación #include <pthread.h> int pthread_attr_setscope (pthread_attr_t *attr, int contentionscope); int pthread_attr_getscope (const pthread_attr_t *attr, int *contentionscope); int pthread_attr_setinheritsched (pthread_attr_t *attr, int inheritsched); int pthread_attr_getinheritsched (const pthread_attr_t *attr, int *inheritsched); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 16

Funciones para atributos de planificación (cont.) int pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy); int pthread_attr_getschedpolicy (const pthread_attr_t *attr, int *policy); int pthread_attr_setschedparam (pthread_attr_t *attr, const struct sched_param *param); int pthread_attr_getschedparam (const pthread_attr_t *attr, struct sched_param *param); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 17 Funciones para el cambio dinámico de atrib. de planif. #include <pthread.h> int pthread_getschedparam (pthread_t thread, int *policy, struct sched_param *param); int pthread_setschedparam (pthread_t thread, int policy, const struct sched_param *param); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 18

Ejemplo: planificación de threads #include <stdio.h> #include <unistd.h> #include <pthread.h> #include <sched.h> #include <string.h> #include "load.h" // datos transferidos a cada thread periódico struct periodic_params { float period,execution_time; int id; ; GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 19 Ejemplo (cont.) // Thread pseudo-periódico // Pone un mensaje en pantalla, consume tiempo de CPU, // y pone otro mensaje void * periodic (void *arg) { struct periodic_params params; params = *(struct periodic_params*)arg; while (1) { printf("thread %d starts\n",params.id); eat(params.execution_time); printf("thread %d ends\n",params.id); sleep ((int)params.period); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 20

Ejemplo (cont.) // Programa principal, que crea dos threads periódicos // con periodos y prioridades diferentes int main() { pthread_attr_t attr; pthread_t t1,t2; struct periodic_params t1_params, t2_params; struct sched_param sch_param; int err; adjust(); // Crea objeto de atributos if (pthread_attr_init (&attr)!= 0) { printf("error en inicialización de atributos\n"); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 21 Ejemplo (cont.) // Coloca cada atributo // El atributo inherisched es muy importante if (pthread_attr_setinheritsched (&attr,0)!= 0) { printf("error en atributo inheritsched\n"); if (pthread_attr_setdetachstate (&attr,pthread_create_detached)!= 0) { printf("error en atributo detachstate\n"); if (pthread_attr_setschedpolicy (&attr, SCHED_FIFO)!= 0) { printf("error en atributo schedpolicy\n"); sch_param.sched_priority = (sched_get_priority_max(sched_fifo)-5); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 22

Ejemplo (cont.) if (pthread_attr_setschedparam (&attr,&sch_param)!= 0) { printf("error en atributo schedparam\n"); // Preparar el argumento del thread y crear el thread t1_params.period = 2.0; t1_params.execution_time = 1.0; t1_params.id = 1; if ((err=pthread_create(&t1,&attr,periodic,&t1_params))!= 0) { printf("error en creacion del thread 1: %s\n",strerror(err)); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 23 Ejemplo (cont.) // Prepara atributos y parámetros para el segundo thread sch_param.sched_priority = (sched_get_priority_max(sched_fifo)-6); if (pthread_attr_setschedparam (&attr,&sch_param)!= 0) { printf("error en atributo schedparam\n"); t2_params.period = 7.0; t2_params.execution_time = 3.0; t2_params.id = 2; if ((err=pthread_create(&t2,&attr,periodic,&t2_params))!= 0) { printf("error en creacion de thread 2: %s\n",strerror(err)); // permite a los threads ejecutar un rato, y luego termina sleep (30); exit (0); GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez 24