Capítulo 5 Comunicación y sincronización de procesos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Capítulo 5 Comunicación y sincronización de procesos"

Transcripción

1 Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Contenido Procesos concurrentes. Problemas clásicos de comunicación y sincronización. Mecanismos de comunicación y sincronización. Paso de mensajes. Aspectos de implementación Interbloqueos. Servicios POSIX Servicios Win32 Sistemas operativos: una visión aplicada 1 J. Carretero, F. García, P. de Miguel, F. Pérez 1

2 Procesos concurrentes Modelos Multiprogramación en un único procesador Multiprocesador Multicomputador (proceso distribuido) Razones Compartir recursos físicos Compartir recursos lógicos Acelerar los cálculos Modularidad Comodidad Sistemas operativos: una visión aplicada 2 J. Carretero, F. García, P. de Miguel, F. Pérez Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión aplicada 3 J. Carretero, F. García, P. de Miguel, F. Pérez 2

3 Ejecución en un sistema multiprocesador Proceso A Proceso B Proceso C CPU 1 CPU 2 Proceso D Tiempo Sistemas operativos: una visión aplicada 4 J. Carretero, F. García, P. de Miguel, F. Pérez Tipos de procesos concurrentes Tipos de procesos Independientes Cooperantes Interacción entre procesos Compiten por recursos Comparten recursos Sistemas operativos: una visión aplicada 5 J. Carretero, F. García, P. de Miguel, F. Pérez 3

4 Problemas clásicos de comunicación y sincronización El problema de la sección crítica El problema del productor-consumidor El problema de los lectores-escritores Comunicación cliente-servidor Sistemas operativos: una visión aplicada 6 J. Carretero, F. García, P. de Miguel, F. Pérez Problema de la sección crítica Sistema compuesto por n procesos Cada uno tiene un fragmento de código: sección crítica Sólo uno de los procesos en cada instante puede ejecutar en la sección crítica Cuando un proceso está ejecutando en la sección crítica, ningún otro puede hacerlo Sistemas operativos: una visión aplicada 7 J. Carretero, F. García, P. de Miguel, F. Pérez 4

5 Ejemplo 1 Proceso ligero principal ni = 1 nf = 50 S1 = ni =51 nf = 100 S2 = suma_total = S1 + S2 Sistemas operativos: una visión aplicada 8 J. Carretero, F. García, P. de Miguel, F. Pérez Ejemplo 1 Calcula la suma de los N primeros números utilizando procesos ligeros. int suma_total = 0; void suma_parcial(int ni, int nf) { int j = 0; int suma_parcial = 0; for (j = ni; j <= nf; j++) suma_parcial = suma_parcial + j; suma_total = suma_total + suma_parcial; pthread_exit(0); Si varios procesos ejecutan concurrentemente este código se puede obtener un resultado incorrecto. Solución: secciones críticas Sistemas operativos: una visión aplicada 9 J. Carretero, F. García, P. de Miguel, F. Pérez 5

6 Ejemplo con sección crítica void suma_parcial(int ni, int nf) { int j = 0; int suma_parcial = 0; for (j = ni; j <= nf; j++) suma_parcial = suma_parcial + j; <Entrada en la sección crítica> suma_total = suma_total + suma_parcial; <Salida de la sección crítica> pthread_exit(0); Sistemas operativos: una visión aplicada 10 J. Carretero, F. García, P. de Miguel, F. Pérez Ejemplo 2 void ingresar(char *cuenta, int cantidad) { int saldo, fd; fd = open(cuenta, O_RDWR); read(fd, &saldo, sizeof(int)); saldo = saldo + cantidad; lseek(fd, 0, SEEK_SET); write(fd, &saldo, sizeof(int)); close(fd); return; Si dos procesos ejecutan concurrentemente este código se puede perder algún ingreso. Solución: secciones críticas Sistemas operativos: una visión aplicada 11 J. Carretero, F. García, P. de Miguel, F. Pérez 6

7 Ejemplo 2 con sección crítica void ingresar(char *cuenta, int cantidad) { int saldo, fd; fd = open(cuenta, O_RDWR); <Entrada en la sección crítica> read(fd, &saldo, sizeof(int)); saldo = saldo + cantidad; lseek(fd, 0, SEEK_SET); write(fd, &saldo, sizeof(int)); <Salida de la sección crítica> close(fd); return; Sistemas operativos: una visión aplicada 12 J. Carretero, F. García, P. de Miguel, F. Pérez Ejemplo 3 Procesador 1 Procesador 2 PID = 500 Lee PID Registro o posición de memoria PID = 500 Incrementa y asigna PID Lee PID PID = 500 PID = 501 Escribe PID PID = 501 Incrementa y asigna PID PID = 501 PID = 501 Escribe PID Sistemas operativos: una visión aplicada 13 J. Carretero, F. García, P. de Miguel, F. Pérez 7

8 Solución al problema de la sección crítica Estructura general de cualquier mecanismo utilizado para resolver el problema de la sección crítica: Entrada en la sección crítica Código de la sección crítica Salida de la sección crítica Requisitos que debe ofrecer cualquier solución para resolver el problema de la sección crítica: Exclusión mutua Progreso Espera limitada Sistemas operativos: una visión aplicada 14 J. Carretero, F. García, P. de Miguel, F. Pérez Problema del productor-consumidor Proceso Productor Proceso Consumidor Flujo de datos Mecanismo de comunicación Sistemas operativos: una visión aplicada 15 J. Carretero, F. García, P. de Miguel, F. Pérez 8

9 El problema de los lectores-escritores Lector Lector Escritor Lector Escritor Recurso Sistemas operativos: una visión aplicada 16 J. Carretero, F. García, P. de Miguel, F. Pérez Comunicación cliente-servidor Computador Computador Petición Proceso cliente Proceso servidor S.O. Respuesta Sistemas operativos: una visión aplicada 17 J. Carretero, F. García, P. de Miguel, F. Pérez 9

10 Mecanismos de comunicación Archivos Tuberías (pipes, FIFOS) Variables en memoria compartida Paso de mensajes Sistemas operativos: una visión aplicada 18 J. Carretero, F. García, P. de Miguel, F. Pérez Mecanismos de Sincronización Construcciones de los lenguajes concurrentes (procesos ligeros) Servicios del sistema operativo: Señales (asincronismo) Tuberías (pipes, FIFOS) Semáforos Mutex y variables condicionales Paso de mensajes Las operaciones de sincronización deben ser atómicas Sistemas operativos: una visión aplicada 19 J. Carretero, F. García, P. de Miguel, F. Pérez 10

11 Tuberías (POSIX) Mecanismo de comunicación y sincronización Sin nombre: pipes Con nombre: FIFOS Sólo puede utilizarse entre los procesos hijos del proceso que creó el pipe int pipe(int fildes[2]); Identificación: dos descriptores de archivo Para lectura Para escritura Flujo de datos: unidireccional Mecanismo con capacidad de almacenamiento Sistemas operativos: una visión aplicada 20 J. Carretero, F. García, P. de Miguel, F. Pérez Comunicación unidireccional con tuberías write Proceso de Usuario Proceso de Usuario read SO pipe Flujo de datos Sistemas operativos: una visión aplicada 21 J. Carretero, F. García, P. de Miguel, F. Pérez 11

12 Comunicación bidireccional con tuberías write Proceso read write Proceso read de Usuario de Usuario SO pipe Flujo de datos pipe Flujo de datos Sistemas operativos: una visión aplicada 22 J. Carretero, F. García, P. de Miguel, F. Pérez Tuberías (II) read(fildes[0], buffer, n) Pipe vacío se bloquea el lector Pipe con p bytes Si p n devuelve n Si p < ndevuelve p Si pipe vacío y no hay escritores devuelve 0 write(fildes[1], buffer, n) Pipe lleno se bloquea el escritor Si no hay lectores se recibe la señal SIGPIPE Lecturas y escrituras atómicas (cuidado con tamaños grandes) Sistemas operativos: una visión aplicada 23 J. Carretero, F. García, P. de Miguel, F. Pérez 12

13 Secciones críticas con tuberías void main(void) { int fildes[2]; /* pipe para sincronizar */ char c; /* caracter para sincronizar */ pipe(fildes); write(fildes[1], &c, 1); /* necesario para entrar en la seccion critica la primera vez */ if (fork() == 0) { /* proceso hijo */ for(;;) { read(fildes[0], &c, 1); /* entrada seccion critica */ < Seccion critica > write(fildes[1], &c, 1); /* salida seccion critica */ Sistemas operativos: una visión aplicada 24 J. Carretero, F. García, P. de Miguel, F. Pérez Secciones críticas con tuberías (II) else { /* proceso padre */ for(;;) { read(fildes[0], &c, 1); /* entrada seccion critica */ < seccion critica > write(fildes[1], &c, 1); /* salida seccion critica */ Sistemas operativos: una visión aplicada 25 J. Carretero, F. García, P. de Miguel, F. Pérez 13

14 Productor-consumidor con tuberías void main(void) { int fildes[2]; /* pipe para comunicar y sincronizar */ int dato_p[4]; /* datos a producir */ int dato_c; /* dato a consumir */ pipe(fildes); if (fork() == 0) { /* proceso hijo: productor */ for(;;) { < producir dato_p, escribe 4 enteros * write(fildes[1], dato_p, 4*sizeof(int)); Sistemas operativos: una visión aplicada 26 J. Carretero, F. García, P. de Miguel, F. Pérez Productor-consumidor con tuberías (II) else { /* proceso padre: consumidor */ for(;;) { read(fildes[0], &dato, sizeof(int)); /* consumir dato, lee un entero */ Proceso hijo Pipe Proceso padre Sistemas operativos: una visión aplicada 27 J. Carretero, F. García, P. de Miguel, F. Pérez 14

15 Ejecución de mandatos con tuberías /* programa que ejecuta el mandato ``ls wc'' */ void main(void) { int fd[2]; pid_t pid; if (pipe(fd) < 0) { perror(``pipe''); exit(-1); pid = fork(); switch(pid) { case -1: /* error */ perror(``fork''); exit(-1); ls pipe wc Sistemas operativos: una visión aplicada 28 J. Carretero, F. García, P. de Miguel, F. Pérez Ejecución de mandatos con tuberías (II) case 0: /* proceso hijo ejecuta ``ls'' */ close(fd[0]); /* cierra el pipe de lectura */ close(stdout_fileno); /* cierra la salida estandar */ dup(fd[1]); close(fd[1]); execlp(``ls'',``ls'',null); perror(``execlp''); exit(-1); default: /* proceso padre ejecuta ``wc'' */ close(fd[1]); /* cierra el pipe de escritura */ close(stdin_fileno); /* cierra la entrada estandar */ dup(fd[0]); close(fd[0]); execlp(``wc'',``wc'',null); perror(``execlp''); Sistemas operativos: una visión aplicada 29 J. Carretero, F. García, P. de Miguel, F. Pérez 15

16 Ejecución de mandatos con tuberías (III) Proceso Proceso STDIN STDOUT pipe(fd) STDIN STDOUT fd[0] fd[1] pipe fork() Proceso Proceso hijo STDIN STDOUT fd[0] fd[1] pipe STDIN STDOUT fd[0] fd[1] redirección Proceso Proceso hijo STDIN STDOUT pipe STDIN STDOUT exec Proceso Proceso hijo STDIN STDOUT pipe STDIN STDOUT ls Sistemas operativos: una visión aplicada 30 J. Carretero, F. García, P. de Miguel, F. Pérez wc Tuberías con nombre en POSIX (FIFOS) Igual que los pipes Mecanismo de comunicación y sincronización con nombre Misma máquina Servicios int mkfifo(char *name, mode_t mode); Crea un FIFO con nombre name int open(char *name, int flag); Abre un FIFO (para lectura, escritura o ambas) Bloquea hasta que haya algún proceso en el otro extremo Lectura y escritura mediante read() y write() Igual semántica que los pipes Cierre de un FIFO mediante close() Borrado de un FIFO mediante unlink() Sistemas operativos: una visión aplicada 31 J. Carretero, F. García, P. de Miguel, F. Pérez 16

17 Semáforos Mecanismo de sincronización Misma máquina Objeto con un valor entero Dos operaciones atómicas wait signal Sistemas operativos: una visión aplicada 32 J. Carretero, F. García, P. de Miguel, F. Pérez Operaciones sobre semáforos wait(s) { s = s - 1; if (s < 0) { <Bloquear al proceso> signal(s) { s = s + 1; if (s <= 0) <Desbloquear a un proceso bloqueado por la operacion wait> Sistemas operativos: una visión aplicada 33 J. Carretero, F. García, P. de Miguel, F. Pérez 17

18 Secciones críticas con semáforos wait(s); /* entrada en la seccion critica */ < seccion critica > signal(s); /* salida de la seccion critica */ El semáforo debe tener valor inicial 1 Valor del semáforo (s) P 0 P 1 P wait(s) wait(s) wait(s) -1 signal(s) desbloquea 0 signal(s) desbloquea Ejecutando código de la sección crítica 1 signal(s) Proceso bloqueado en el semáforo Sistemas operativos: una visión aplicada 34 J. Carretero, F. García, P. de Miguel, F. Pérez Semáforos POSIX int sem_init(sem_t *sem, int shared, int val); Inicializa un semáforo sin nombre int sem_destroy(sem_t *sem); Destruye un semáforo sin nombre sem_t *sem_open(char *name, int flag, mode_t mode, int val); Abre (crea) un semáforo con nombre. int sem_close(sem_t *sem); Cierra un semáforo con nombre. int sem_unlink(char *name); Borra un semáforo con nombre. int sem_wait(sem_t *sem); Realiza la operación wait sobre un semáforo. int sem_post(sem_t *sem); Realiza la operación signal sobre un semáforo. Sistemas operativos: una visión aplicada 35 J. Carretero, F. García, P. de Miguel, F. Pérez 18

19 Productor-consumidor con semáforos (buffer acotado y circular) Productor Consumidor Sistemas operativos: una visión aplicada 36 J. Carretero, F. García, P. de Miguel, F. Pérez Productor-consumidor con semáforos (II) #define MAX_BUFFER 1024 /* tamanio del buffer */ #define DATOS_A_PRODUCIR /* datos a producir */ sem_t elementos; /* elementos en el buffer */ sem_t huecos; /* huecos en el buffer */ int buffer[max_buffer]; /* buffer comun */ void main(void) { pthread_t th1, th2; /* identificadores de threads */ /* inicializar los semaforos */ sem_init(&elementos, 0, 0); sem_init(&huecos, 0, MAX_BUFFER); Sistemas operativos: una visión aplicada 37 J. Carretero, F. García, P. de Miguel, F. Pérez 19

20 Productor-consumidor con semáforos (III) /* crear los procesos ligeros */ pthread_create(&th1, NULL, Productor, NULL); pthread_create(&th2, NULL, Consumidor, NULL); /* esperar su finalizacion */ pthread_join(th1, NULL); pthread_join(th2, NULL); sem_destroy(&huecos); sem_destroy(&elementos); exit(0); Sistemas operativos: una visión aplicada 38 J. Carretero, F. García, P. de Miguel, F. Pérez Productor-consumidor con semáforos (IV) void Productor(void) /* codigo del productor */ { int pos = 0; /* posicion dentro del buffer */ int dato; /* dato a producir */ int i; for(i=0; i < DATOS_A_PRODUCIR; i++ ) { dato = i; /* producir dato */ sem_wait(&huecos); /* un hueco menos */ buffer[pos] = i; pos = (pos + 1) % MAX_BUFFER; sem_post(&elementos); /* un elemento mas */ pthread_exit(0); Sistemas operativos: una visión aplicada 39 J. Carretero, F. García, P. de Miguel, F. Pérez 20

21 Productor-consumidor con semáforos (V) void Consumidor(void) /* codigo del Consumidor */ { int pos = 0; int dato; int i; for(i=0; i < DATOS_A_PRODUCIR; i++ ) { sem_wait(&elementos); /* un elemento menos */ dato = buffer[pos]; pos = (pos + 1) % MAX_BUFFER; sem_post(&huecos); /* un hueco mas */ /* consumir dato */ pthread_exit(0); Sistemas operativos: una visión aplicada 40 J. Carretero, F. García, P. de Miguel, F. Pérez Lectores-escritores con semáforos int dato = 5; /* recurso */ int n_lectores = 0; /* numero de lectores */ sem_t sem_lec; /* controlar el acceso n_lectores */ sem_t mutex; /* controlar el acceso a dato */ void main(void) { pthread_t th1, th2, th3, th4; sem_init(&mutex, 0, 1); sem_init(&sem_lec, 0, 1); pthread_create(&th1, NULL, Lector, NULL); pthread_create(&th2, NULL, Escritor, NULL); pthread_create(&th3, NULL, Lector, NULL); pthread_create(&th4, NULL, Escritor, NULL); Sistemas operativos: una visión aplicada 41 J. Carretero, F. García, P. de Miguel, F. Pérez 21

22 Lectores-escritores con semáforos (II) pthread_join(th1, NULL); pthread_join(th2, NULL); pthread_join(th3, NULL); pthread_join(th4, NULL); /* cerrar todos los semaforos */ sem_destroy(&mutex); sem_destroy(&sem_lec); exit(0); Sistemas operativos: una visión aplicada 42 J. Carretero, F. García, P. de Miguel, F. Pérez Lectores-escritores con semáforos (III) /* codigo del lector */ void Lector(void) { /* codigo del lector */ sem_wait(&sem_lec); n_lectores = n_lectores + 1; if (n_lectores == 1) sem_wait(&mutex); sem_post(&sem_lec); printf(``%d\n'', dato); /* leer dato */ sem_wait(&sem_lec); n_lectores = n_lectores - 1; if (n_lectores == 0) sem_post(&mutex); sem_post(&sem_lec); pthread_exit(0); Sistemas operativos: una visión aplicada 43 J. Carretero, F. García, P. de Miguel, F. Pérez 22

23 Lectores-escritores con semáforos (IV) /* código del escritor */ void Escritor(void) { /* codigo del escritor */ sem_wait(&mutex); dato = dato + 2; /* modificar el recurso */ sem_post(&mutex); pthread_exit(0); Sistemas operativos: una visión aplicada 44 J. Carretero, F. García, P. de Miguel, F. Pérez Memoria compartida Proceso A Texto Datos var1 Proceso B Texto Datos var2 Pila 2 Segmento de memoria compartida Pila Declaración independiente de variables Sistemas operativos: una visión aplicada 45 J. Carretero, F. García, P. de Miguel, F. Pérez 23

24 Mutex Un mutex es un mecanismo de sincronización indicado para procesos ligeros. Es un semáforo binario con dos operaciones atómicas: lock(m) Intenta bloquear el mutex, si el mutex ya está bloqueado el proceso se suspende. unlock(m) Desbloquea el mutex, si existen procesos bloqueados en el mutex se desbloquea a uno. Sistemas operativos: una visión aplicada 46 J. Carretero, F. García, P. de Miguel, F. Pérez Secciones críticas con mutex lock(m); /* entrada en la seccion critica */ < seccion critica > unlock(s); /* salida de la seccion critica */ La operación unlock debe realizarla el proceso ligero que ejecutó lock Proceso ligero A Proceso ligero B lock mutex lock mutex Sección crítica unlock mutex obtiene mutex Proceso ligero ejecutando Proceso ligero bloqueado Punto de sincronización Sistemas operativos: una visión aplicada 47 J. Carretero, F. García, P. de Miguel, F. Pérez 24

25 Paso de mensajes Permite resolver: Exclusión mutua Sincronizar entre un proceso que recibe un mensaje y otro que lo envía Comunicación de datos entre espacios de memoria diferentes (mismo computador, diferentes computadores) Primitivas básicas: send(destino, mensaje) envía un mensaje al proceso destino receive(destino, mensaje) recibe un mensaje del proceso destino Múltiples soluciones Aspectos de diseño Tamaño del mensaje Flujo de datos (unidireccional, bidireccional) Nombrado Directo Indirecto (puertos, colas) Sincronización (síncrono, asíncrono) Almacenamiento Sistemas operativos: una visión aplicada 48 J. Carretero, F. García, P. de Miguel, F. Pérez Uso de colas y puertos Proceso cliente send Proceso cliente receive Proceso cliente send Proceso cliente Puerto mensaje mensaje Cola de mensajes Comunicación con colas de mensajes Comunicación con puertos Sistemas operativos: una visión aplicada 49 J. Carretero, F. García, P. de Miguel, F. Pérez 25

26 Colas de mensajes POSIX mqd_t mq_open(char *name, int flag, mode_t mode, mq_attr *attr); Crea una cola de mensajes con nombre y atributos attr: Número máximo de mensajes. Tamaño máximo del mensaje. Bloqueante, No bloqueante. int mq_close (mqd_t mqdes); Cierra una cola de mensajes. int mq_unlink(char *name); Borra una cola de mensajes. Sistemas operativos: una visión aplicada 50 J. Carretero, F. García, P. de Miguel, F. Pérez Colas de mensajes POSIX (II) int mq_send(mqd_t mqdes, char *msg, size_t len, int prio); Envía el mensaje msg de longitud len a la cola de mensajes mqdes con prioridad prio; Si la cola está llena el envío puede ser bloqueante o no. int mq_receive(mqd_t mqdes, char *msg, size_t len, int prio); Recibe un mensaje msg de longitud len de la cola de mensajes mqdes con prioridad prio; Recepción bloqueante o no. Sistemas operativos: una visión aplicada 51 J. Carretero, F. García, P. de Miguel, F. Pérez 26

27 Servidor multithread con colas de mensajes Proceso cliente Proceso cliente Cola del cliente petición Cola del cliente Proceso servidor petición respuesta Cola del servidor Creación del thread Creación del thread respuesta Thread que sirve la petición Thread que sirve la petición Sistemas operativos: una visión aplicada 52 J. Carretero, F. García, P. de Miguel, F. Pérez Servidor multithread con colas de mensajes (II) /* estructura de un mensaje */ struct mensaje { char buffer[1024]; /* datos a enviar */ char cliente[256]; /* cola del cliente */ ; /* mutex y variables condicionales para proteger la copia del mensaje */ pthread_mutex_t mutex_mensaje; int mensaje_no_copiado = TRUE; pthread_cond_t cond; void main(void){ mqd_t q_servidor; /* cola del servidor */ struct mensaje mess; /* mensaje a recibir */ struct mq_attr q_attr; /* atributos de la cola */ pthread_attr_t t_attr; /* atributos de los threads */ Sistemas operativos: una visión aplicada 53 J. Carretero, F. García, P. de Miguel, F. Pérez 27

28 Servidor multithread con colas de mensajes (II) attr.mq_maxmsg = 20; attr.mq_msgsize = sizeof(struct mensaje)); q_servidor = mq_open("servidor", O_CREAT O_RDONLY, 0700, &attr); pthread_mutex_init(&mutex_mensaje, NULL); pthread_cond_init(&cond, NULL); pthread_attr_init(&attr); pthread_attr_setscope(&attr,pthread_scope_system); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); Sistemas operativos: una visión aplicada 54 J. Carretero, F. García, P. de Miguel, F. Pérez Servidor multithread con colas de mensajes (III) while (TRUE) { mq_receive(q_servidor, &mess, sizeof(struct mensaje), 0); pthread_create(&thid, &attr, tratar_mensaje, &mess); /* se espera a que el thread copie el mensaje */ pthread_mutex_lock(&mutex_mensaje); while (mensaje_no_copiado) pthread_cond_wait(&cond, &mutex_mensaje); mensaje_no_copiado = TRUE; pthread_mutex_unlock(&mutex_mensaje); Sistemas operativos: una visión aplicada 55 J. Carretero, F. García, P. de Miguel, F. Pérez 28

29 Servidor multithread con colas de mensajes (IV) void tratar_mensaje(struct mensaje *mes) { struct mensaje mensaje_local; struct mqd_t q_cliente; /* cola del cliente */ struct mensaje respueta; /* mensaje de respuesta al cliente */ /* el thread copia el mensaje */ pthread_mutex_lock(&mutex_mensaje); memcpy((char *) &mensaje_local, (char *)&mes, sizeof(struct mensaje)); /* ya se puede despertar al servidor*/ pthread_mutex_lock(&mutex_mensaje); mensaje_no_copiado = FALSE; pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex_mensaje); Sistemas operativos: una visión aplicada 56 J. Carretero, F. García, P. de Miguel, F. Pérez Servidor multithread con colas de mensajes (V) /* ejecutar la petición del cliente */ /* y preparar respuesta */ /* responder al cliente a su cola */ q_cliente = mq_open(mensaje_local.nombre, O_WRONLY); mqsend(q_cliente, (char *) &respueta, sizeof(respuesta), 0); mq_clise(q_cliente); pthread_exit(0); Sistemas operativos: una visión aplicada 57 J. Carretero, F. García, P. de Miguel, F. Pérez 29

30 Ejemplo de código cliente /* estructura de un mensaje */ struct mensaje { char buffer[1024]; /* datos a enviar */ char cliente[256]; /* cola del cliente */ ; void main(void) { mqd_t q_servidor; /* cola del servidor */ mqd_t q_cliente; /* cola del cliente */ struct mq_attr q_attr; /* atributos de la cola */ struct mensaje peticion; /* peticion al servidor */ struct mensaje respuesta; /* respuesta del servidor */ attr.mq_maxmsg = 1; attr.mq_msgsize = sizeof(struct mensaje)); Sistemas operativos: una visión aplicada 58 J. Carretero, F. García, P. de Miguel, F. Pérez Ejemplo de código cliente (II) q_cliente = mq_open("cliente", O_CREAT O_RDONLY, 0700, 0); q_servidor = mq_open("servidor", O_WRONLY); /* preparar peticion */ mq_send(q_servidor, &petcicion, sizeof(struct mensaje), 0); /* esperar respuesta */ mq_receive(q_cliente, &respuesta, sizeof(struct mensaje), 0); mq_close(q_servidor); mq_close(q_cliente); mq_unlink("cliente"); exit(0); Sistemas operativos: una visión aplicada 59 J. Carretero, F. García, P. de Miguel, F. Pérez 30

31 Implementación de mecanismos de sincronización Espera activa: wait(s) { s = s 1; while (s < 0) ; signal(s) { s = s + 1; Espera pasiva wait(s) { s = s 1; if (s < 0) Bloquear al proceso; signal(s) { s = s + 1; if (s <= 0) Desbloquear a un proceso bloqueado en la operación wait; Sistemas operativos: una visión aplicada 60 J. Carretero, F. García, P. de Miguel, F. Pérez Implementación de la espera pasiva Operaciones para bloquear a un proceso en un semáforo Estado PID Tabla de procesos BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 BCP10 BCP11 BCP12 Bloq. Ejec Cola asociada al semáforo 7 (a) Estado PID Tabla de procesos BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 BCP10 BCP11 BCP12 Bloq. Bloq. Bloq Cola asociada al semáforo 7 11 (b) Sistemas operativos: una visión aplicada 61 J. Carretero, F. García, P. de Miguel, F. Pérez 31

32 Implementación de la espera pasiva Operaciones para desbloquear a un proceso bloqueado en un semáforo Estado PID Tabla de procesos BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 BCP10 BCP11 BCP12 Bloq. Bloq. Bloq Cola asociada al semáforo 7 11 (a) Tabla de procesos Estado PID BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 BCP10 BCP11 BCP12 Listo Bloq. Bloq Cola asociada al semáforo 11 (b) Sistemas operativos: una visión aplicada 62 J. Carretero, F. García, P. de Miguel, F. Pérez Instrucciones hardware especiales Operación atómicas int test-and-set(int *valor) { int temp; temp = *valor; *valor = 1; /* true */ return temp; void swap (int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; return; Sistemas operativos: una visión aplicada 63 J. Carretero, F. García, P. de Miguel, F. Pérez 32

33 Sección crítica con test-and-set Los procesos comparten la variable lock (con valor inicial a false) while (test-and-set(&lock)) ; <Código de la sección crítica> lock = false; Sistemas operativos: una visión aplicada 64 J. Carretero, F. García, P. de Miguel, F. Pérez Sección crítica con swap Los procesos comparten la variable lock con valor inicial false. Cada proceso utiliza una variable local llave. llave = true; do swap(lock, llave); while (llave!= false); <Código de la sección crítica> lock = false; Sistemas operativos: una visión aplicada 65 J. Carretero, F. García, P. de Miguel, F. Pérez 33

34 Implementación de un semáforo con test-and-set wait(s){ while (test-and-set(&valor_s)) ; s = s - 1; if (s < 0){ valor_s = false; Bloquear al proceso; else valor_s = false; signal(s){ while (test-and-set(&valor_s)) ; s = s + 1; if ( s <= 0){ Desbloquear a un proceso bloqueado en la operación wait; valor_s = false; Sistemas operativos: una visión aplicada 66 J. Carretero, F. García, P. de Miguel, F. Pérez Interbloqueos Bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o se comunican entre sí. Ejemplo: Si P y Q con semáforos con valor inicial 1 P1 P2 wait(p) wait(q) wait(q) wait(p) signal(p) signal(q) signal(q) siangl(p) Sistemas operativos: una visión aplicada 67 J. Carretero, F. García, P. de Miguel, F. Pérez 34

35 Ejemplo de interbloqueo P A B Q Sistemas operativos: una visión aplicada 68 J. Carretero, F. García, P. de Miguel, F. Pérez Interbloqueos II Ejemplo: Si C1 y C2 son dos colas de mensajes: P1 P2 receive(p2, M) receive(p1, N) send(p2, M) send(p1, N) Condiciones del interbloqueo: Exclusión mutua Retención y espera No apropiación Espera circular Sistemas operativos: una visión aplicada 69 J. Carretero, F. García, P. de Miguel, F. Pérez 35

36 Servicios Posix: Tuberías Crear una tubería sin nombre int pipe(int fildes[2]); Crear una tuberías con nombre int mkfifo(char *name, mode_t mode); Abrir una tubería con nombre int open(char *fifo, int flag); Cerrar una tubería int close(int fd); Borrar una tubería con nombre int unlink(char *fifo); Leer de una tubería int read(fildes[0], buffer, n); Escribir en una tubería int write(fildes[1], buffer, n); Sistemas operativos: una visión aplicada 70 J. Carretero, F. García, P. de Miguel, F. Pérez Servicios Posix: Semáforos int sem_init(sem_t *sem, int shared, int val); Inicializa un semáforo sin nombre int sem_destroy(sem_t *sem); Destruye un semáforo sin nombre sem_t *sem_open(char *name, int flag, mode_t mode, int val); Abre (crea) un semáforo con nombre. int sem_close(sem_t *sem); Cierra un semáforo con nombre. int sem_unlink(char *name); Borra un semáforo con nombre. int sem_wait(sem_t *sem); Realiza la operación wait sobre un semáforo. int sem_post(sem_t *sem); Realiza la operación signal sobre un semáforo. Sistemas operativos: una visión aplicada 71 J. Carretero, F. García, P. de Miguel, F. Pérez 36

37 Servicios Posix: Mutex int pthread_mutex_init(pthread_mutex_t *mutex, pthread_mutexattr_t * attr); Inicializa un mutex. int pthread_mutex_destroy(pthread_mutex_t *mutex) ; Destruye un mutex. int pthread_mutex_lock(pthread_mutex_t *mutex); Intenta obtener el mutex. Bloquea al proceso ligero si el mutex se encuentra adquirido por otro proceso ligero. int pthread_mutex_unlock(pthread_mutex_t *mutex); Desbloquea el mutex. Sistemas operativos: una visión aplicada 72 J. Carretero, F. García, P. de Miguel, F. Pérez Servicios Posix: Colas de mensajes mqd_t mq_open(char *name, int flag, mode_t mode, mq_attr *attr); Crea una cola de mensajes con nombre y atributos attr: Número máximo de mensajes. Tamaño máximo del mensaje. Bloqueante, No bloqueante. int mq_close (mqd_t mqdes); Cierra una cola de mensajes. int mq_unlink(char *name); Borra una cola de mensajes. Sistemas operativos: una visión aplicada 73 J. Carretero, F. García, P. de Miguel, F. Pérez 37

38 Servicios Posix: Colas de mensajes (II) int mq_send(mqd_t mqdes, char *msg, size_t len, int prio); Envía el mensaje msg de longitud len a la cola de mensajes mqdes con prioridad prio; Si la cola está llena el envío puede ser bloqueante o no. int mq_receive(mqd_t mqdes, char *msg, size_t len, int prio); Recibe un mensaje msg de longitud len de la cola de mensajes mqdes con prioridad prio; Recepción bloqueante o no. Sistemas operativos: una visión aplicada 74 J. Carretero, F. García, P. de Miguel, F. Pérez Wind32: Servicios de sincronización DWORD WaitForSingleObject(HANDLE hhandle, DWORD dwmilliseconds); DWORD WaitForMultipleObjects(DWORD ncount, CONST HANDLE *lphandles, BOOL fwaitfail, DWORD dwmilliseconds); Sistemas operativos: una visión aplicada 75 J. Carretero, F. García, P. de Miguel, F. Pérez 38

39 Wind32: Tuberías Crear una tubería sin nombre BOOL CreatePipe(PHANDLE phread, PHANDLE phwrite, LPSECURITY_ATTRIBUTES lpsa, DWORD cbpipe); Crear una tubería con nombre HANDLE CreateNamedPipe (LPCTSTR lpszpipename, DWORD fdwopenmode, DWORD fdwpipemode, DWORD nmaxinstances, DWORD cboutbuf, DWORD cbinbuf, DWORD dwtimeout, LPSECURITY_ATTRIBUTES lpsa); Abrir una tubería con nombre HANDLE CreateFile(LPCSTR lpfilename, DWORD dwdesiredaccess,dword dwsharemode, LPVOID lpsecurityattributes, DWORD CreationDisposition, DWORD dwflagsandattributes, HANDLE htemplatefile); Sistemas operativos: una visión aplicada 76 J. Carretero, F. García, P. de Miguel, F. Pérez Wind32: Tuberías (II) Cerrar una tubería con nombre BOOL CloseHandle (HANDLE hfile); Leer de una tubería BOOL ReadFile (HANDLE hfile, LPVOID lpbuffer, DWORD nbytes, LPDWORD lpnbytes, LPOVERLAPPED lpoverlapped); Escribir en una tubería BOOL WriteFile (HANDLE hfile, LPVOID lpbuffer, DWORD nbytes, LPDWORD lpnbytes, LPOVERLAPPED lpoverlapped); Sistemas operativos: una visión aplicada 77 J. Carretero, F. García, P. de Miguel, F. Pérez 39

40 Wind32: Secciones críticas VOID InitializeCriticalSection( LPCCRITICAL_SECTION lpcscriticalsection); VOID DeleteCriticalSection( LPCCRITICAL_SECTION lpcscriticalsection); VOID EnterCriticalSection( LPCCRITICAL_SECTION lpcscriticalsection); VOID LeaveCriticalSection( LPCCRITICAL_SECTION lpcscriticalsection); Sistemas operativos: una visión aplicada 78 J. Carretero, F. García, P. de Miguel, F. Pérez Wind32: Semáforos Crear un semáforo HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpsa, LONG cseminitial, LONG csemmax, LPCTSTR lpszsemname); Abrir un semáforo HANDLE OpenSemaphore(LONG dwdesiredaccess, LONG BinheritHandle, lpszname SemName); Operación wait DWORD WaitForSingleObject(HANDLE hsem, DWORD dwtimeout); Operación signal BOOL ReleaseSemaphore(HANDLE hsemaphore, LONG creleasecount, LPLONG lppreviouscount); Sistemas operativos: una visión aplicada 79 J. Carretero, F. García, P. de Miguel, F. Pérez 40

41 Wind32: Mutex y eventos Crear un mutex HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpsa, BOOL finitialowner, LPCTSTR lpszmutexname); Abrir un mutex HANDLE OpenMutex(LONG dwdesiredaccess, LONG BineheritHandle, lpszname SemName); Cerrar un mutex BOOL CloseHandle(HANDLE hobject); Operación lock DWORD WaitForSingleObject(HANDLE hmutex, DWORD dwtimeout); Operación unlonk BOOL ReleaseMutex(HANDLE hmutex); Sistemas operativos: una visión aplicada 80 J. Carretero, F. García, P. de Miguel, F. Pérez Wind32: Mutex y eventos (II) Crear un evento HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpsa, BOOL fmanualreset, BOOL finitialstate, LPTCSTR lpszeventname); Destruir un evento BOOL CloseHandle(HANDLE hobject); Esperar por un evento DWORD WaitForSingleObject(HANDLE hevent, DWORD dwtimeout); Notificar un evento BOOL SetEvent(HANDLE hevent); BOOL PulseEvent(HANDLE hevent); Sistemas operativos: una visión aplicada 81 J. Carretero, F. García, P. de Miguel, F. Pérez 41

Comunicación y Sincronizacion de procesos. Ingeniería del Software EUITI UPM

Comunicación y Sincronizacion de procesos. Ingeniería del Software EUITI UPM Comunicación y Sincronizacion de procesos Ingeniería del Software EUITI UPM Índice! Intro Seccion critica Productor consumidor Lectores escritores! Tuberias! Semaforos! Memoria compartida! Mutex y variables

Más detalles

26/01/2010. Espera activa Semáforos Problemas clásicos de com. y sin. Servicios POSIX

26/01/2010. Espera activa Semáforos Problemas clásicos de com. y sin. Servicios POSIX Tema 5: Comunicación y sincronización de procesos Tema 5: Comunicación y sincronización de procesos Comunicación y sincronización acó Espera activa Semáforos Problemas clásicos de com. y sin. Mecanismos

Más detalles

Tema 2 Comunicación y sincronización entre procesos

Tema 2 Comunicación y sincronización entre procesos Tema 2 Comunicación y sincronización entre procesos Grupo ARCOS Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenido Repaso de los conceptos de proceso y threads Concurrencia Mecanismos

Más detalles

Tema 4 El paradigma cliente-servidor

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

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

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

Más detalles

SISTEMAS OPERATIVOS AVANZADOS

SISTEMAS OPERATIVOS AVANZADOS SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3

Más detalles

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

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

Más detalles

Sincronización de Hilos POSIX

Sincronización de Hilos POSIX Sincronización de Hilos POSIX Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Problemática Ejemplo: el problema del productor/consumidor (o del buffer acotado ) Existen

Más detalles

Sincronizacion de procesos

Sincronizacion de procesos Sincronizacion de procesos Sobre los procesos cooperantes: Pueden compartir espacios de direcciones o datos a través de un archivo. Problema a considerar: Como evitar la inconsistencia de los datos compartidos

Más detalles

Mensajes. Interbloqueo

Mensajes. Interbloqueo CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose

Más detalles

Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia

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

Más detalles

Concurrencia: Exclusión mutua y Sincronización

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

Más detalles

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 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

Más detalles

Sistemas Operativos. Procesos

Sistemas Operativos. Procesos Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso

Más detalles

Bloque I: Principios de sistemas operativos

Bloque I: Principios de sistemas operativos 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.

Más detalles

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema

Más detalles

Capítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación

Capítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación 3.- Procesos Capítulo 3: Procesos Concepto de Proceso Despacho (calendarización) de Procesos Operaciones en Procesos Procesos en cooperación Compunicación Interprocesos Communicación en sistemas Cliente-Servidor

Más detalles

T5-multithreading. Indice

T5-multithreading. Indice T5-multithreading 1.1 Indice Proceso vs. Flujos Librerías de flujos Comunicación mediante memoria compartida Condición de carrera Sección Crítica Acceso en exclusión mutua Problemas Abrazos mortales 1.2

Más detalles

Usando el Sistema Operativo

Usando el Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software

Más detalles

Concurrencia entre Procesos.

Concurrencia entre Procesos. Concurrencia entre Procesos. Sistemas Operativos Tema 3. 1 Procesamiento concurrente. Procesamiento concurrente: base de los sistemas operativos modernos (multiprogramados): Un conjunto de procesos que

Más detalles

Si un candado mutex es usado por hilos en el mismo proceso pero no por hilos en diferentes procesos, los primeros dos pasos pueden simplificarse a:

Si un candado mutex es usado por hilos en el mismo proceso pero no por hilos en diferentes procesos, los primeros dos pasos pueden simplificarse a: Pthreads La biblioteca también soporta candados y variables de condición. Los candados pueden usarse para proteger la sección crítica, o pueden usarse en combinación con las variables de condición para

Más detalles

SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS

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;

Más detalles

Tema 3. Concurrencia entre procesos

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

Más detalles

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

Informática Electrónica Manejadores de Dispositivos (Device Drivers) Informática Electrónica Manejadores de Dispositivos (Device Drivers) DSI-EIE-FCEIA 2015 Que es un DD? Es una pieza de software que interactúa con (entre) el sistema operativo y con uno o mas dispositivos

Más detalles

Implementación de monitores POSIX

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

Más detalles

Procesos Definición y Estados

Procesos Definición y Estados Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).

Más detalles

PROGRAMACION CONCURRENTE

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

Más detalles

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 4. (2 p) Dos procesos A y B se ejecutan concurrentemente en un determinado sistema. El proceso A ejecuta unas tareas ( Tareas

Más detalles

07 << Acceso en exclusiva al recurso compartido >>

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

Más detalles

Concurrencia y paralelismo

Concurrencia y paralelismo Introducción a los Sistemas Operativos Concurrencia y paralelismo 1. Ejecución de programas. Procesos. 2. Multiprogramación Bibliografía Silberschatz and Galvin Sistemas Operativos. Conceptos fundamentales.

Más detalles

Sistemas Operativos Práctica 4

Sistemas Operativos Práctica 4 Sistemas Operativos Práctica 4 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

Tema 3: Concurrencia de procesos

Tema 3: Concurrencia de procesos Tema 3: Concurrencia de procesos Yolanda Blanco Fernández yolanda@det.uvigo.es Concurrencia, Tiempo Real y Paralelismo Concurrencia: Convivencia de un conjunto de procesos en un mismo ordenador. Sistemas

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

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

Más detalles

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS

Más detalles

Sistemas multiprogramados. Cooperan en realizar un trabajo: filtros. Comparten recursos del sistema

Sistemas multiprogramados. Cooperan en realizar un trabajo: filtros. Comparten recursos del sistema Introducción a los Sistemas Operativos Concurrencia 1. Introducción. Concurrencia y paralelismo. 2. Comunicación y sincronización. 3. Exclusión mutua y sincronización. 4. Modelos de programación. 5. Memoria

Más detalles

Introducción a Sistemas Operativos: Concurrencia

Introducción a Sistemas Operativos: Concurrencia Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 2 Introducción a los sistemas operativos

Sistemas operativos: una visión aplicada. Capítulo 2 Introducción a los sistemas operativos Sistemas operativos: una visión aplicada Capítulo 2 Introducción a los sistemas operativos Contenido Qué es un sistema operativo? Arranque del computador Componentes y estructura de un sistema operativo

Más detalles

Comunicación mediante mensajes

Comunicación mediante mensajes dit UPM Comunicación mediante mensajes Juan Antonio de la Puente DIT/UPM Objetivos Comprender los problemas relacionados con la comunicación entre procesos basada en el interambio de mensajes Estudiar

Más detalles

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 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

Más detalles

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

de Gran Canaria Centro de Tecnología Médica  Programación Concurrente Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales

Más detalles

Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec. Copyright @2002, I.

Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec. Copyright @2002, I. Sistemas Operativos Clase # 9 Tipos de llamadas al Sistema Viernes, 3 de Mayo de 2002 Agenda Sorpresa! no hay prueba. Tipos de llamadas al sistema. Iván Bernal, Ph.D. Escuela Politécnica Nacional email:

Más detalles

3.- Procesos. Concepto de Proceso. Despacho (calendarización) de Procesos. Operaciones en Procesos. Procesos en cooperación

3.- Procesos. Concepto de Proceso. Despacho (calendarización) de Procesos. Operaciones en Procesos. Procesos en cooperación 3.- Procesos Despacho (calendarización) de Procesos Operaciones en Procesos Procesos en cooperación Compunicación Interprocesos Communicación en sistemas Cliente-Servidor Sistema de Batch jobs Sistema

Más detalles

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia Calendario Comienzo: Lunes 2 de noviembre y miércoles 4 de noviembre. Entrega: 16 de noviembre y 18 de noviembre. 1. Requisitos

Más detalles

Sistemas Operativos. Características de la Multiprogramación. Interacción entre Procesos. Características de la Multiprogramación

Sistemas Operativos. Características de la Multiprogramación. Interacción entre Procesos. Características de la Multiprogramación Universidad Simón Bolívar Departamento de Electrónica y Circuitos EC3731 Arquitectura del Computador II Prof. Osberth De Castro Prof. Juan C. Regidor Sistemas Operativos Concurrencia y Sincronización de

Más detalles

Tema 1: Programación Multiproceso. Curso

Tema 1: Programación Multiproceso. Curso Tema 1: Programación Multiproceso. Curso 2012-2013 1 Patricia Hurtado Sayas Índice de contenidos: 1. Elementos funcionales de un SI. Repaso. 2. Concepto de Proceso o Tarea. 1. PCB, Bloque de Control de

Más detalles

Sistemas de Transportes de Datos (STD) Tema III: UDP y TCP (Entrega 4) Grupo de Aplicaciones Telemáticas. Grupo de Aplicaciones Telemáticas

Sistemas de Transportes de Datos (STD) Tema III: UDP y TCP (Entrega 4) Grupo de Aplicaciones Telemáticas. Grupo de Aplicaciones Telemáticas Sockets Abstracción para las operaciones de E/S a través de la red. Generalización de mecanismos de acceso a ficheros para suministrar un punto a través del cual realizar las comunicaciones. : Crear un

Más detalles

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos INDICE Prólogo XV 1. Introducción 1 1.1. Evolución de los sistemas operativos 2 Procesamiento en serie 3 Procesamiento por lotes 4 Multiprogramación 7 1.2. Tipos de Sistemas Operativos 9 Sistemas operativos

Más detalles

Introducción a los sistemas operativos. Ing Esp Pedro Alberto Arias Quintero

Introducción a los sistemas operativos. Ing Esp Pedro Alberto Arias Quintero Introducción a los sistemas operativos Ing Esp Pedro Alberto Arias Quintero Unidad 1: Conceptos generales de Sistemas Operativos. Tema 1: Introducción: 1.1 Introducción: Qué es un sistema operativo?. 1.2

Más detalles

Introducción a Sistemas Operativos: Comunicación entre Procesos

Introducción a Sistemas Operativos: Comunicación entre Procesos Introducción a Sistemas Operativos: Comunicación entre Procesos Clips xxx Fr ancisco J Ballesteros. Pipelines Hace tiempo, UNIX disponía de las redirecciones que hemos visto y los usuarios combinaban programas

Más detalles

Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores

Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores Llamadas al Sistema Laboratorio de Arquitectura de Ordenadores Índice Introducción Procesos Señales Sistema de ficheros Bibliografía 2 Introducción Llamadas al Sistema: Un API compuesto por una serie de

Más detalles

TEMA 2: PROCESOS E HILOS: CONCURRENCIA, SINCRONIZACIÓN Y COMUNICACIÓN

TEMA 2: PROCESOS E HILOS: CONCURRENCIA, SINCRONIZACIÓN Y COMUNICACIÓN TEMA 2: PROCESOS E HILOS: CONCURRENCIA, SINCRONIZACIÓN Y COMUNICACIÓN 1. Introducción Definición de proceso (tarea según los fabricantes): Programa en ejecución. Cálculo computacional que puede hacerse

Más detalles

PROGRAMACIÓN CONCURRENTE

PROGRAMACIÓN CONCURRENTE PROGRAMACIÓN CONCURRENTE Lenguajes de Programación - Progr. Concurrente 1 Introducción El concepto fundamental de la programación concurrente es la noción de Proceso. Proceso: Cálculo secuencial con su

Más detalles

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores.

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. En esta práctica se tratará de resolver el problema de los productores/consumidores

Más detalles

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007 Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007 Planteamiento del examen de TEORIA: El examen constará de 5 preguntas/cuestiones que pueden ser libremente

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

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

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006 UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006 Para la realización del presente examen se dispondrá de 2 horas

Más detalles

Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. Sistemas Operativos. Tema 2: Introducción a la programación concurrente

Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. Sistemas Operativos. Tema 2: Introducción a la programación concurrente Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Sistemas Operativos Tema 2: Introducción a la programación concurrente Curso 2004/2005 E.T.I. Informática Gestión Profesor:

Más detalles

Paradigma de paso de mensajes

Paradigma de paso de mensajes Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:

Más detalles

Sincronización. Arquitectura de Computadores

Sincronización. Arquitectura de Computadores Sincronización Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento de Informática

Más detalles

Manipulación de procesos

Manipulación de procesos Manipulación de procesos Las primeras computadoras solo podían manipular un programa a la vez. El programa tenía control absoluto sobre todo el sistema. Con el desarrollo vertiginoso del hardware ese panorama

Más detalles

ESCUELA DE INGENIERIA Informática Y Sistemas

ESCUELA DE INGENIERIA Informática Y Sistemas ESCUELA DE INGENIERIA Informática Y Sistemas ASIGNATURA SISTEMAS OPERATIVOS CODIGO ST0257 SEMESTRE 2013-2 INTENSIDAD HORARIA 64 horas semestral CARACTERÍSTICAS Suficientable CRÉDITOS 4 1. JUSTIFICACIÓN

Más detalles

7. Programación Concurrente

7. Programación Concurrente 7. Programación Concurrente 1. Qué es la programación concurrente? Se conoce por programación concurrente a la rama de la informática que trata de las técnicas de programación que se usan para expresar

Más detalles

Tipos de Diseño. Ing. Elizabeth Guerrero V.

Tipos de Diseño. Ing. Elizabeth Guerrero V. Tipos de Diseño Ing. Elizabeth Guerrero V. Tipos de Diseño Tipos de diseño de Procesos: Centralizado, Distribuido y Cooperativo Procesos Centralizados Un sistema centralizado está formado por un computador

Más detalles

Sistemas Operativos Práctica 3

Sistemas Operativos Práctica 3 Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

; hcomment.rc HTTP://AA.ES/INFO.HTML http://www.bb.com http://www.cc.org/a.html aa.es www.bb.com www.cc.org ;

; hcomment.rc HTTP://AA.ES/INFO.HTML http://www.bb.com http://www.cc.org/a.html aa.es www.bb.com www.cc.org ; Examen de Sistemas Operativos ITIS Fuenlabrada Mayo 2011 Problema: Llamadas al sistema (3 puntos) Implemente en C para Plan 9 un programa hlines que a partir de una URL que se le pasa como argumento, escriba

Más detalles

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

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño? Sistemas Operativos. Grado Ingeniería Informática. TGR-2.1 Procesos. Noviembre 2014 Problemas para hacer en clase FIFO cpu C A 1. Dos procesos A y B tienen una ráfaga de CPU de 50 ms y un proceso C tiene

Más detalles

CDI Exclusión mutua a nivel alto. conceptos

CDI Exclusión mutua a nivel alto. conceptos conceptos El concepto de usar estructuras de datos a nivel alto libera al programador de los detalles de su implementación. El programador puede asumir que las operaciones están implementadas correctamente

Más detalles

LINUX fork() execv() wait() exit() kill signal pipe creat close open read write fstat Chmod getuid, setuid, getgid setgid

LINUX fork() execv() wait() exit() kill signal pipe creat close open read write fstat Chmod getuid, setuid, getgid setgid LINUX El sistema operativo Linux nace en la Universidad de Helsinki, en Finlandia de las manos de Linux Trovalds que contaba con la ayuda de muchos colaboradores expertos en Unix. Este sistema operativo

Más detalles

Receta general para resolver problemas de sincronización con semáforos

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

Más detalles

Procesos e Hilos en C

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.

Más detalles

Programación de Sistemas. Programación de Sistemas con Ansi C sobre UNIX. Gestión de errores. Gestión de errores. Ficheros regulares

Programación de Sistemas. Programación de Sistemas con Ansi C sobre UNIX. Gestión de errores. Gestión de errores. Ficheros regulares Programación de Sistemas con Ansi C sobre UNIX Pedro Merino Gómez Jesus Martínez Cruz Dpto. Lenguajes y Ciencias de la Computación Universidad de Málaga Programación de Sistemas Llamadas al sistema Gestión

Más detalles

Ejercicios con Monitores

Ejercicios con Monitores Ejercicios con Monitores 57. Aunque un monitor garantiza la exclusión mutua, los procedimientos tienen que ser reentrantes. Explicar por qué. 58. Demostrar que incluso si la implementación del semáforo

Más detalles

Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9

Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9 Threads en Linux Definición de thread Es un mecanismo por el cual un programa puede hacer mas de una cosa al mismo tiempo. Como los procesos, los threads parecen correr simultáneamente; pero hay que tener

Más detalles

Práctica 8: Barreras

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

Más detalles

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Laboratorio de Arquitectura de Redes. Entrada y salida estándar Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

Concurrencia. Primitivas IPC con bloqueo

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

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

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

Más detalles

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM) s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)

Más detalles

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. Palabras reservadas de C++ y C Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. A continuación se muestra el link del listado de palabras

Más detalles

Sistemas operativos (Parte 4)

Sistemas operativos (Parte 4) Sistemas operativos (Parte 4) M. en C. Mario Farias-Elinos Contenido Implementación de un sistema de archivos Ejemplos de sistemas de archivos Dispositivos de I/O Multiprocesamiento 1 Operaciones con archivos

Más detalles

Prácticas de Sistemas Operativos

Prácticas de Sistemas Operativos Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Javier Gutiérrez, Pablo Neira, Paco Silveira, Sergio Segura y José Ángel Bernal Boletín 4: Procesos Curso

Más detalles

Concurrencia. Concurrencia

Concurrencia. Concurrencia Concurrencia Procesos y hebras Concurrencia Programación concurrente Por qué usar hebras y procesos? Ejecución de procesos Ejecución de hebras Hebras vs. Procesos Creación y ejecución de hebras La prioridad

Más detalles

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

Sistemas Operativos I Manual de prácticas

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...

Más detalles

Tema 12: El sistema operativo y los procesos

Tema 12: El sistema operativo y los procesos Tema 12: El sistema operativo y los procesos Solicitado: Tarea 06 Arquitecturas de una computadora y el funcionamiento del software M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx

Más detalles

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

2 Control de procesos y sincronización

2 Control de procesos y sincronización 2 Control de procesos y sincronización En los sistemas multiprogramados se define el proceso como entidad representante de la ejecución de un programa en un determinado contexto. Aunque hoy en día se ha

Más detalles

Sistemas Operativos Tema 5. Procesos. 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana

Sistemas Operativos Tema 5. Procesos. 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana Sistemas Operativos Tema 5. Procesos 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana 1 Contenidos Concepto de proceso Estructuras de datos: BCP y colas de procesos Niveles de planificación

Más detalles

Mensajes. (versión preliminar)

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,

Más detalles

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

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

Más detalles

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos Hilos Módulo 4 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco Hilos Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos

Más detalles

SOLUCIONES. DURACIÓN: Dispone de 120 minutos para realizar el examen.

SOLUCIONES. DURACIÓN: Dispone de 120 minutos para realizar el examen. 1 2 3 test extra NOTA Fundamentos de los Sistemas Operativos Examen de convocatoria extraordinaria 27 de junio de 2014 SEGUNDA PARTE Nombre y apellidos SOLUCIONES DURACIÓN: Dispone de 120 minutos para

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

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 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

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Tema 3. Monitores Programación Concurrente

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

Más detalles

14/10/2009. INGENIERÍA Chapter 1: INFORMÁTICA

14/10/2009. INGENIERÍA Chapter 1: INFORMÁTICA INGENIERÍA Chapter 1: INFORMÁTICA Introduction SISTEMAS OPERATIVOS M. Teresa Higuera Toledano Departamento de Arquitectura de Computadores y Automática Facultad de Informática Universidad Complutense de

Más detalles

TEMA 4: Programación estructurada

TEMA 4: Programación estructurada TEMA 4: Programación estructurada 4.1.-Introducción. Teorema de la programación estructurada El principio fundamental de la programación estructurada es que en todo momento el programador pueda mantener

Más detalles