Sincronización de Threads
|
|
|
- María Luisa Lagos Quiroga
- hace 8 años
- Vistas:
Transcripción
1 Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t) Nombrados Nombrados No Nombrados No Nombrados pthread_attr_init pthread_attr_init sem_init sem_init sem_open sem_open pthread_attr_destroy pthread_attr_destroy sem_destroy sem_destroy sem_close sem_close pthread_attr_lock pthread_attr_lock sem_wait sem_wait sem_unlink sem_unlink pthread_attr_unlock pthread_attr_unlock sem_trywait sem_trywait pthread_attr_trylock pthread_attr_trylock sem_post sem_post sem_getvalue sem_getvalue 1 Sincronización de Threads Sincronización de threads Semáforos Mutex (esperas a corto plazo) Variables condicionales (esperas a largo plazo) Exclusión mutua Mutex o candado: mecanismo de sincronización más sencillo y eficiente Sirve para obtener acceso exclusivo a las variables o recursos En POSIX.1c son variables de tipo pthread_mutex_t (estructura que almacena todos los datos concernientes al mutex) 2
2 Funciones para mutex (I) Las funciones básicas para creación y manejo de mutex se muestran en la tabla siguiente Función pthread_mutex_init Descripción Inicializa una variable de tipo pthread_mutex_t pthread_mutex_destroy Destruye una variable mutex pthread_mutex_lock Protege la sección crítica (operación P) pthread_mutex_unlock Libera la protección de la sección crítica (op. V) pthread_mutex_trylock Como pthread_mutex_lock pero sin bloqueo 3 Funciones para mutex (II) pthread_mutex_init: inicializa una variable de tipo pthread_mutex_t int pthread_mutex_init (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); Dos parámetros Puntero a una variable pthread_mutex_t (mutex) objeto atributo de mutex (attr) Se inicializa por defecto haciendo el segundo parámetro NULL Devuelve 0 si se ha podido inicializar el mutex. #include<pthread.h> pthread_mutex_t my_lock; if (pthread_mutex_init(&my_lock, NULL)!=0) perror( No puedo inicializar my_lock ); 4
3 Funciones para mutex (III) pthread_mutex_destroy: destruye la variable mutex int pthread_mutex_destroy (pthread_mutex_t *mutex); El mutex no se destruye hasta que está completamente vacío (no hay threads en espera) Devuelve 0 si se ha podido liberar el mutex. 5 Funciones para mutex (III) pthread_mutex_lock: operación P de semáforos Código de la sección de entrada que protege la sección crítica Si el candado está cerrado, el thread que la invoca se suspende hasta que el candado quede libre Devuelve 0 si se ha podido bloquear el mutex. int pthread_mutex_lock (pthread_mutex_t *mutex); pthread_mutex_trylock: igual que pthread_mutex_lock pero no bloquea al proceso llamante si el candado está ocupado Devuelve 0 si se ha podido bloquear el mutex. int pthread_mutex_trylock (pthread_mutex_t *mutex); 6
4 Funciones para mutex (IV) pthread_mutex_unlock: operación V de semáforos Libera el candado cuando un thread termina su sección crítica Si hay algún thread suspendido en la cola del candado, despierta al primero. Devuelve 0 si se ha podido desbloquear el mutex. int pthread_mutex_unlock (pthread_mutex_t *mutex); Ejemplo #include<pthread.h> pthread_mutex_t my_lock; pthread_mutex_init(&mylock, NULL); pthread_mutex_lock(&my_lock); /* Sección crítica */ pthread_mutex_unlock(&my_lock); 7 EJEMPLO: Productor Consumidor :compilar con librerías: lposix4 -lpthread :compilar en linux con librerías: lrt -lpthread 8
5 // Problema productor - consumidor type item=; var buffer:array[0..n-1] of item entrada, salida: 0..n-1; contador: 0..n entrada=0; salida=0; contador=0; function productor; repeat // produce un item en la variable nuevo while contador==n do no-op buffer[entrada]=nuevo; entrada=(entrada+1)mod n; contador=contador+1; until false end productor Entrada Buffer Salida function consumidor; repeat until false end consumidor while contador==0 do no-op nuevo=buffer[salida]; salida=(salida+1)mod n; contador=contador-1; // consume el item almacenado en nuevo 9 Ejemplo Mutex #define BUFSIZE 8 static int buffer[bufsize] static int entrada = 0; static int salida = 0; Static int contador =0; static pthread_mutex_t candado = PTHREAD_MUTEX_INITIALIZER; //Obtener el siguiente elemento del buffer y colocarlo en *itemp void get_item (int *itemp) pthread_mutex_lock(&candado); contador=contador-1; *itemp = buffer[salida]; salida = (salida + 1) % BUFSIZE; pthread_mutex_unlock(&candado); return; 10
6 Ejemplo Mutex (cont.) // Colocar un elemento en el buffer void put_item(int item) pthread_mutex_lock(&candado); contador=contador+1; buffer[entrada] = item; entrada = (entrada + 1) % BUFSIZE; pthread_mutex_unlock(&candado); return; 11 EJEMPLO: Uso de mutex en threads :compilar con librerías: lposix4 -lpthread :compilar en linux con librerías: lrt -lpthread 12
7 /* Programa que muestra el empleo de mutex con threads */ /* Compilar con: gcc -o mutexth mutexth.c -lpthread -lposix4 */ #include <stdio.h> #include <stdlib.h> #include <sched.h> /* Para la función sched_yield() */ #define MAXLONG 100 /* Prototipos de funciones que ejecutan los threads */ void *func1 (void*); void *func2 (void*); /* Declaración de los threads */ pthread_t thread1, thread2; /* Declaración del objeto atributo */ pthread_attr_t attr; /* Declaración del mutex */ pthread_mutex_t exmut; 13 /* Definición de la función func1 */ void *func1 (void *arg) char buffer[maxlong]; char *c; sprintf (buffer, "Soy el thread 1 y estoy escribiendo un mensaje en pantalla"); c = buffer; /* Sección de entrada: operación P(S) */ pthread_mutex_lock (&exmut); /* Sección crítica: Escritura en pantalla */ while (*c!= '\0') fputc (*c, stdout); c++; /* Forzamos la expulsión de la CPU con sched_yield */ sched_yield(); fputc('\n', stdout); /* Fin de la sección crítica*/ /* Sección de salida: operación V(S) */ pthread_mutex_unlock (&exmut); pthread_exit (NULL); 14
8 void *func2 (void *arg) char buffer[maxlong]; char *d; sprintf (buffer, "Soy el thread 2 y estoy escribiendo un mensaje en pantalla"); d = buffer; /* Sección de entrada: operación P(S) */ pthread_mutex_lock (&exmut); /* Sección crítica: Escritura en pantalla */ while (*d!= '\0') fputc (*d, stdout); d++; /* Forzamos la expulsión de la CPU con sched_yield */ sched_yield(); fputc('\n', stdout); /* Fin de la sección crítica*/ /* Sección de salida: operación V(S) */ pthread_mutex_unlock (&exmut); pthread_exit (NULL); 15 int main (int argc, char *argv[]) /* Inicialización del objeto atributo */ pthread_attr_init (&attr); /* Inicialización del mutex */ pthread_mutex_init (&exmut, NULL); printf ("Soy la función main y voy a lanzar los dos threads \n"); pthread_create (&thread1, &attr, func1, NULL); pthread_create (&thread2, &attr, func2, NULL); printf ("Soy main: he lanzado los threads y termino \n"); pthread_exit (NULL); 16
9 Ejemplo: Secuenciación de Tareas Con mutex Sin mutex 17 Sincronización de Threads Variables Condicionales 18
10 Variables Condicionales Permiten manejar el acceso a secciones críticas múltiples (anidadas) evitando el interbloqueo. Ejemplo: La tarea 1 accede a una sección crítica pero para ejecutarla precisa un dato adicional producido por otra tarea 2 La tarea 2 para generar el dato precisa acceder a la misma sección crítica por lo que se queda bloqueado. Funcionamiento: Tienen asociado un mutex que controla el acceso a la sección crítica Adicionalmente y de forma atómica permiten comprobar el estado de una variable (variable condicional) Si el valor no es válido (dato no disponible) se desbloquea de forma atómica el mutex y el Thread se añade a la cola de espera. La variable condicional tiene dos estados: Señalizada (unlock), No Señalizada (lock). 19 Variables Condicionales Funciones manejo variables condicionales int pthread_cond_init (pthread_cond_t *cond, pthread_condattr_t *attr); int pthread_cond_destroy (pthread_cond_t *cond); int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex); int pthread_cond_signal (pthread_cond_t *cond); pthread_cond_wait : El mutex debe estar previamente bloqueado (sección crítica) Si la variable condicional está Señalizada el thread continua con la sección crítica (el estado de la var. condicional se inicializa (lock)) Si la variable condicional no está Señalizada desbloquea el mutex y coloca al thread en la cola de espera pthread_cond_signal: Desbloquea la variable condicional: despierta threads suspendidos e intentan bloquear el mutex 21
11 EJEMPLO Variables Condicionales: Productor Consumidor :compilar con librerías: lposix4 -lpthread :compilar en linux con librerías: lrt -lpthread 22 // Problema productor - consumidor type item=; var buffer:array[0..n-1] of item entrada, salida: 0..n-1; contador: 0..n entrada=0; salida=0; contador=0; function productor; repeat // produce un item en la variable nuevo while contador==n do no-op buffer[entrada]=nuevo; entrada=(entrada+1)mod n; contador=contador+1; until false end productor Entrada Buffer Salida function consumidor; repeat until false end consumidor while contador==0 do no-op nuevo=buffer[salida]; salida=(salida+1)mod n; contador=contador-1; // consume el item almacenado en nuevo 23
12 Ejemplo Mutex+Var. Condicionales #define BUFSIZE 8 static int buffer[bufsize] static int entrada = 0; static int salida = 0; Static int contador =0; static pthread_mutex_t candado; static pthread_cond_t producido; static pthread_cond_t consumido; pthread_mutex_init(&candado, NULL); pthread_cond_init(&producido, NULL); pthread_cond_init(&consumido, NULL); // 24 Ejemplo Mutex +V.C. (cont.) //Obtener el siguiente elemento del buffer y colocarlo en *itemp void get_item (int *itemp) pthread_mutex_lock(&candado); while (contador == 0 ) /* si buffer VACIO */ pthread_cond_wait(&producido, & candado); // espera contador=contador-1; *itemp = buffer[salida]; salida = (salida + 1) % BUFSIZE; pthread_cond_signal(&consumido); //señaliza la extracción de datos pthread_mutex_unlock(&candado); return; 25
13 Ejemplo Mutex +V.C. (cont.) // Colocar un elemento en el buffer void put_item(int item) pthread_mutex_lock(&candado); while (contador == BUFSIZE ) /* si buffer LLENO */ pthread_cond_wait(&consumido, & candado); // espera contador=contador+1; buffer[entrada] = item; entrada = (entrada + 1) % BUFSIZE; pthread_cond_signal(&producido); //señaliza la presencia de datos pthread_mutex_unlock(&candado); return; 26
Sistemas Operativos Práctica 4
Sistemas Operativos Práctica 4 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Implementación de monitores POSIX
Implementación de monitores POSIX Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Programación concurrente: Problemática Presencia de condiciones de
Programación de Sistemas de Tiempo Real
Tema 3 Programación de Sistemas de Tiempo Real Los Sistemas Informáticos más complejos que se emplean para la programación de Tiempo Real suelen compaginar tareas críticas de control, con tareas acríticas
Tema 3. Concurrencia entre procesos
Tema 3. SO Índice Procesamiento concurrente El problema de la sección crítica Semáforos Mutex y variables de condición Señales Paso de mensajes Monitores Mecanismos de concurrencia en sistemas Unix Mecanismos
Tema 4 El paradigma cliente-servidor
Tema 4 El paradigma cliente-servidor F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Práctica 8: Barreras
Arquitectura y Tecnología de Computadores 14 de febrero de 2014 Objetivos Aprender a utilizar las variables condición y las barreras de la biblioteca Pthreads. Diseñar e implementar una barrera: Barrera
Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Redes I CI-4815 Trimestre Septiembre Diciembre 2013
Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Redes I CI-4815 Trimestre Septiembre Diciembre 2013 Proyecto I Autores: Lairon Acosta. Carnet: 09-10927 Jueves
Tostadores y POSIX. 1. Introducción
Tostadores y POSIX Michael González Harbour 1 ([email protected]) Departamento de Electrónica y Computadores, Universidad de Cantabria 39005 Santander, SPAIN C. Douglass Locke ([email protected]) Lockheed
Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 2 : entorno programación linux Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Francisco J. Santana 1 Programación
SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS
SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS 1. Con las tres llamadas create, suspend, y resume, la estructura del programa sería la siguiente: process recoger;
Esquema de un programa en C: bloques básicos
Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,
07 << Acceso en exclusiva al recurso compartido >>
Sistemas Operativos 4º Semestre. Grados II y MI Cuarto Parcial. Sistema de Ficheros. 2 de Junio de 2014. Dispone de 50 minutos. Publicación de notas el Jueves 5 de Junio 2014. Revisión el Viernes 6 de
Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C
Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS Departamento de Ciencias de la Computación e IA Subprogramas en C Objetivo Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo
Mensajes. (versión preliminar)
Mensajes (versión preliminar) Ejemplo: productor/consumidor con buffer de tamaño 0 void produce(item *p_it); void consume(item *p_it); int nmain() { ntask cons= nemittask(consproc); ntask prod= nemittask(prodproc,
Control por Computador
Control por Computador Ignacio Alvarez García Octubre - 2011 Indice Introducción control de procesos por computador Las matemáticas del control Programación del lazo de control Programación en lenguaje
PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores
PROGRAMACIÓN CONCURRENTE Tema 5 Monitores 1 Indice Definición de los monitores Sincronización condicional usando monitores Algunos problemas con monitores 2 Problemas de las regiones críticas condicionales
Apuntadores (Punteros)
Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable
Comunicación y sincronización de procesos
Sistemas Operativos I Tema 4 Comunicación y sincronización de procesos Equipo de Sistemas Operativos DISCA / DSIC UPV Comunicación y sincronización de procesos Objetivos Presentar dos alternativas básicas
Taller de Sistemas Operativos Introducción
Taller de Sistemas Operativos Introducción Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// Conceptos generales 2 Proceso stdin Descriptor Flujo (FILE*) 0 stdout 1 Proceso
Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida
Prueba de Laboratorio APELLIDOS: NOMBRE: GRUPO DE LABORATORIO: Indicaciones: No se permiten libros, apuntes ni teléfonos móviles. Cuando tenga una solución al ejercicio muéstrela al profesor (compilación
Fundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Se guardan en archivos con extencion c y los cabezales con extension h
Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767
Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia
Concurrencia: deberes Concurrencia: Exclusión Mutua y Sincronización Capítulo 5 Comunicación entre procesos Compartir recursos Sincronización de múltiples procesos Asignación del tiempo de procesador Concurrencia
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
El lenguaje de Programación C. Fernando J. Pereda <[email protected]>
El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por
Objective C (Desarrollo con Apple)
1 Objective C (Desarrollo con Apple) para programación en Iphone SDK: Similitudes y Diferencias entre Objective C con C/C++ y Java Dr. Moisés Alencastre Miranda, [email protected] 2 Introducción al
Programación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 11 Nombre: Manejo de archivos Contextualización En los lenguajes de programación estructurada como C, que carecían de una conexión a base
RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Curso LINUX. AREA 1: Entornos de programación
Curso LINUX AREA 1: Entornos de programación Entornos de programación Unix / Linux dispone de todas las herramientas necesarias como línea de comando Pero también dispone de entornos integrados Son front-ends
Programación en C. (Segunda Parte) DATSI, FI, UPM José M. Peña. [email protected]. Programación en C
(Segunda Parte) DATSI, FI, UPM José M. Peña [email protected] 1 Índice Estructura de un programa C. Variables básicas. Operaciones aritméticas. Sentencias de control. Arrays y Strings. Funciones. Estructuras
SOLUCION EXAMEN junio 2006
SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los
2.2 Nombres, Ligado y Ámbito
2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el
Procesos e Hilos en C
Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.
Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.
Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea
Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Sistemas Operativos I Manual de prácticas
Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 3: Procesos POSIX ANTES DE EMPEZAR...... 2 PRÁCTICA 3: PROCESOS POSIX... 2 CREACIÓN DE PROCESOS MEDIANTE FORK...
Instituto Politécnico Nacional
Instituto Politécnico Nacional Secretaria Académica Dirección de Estudios Profesionales Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan Ingeniería en Comunicaciones y Electrónica Academia
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE II.3 Sincronización basada en memoria compartida: Semáforos J.M. Drake 1 Procesos concurrentes y memoria compartida. Si los diferentes procesos de un programa concurrente tienen
El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */
Principios de Programación El lenguaje C 1. Variables locales y globales 1.1. Variables locales Las funciones permiten al programador modularizar un programa. Todas las variables declaradas en las definiciones
Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.
Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Anjuta es un entorno de desarrollo de C que podemos encontrar en cualquier distribución de GNU/Linux. Si nuestra distribución no dispone de ella,
Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez
Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez 1. PUNTEROS 2. MEMORIA DINÁMICA 2 1. PUNTEROS 3 Qué es un puntero? Un tipo de variable cuyo valor es la dirección de memoria de otra variable.
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 1. [PROCESOS] a) Considerar el siguiente código: void main() { int j=10; pid_t pid; for (int i=0; i
Guía rápida para gestionar el puerto paralelo del PC
Guía rápida para gestionar el puerto paralelo del PC Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/guia_rapida_pp.pdf José Ignacio Suárez Marcelo Universidad de Extremadura Escuela
Sistemas Operativos Temas 4, 5 y 6. Jorge García Duque Despacho: B-202 Tutorías: Lunes 16:00-18:00 y Martes 16:00-20:00
Sistemas Operativos Temas 4, 5 y 6 Jorge García Duque Despacho: B-202 Tutorías: Lunes 16:00-18:00 y Martes 16:00-20:00 Índice Tema 4: Herramientas de Sincronización de Alto Nivel. Regiones Críticas. Monitores.
2. Se puede aplicar a la representación intermedia un optimizador de código independiente de la máquina.
Traductores, Compiladores e Intérpretes 1 Tema 7 Generación de Código En el modelo de análisis y síntesis de un compilador, la etapa inicial traduce un programa fuente a una representación intermedia a
Receta general para resolver problemas de sincronización con semáforos
Receta general para resolver problemas de sincronización con semáforos La primera vez que te enfrentas a la tarea de implementar una solución a un problema de sincronización entre procesos, es normal que
Reglas básicas de la programación en lenguaje C
0. Introducción Reglas básicas de la programación en lenguaje C ISO - SO Departament d'arquitectura de Computadors Universitat Politècnica de Catalunya C es un lenguaje de programación de propósito general.
Tema 3. Monitores Programación Concurrente
Tema 3. Monitores Programación Concurrente Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos 1. Concepto de Monitor 1.1. Fundamento teórico de los monitores 1.2. Sintaxis de
LENGUAJE. Tema 1 - Introducción
LENGUAJE Tema 1 - Introducción HISTORIA DEL LENGUAJE C El lenguaje de programación C fue creado por Dennis Ritchie cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseño del
Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria
Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de
Concurrencia: Exclusión mutua y Sincronización
Concurrencia: Exclusión mutua y Sincronización Prof. Carlos Figueira Basado en materiales de Yudith Cardinale (USB) Williams Stallings, Eugene Styer Concurrencia Múltiples aplicaciones Aplicaciones estructuradas
Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid
Manejo de Señales Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Señales Concepto Evento que interrumpe la ejecución normal de un proceso La acción por defecto suele
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Mensajes. Interbloqueo
CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya ([email protected]) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose
1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)
1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los
Concurrencia. Primitivas IPC con bloqueo
Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región
Introducción a las sentencias de control
INSTRUCCIONES DE CONTROL CONTENIDOS 1. Introducción a las sentencias de control. 2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH. 3. Instrucciones o sentencias repetitivas o iterativas:
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una
TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
Contenido. Capítulo 1. Introducción a lenguaje C 1
Contenido Capítulo 1. Introducción a lenguaje C 1 Introducción... 2 Qué es un lenguaje de programación?... 2 Tipos de lenguajes de programación... 2 Introducción a lenguaje C... 2 Historia de lenguaje
Arquitectura de Computadores: Exámenes y Controles
2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado
MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar
MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
EDITRAN/TR. Windows/Unix. Manual de referencia
EDITRAN/TR Windows/Unix Manual de referencia INDRA 30 de octubre de 2014 ÍNDICE 1. INTRODUCCIÓN.... 1-1 2. INTERFAZ DE PROGRAMACIÓN.... 2-1 2.1. DESCRIPCION... 2-1 2.2. FUNCIONES DE ENVIO Y RECEPCION...
TEMA 5 HILOS Y PLANIFICACIÓN
Objetivos TEMA 5 HILOS Y PLANIFICACIÓN!!Distinguir entre hilos y fibras!!describir las llamadas al sistema para gestionar hilos y fibras Estudio de un Sistema Operativo U. D. Sistemas DSIC!!Describir la
PROGRAMACIÓN EN JAVA
SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan
Examen Principios de Programación Febrero 2012
Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.
Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas
Sistemas Operativos I. Tema 3. Procesos. Equipo de Sistemas Operativos DISCA / DSIC UPV
Sistemas Operativos I Tema 3 Procesos Equipo de Sistemas Operativos DISCA / DSIC UPV Introducción Existen varias razones para permitir la ejecución concurrente de procesos: Compartir recursos físicos Compartir
Comunicación y Sincronización con Monitores Resumen del Tema
Notas de clase de Programación Concurrente Comunicación y Sincronización con Monitores Resumen del Tema Dpto de Lenguajes y Ciencias de la Computación Universidad de Málaga María del Mar Gallardo Melgarejo
Uso avanzado de punteros
Uso avanzado de punteros Mario Medina C. [email protected] Punteros Contienen direcciones de memoria Punteros a tipos de datos simples int, char, float, double Punteros a estructuras Punteros a vectores
Threads o Hilos. Marco Besteiro y Miguel Rodríguez
En.NET, cuando se lanza una aplicación se crea un proceso y dentro de este proceso un hilo de ejecución o thread para el método Main. Es posible, a la vez que se ejecuta el método Main, que la aplicación
Introducción a C++ y Code::Blocks
Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete
Operadores de comparación
Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (
CAPÍTULO 8. Comunicación y sincronización basada en variables compartidas
CAPÍTULO 8. Comunicación y sincronización basada en variables compartidas 8 Comunicación y sincronización basada en variables compartidas...2 8.1 Exclusión mutua y condición de sincronización....2 8.2
Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
Tema 2: Clase y objetos en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle
Tema 2: Clase y objetos en Java Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle Índice Introducción Clases Objetos Semántica referencia Métodos y mensajes Creación de objetos Modelo
Generador de analizadores sintácticos BISON
Generador de analizadores sintácticos BISON PROCESADORES DE LENGUAJES 4 o Informática http://ccia.ei.uvigo.es/docencia/pl noviembre-2008 2008 ccia PL 1. Introducción Traduce la especificación de una gramática
-> Todo socket viene definido por dos características fundamentales:
LOS SOCKETS. Los sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten que un proceso hable (emita o reciba información) con otro proceso incluso estando estos procesos
Programación de SM de Memoria Compartida
1 Programación de SM de Memoria Compartida Noelia Díaz Gracia UO188772 Lucas Díaz Sanzo UO189670 Aida Fernández Méndez UO16559 Arquitectura y Tecnología de Computadores Escuela de Ingeniería Informática
TEMA 5: Control de la Concurrencia en Java (API Estándar)
TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos
PROGRAMACION CONCURRENTE Y DISTRIBUIDA. II.5 Sincronización basada en memoria compartida: Monitores
PROGRAMACION CONCURRENTE Y DISTRIBUIDA II.5 Sincronización basada en memoria compartida: Monitores J.M. Drake 1 Monitor Son módulos que encierran los recursos o variables compartidas como componentes internos
Tema 3: Concurrencia de procesos
Tema 3: Concurrencia de procesos Yolanda Blanco Fernández [email protected] Concurrencia, Tiempo Real y Paralelismo Concurrencia: Convivencia de un conjunto de procesos en un mismo ordenador. Sistemas
Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:
(3 ptos) Memoria Compartida y Semáforos R/W 1. Objetivo En esta práctica se pretende crear una librería que dé la funcionalidad de un semáforo para resolver problemas con múltiples lectores y escritores
CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida
INFORMÁTICA II 1 CONTENIDO 2 1 Programación orientada a objetos - POO 2 Clases 3 Constructores y destructores 4 Definiciones 5 Entrada y salida PROGRAMACIÓN ORIENTADA A OBJETOS Los lenguajes de programación
Paso de mensajes. Lecturas: Burns & Wellings, Cap.??? Transparencias y apuntes de la asignatura. Filosofía cliente-servidor.
Paso de mensajes Lecturas: Burns & Wellings, Cap.??? Transparencias y apuntes de la asignatura Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la Creative Commons
TEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
Laboratorio de Arquitectura de Redes. Punteros en lenguaje C
Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación
Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE
Contenidos 1. Introducción 2. El operador NEW 3. El operador DELETE 1 Introducción Hasta ahora hemos visto que cada vez que queremos usar una variable debemos reservarle un lugar de la memoria al comenzar
TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN
TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN 4.1 Definiciones y palabras reservadas básicas del C El lenguaje C++ está compuesto por: 32 palabras clave (estándar ANSI), comunes a todos los compiladores de
CURSO de C++ Ignacio López
CURSO de C++ Ignacio López Introducción al lenguaje C++ Visión General Objetivos del Curso C++ Conceptos básicos de la programación orientada a objetos (OOP) Visión General I Curso de C++ Introducción
Programación Concurrente en Java
Programación Concurrente en Java Curso 2006-2007 9/2/2007 Prog. Distribuida Bajo Internet Qué es la Programación Concurrente? Diseño basado en varias actividades independientes Conceptualmente se ejecutan
