Taller de Programación Paralela
|
|
- María Rosa Camacho Murillo
- hace 6 años
- Vistas:
Transcripción
1 Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 26, 2007 Concurrencia 2 Concurrencia y sincronización Beneficios de concurrencia Ejemplo de problema Definición de términos Modelo de concurrencia Requerimientos para una solución Soluciones por hardware Soluciones por hardware 2, testset() EM por instrucciones de máquina Soluciones por software Solución de Peterson Semáforos Primitivas sobre semáforos Semáforo binario o mutex EM usando semáforos El problema del productor/consumidor Solución productor/consumidor con semáforos Sincronización con hebras POSIX Mutex Variables de condición Productor/consumidor usando pthreads El Productor El Consumidor Barreras para hebras Implementación barreras con pthreads Inicialización de barrera Espera con barreras Uso de barreras
2 Concurrencia 2 / 30 Concurrencia y sincronización Cuando dos o má tareas (procesos o hebras) comparten algún recurso en forma concurrente o paralela, debe existir un mecanismo que sincronice sus actividades El riesgo: corrupción del recurso compartido Ejemplos: 1. Acceso a impresora en un sistema distribuido 2. Consulta y actualización de una base de datos 3. Ejecuci on paralela de tareas para resolver un problema en conjunto Los problemas de sincronización no sólo ocurren en sistemas multiprocesadores, sino también (y fundamentalmente) en monoprocesadores 3 / 30 Beneficios de concurrencia Aumento en el rendimiento mediante múltiples procesadores Paralelsimo Aumento del throughput de las aplicaciones Un llamado a una operación de I/O sólo bloquea una hebra Mejora en interactividad de las aplicaciones Asignar mayor prioridad a hebras que atiendan al usuario Mejora en la estructuración de aplicaciones Sistemas distribuidos 4 / 30 2
3 Ejemplo * de problema Considere dos procesos que ejecutan concurrentemente a la funcion echo() del SO: void echo() chin = getchar(); chout = chin; putchar(chout); * Asuma que chin es variable compartida Proceso 1 Proceso 2.. chin = getchar(); <- interrupcion chin = getchar(); chout = chin; <- interrupcion chout = chin; putchar(chout); putchar(chout); Solución: permitir que sólo un proceso ejecute echo() a la vez 5 / 30 Definición de términos Una sección crítica (SC) es una sección de código de un proceso o hebra que accesa recursos compartidos, la cual (la sección) no puede ser ejecutada mientras otro proceso está ejecutando su SC correspondiente Por ejemplo, echo() en el ejemplo anterior es SC. Exclusión mútua es el requerimiento que cuando un proceso está en una SC que accesa ciertos recursos compartidos, ningún otro proceso puede estar ejecutando su correspondiente SC en la cual accesa alguno de dichos recursos Deadlock ocurre cuando dos o más procesos no pueden progresar porque cada uno está esperando que otro proceso realize alguna acción Inhanición es cuando un proceso en estado de listo, nunca es planificado en el procesador. 6 / 30 3
4 Modelo de concurrencia * Asumimos una colección de procesos del tipo Process(i) while (true)... entersc(); SC(); exitsc();.. entersc() representa las acciones que el proceso debe realizar para poder entrar a su SC exitsc() representa las acciones que el proceso debe realizar para salir la SC y dejarla habilitada a otros procesos El código no crítico es cualquier código que el proceso ejecuta que no accede recursos compartidos 7 / 30 Requerimientos para una solución El objetivo es proveer menanismos que implementen entersc() y exitsc() que satisfagan los siguientes 3 requerimientos Notas 1. Exclusión mútua: Cuando P i está en su SC, ningún otro proceso P j está en su correspondiente SC. Esto significa que la ejecución de operaciones de las secciones críticas no son concurrentes 2. Sin deadlock: Deadlock ocurriría cuando todos los procesos quedan ejecutando entersc() indefinidamente, y por lo tanto, ninguno entra y ninguno progresa 3. Sin inhanición: Se debe garantizar que un proceso P i que ejecuta entersc(), eventualmente lo haga Un proceso puede tener más de un SC Libre de deadlock no garantiza que algún proceso se bloquee indefinidamente Libre de inhanición no dice cuando un proceso entra a la SC La solución no debe realizar suposiciones sobre la velocidad relativa y orden de ejecución de los procesos 8 / 30 4
5 Soluciones por hardware 1 Deshabilitación de interrupciones Recordar que un proceso se ejecuta hasta que invoca un llamado al SO o es interrumpido. Entonces para garantizar EM, el proceso deshabilita las interrupciones justo antes de entrar en su SC while (true) deshabilitar_interrupciones(); SC(); habilitar_interrupciones(); Habilidad del procesador para hacer context-switch queda limitada No sirve para multiprocesadores 9 / 30 Soluciones por hardware 2, testset() Uso de instrucciones especiales de máquina que realizan en forma atómica más de una operación. Por ejemplo testset() boolean testset(var int i) int bolts; if (i == 0) P(i) i = 1; while (true) return true; else return false; while (!testset(bolt)); SC(); bolt = 0; void main() bolt = 0; parbegin(p(1), P(2),..., P(n)); 10 / 30 5
6 EM por instrucciones de máquina Ventajas Aplicable a cualquier número de procesos y procesadores que comparten memoria física Simple y fácil de verificar Puede ser usada con varias SC, cada una controlada por su propia variable Desventajas Busy-waiting (o spin-lock) consume tiempo de procesador Es posible inhanición 11 / 30 Soluciones por software 1 Dos procesos comparten la variable turno int turno; P(i) P(i) while (true) while (true) while (turno!= 0); while (turno!= 1); SC(); SC(); turno = 1; turno = 0; void main() turno = 0; parbegin(p(0), P(1)); Garantiza exclusión mútua Sólo aplicable a dos procesos Alternación estricta de ejecución 12 / 30 6
7 Solución de Peterson Dos procesos comparten dos variable: flag[2] y turno boolean flag[2]; int turno; P(i) P(i) while (true) while (true) flag[0] = true; flag[1] = true; turno = 1; turno = 0; while (flag[1] && turno == 1); while (flag[0] && turno == 0); SC(); SC(); flag[0] = false; flag[1] = false; void main() flag[0] = flag[1] = false; parbegin(p(0), P(1)); 13 / 30 Semáforos Una semáforo es una variable especial usada para que dos o más procesos se señalicen mútuamente Un semáforo es una variable entera, pero Accesada sólo por dos operaciones 1. wait(s) decrementa el semáforo; si el valor resultante es negativo, el proceso se bloquea; sino, continúa su ejecución 2. signal(s) incrementa el semáforo; si el valor resultante es menor o igual que cero, entonces se despierta un proceso que fue bloqueado por wait() Inicializada con un nḿero no negativo 14 / 30 7
8 Primitivas sobre semáforos struct semaphore int count; queuetype queue; void wait(semaphore s) s.count--; if (s.count < 0) place this process in s.queue; block this process void signal(semaphore s) s.count++; if (s.count <= 0) remove a process P from s.queue; place process P on ready state 15 / 30 Semáforo binario o mutex Un semáforo binario sólo puede tomar los valores 0 o 1 wait(s) signal(s) if (s.value == 1) if (s.queue is empty()) s.value = 0; s.value = 1 else else place this process in s.queue remove a process P from block this process s.queue; place P on the ready list; 16 / 30 8
9 EM usando semáforos semaphore s; Process(i) while (true)... wait(s) SC(); signal(s);.. void main() s = 1; parbegin(p(1), P(2),...,P(n)); 17 / 30 El problema del productor/consumidor Uno o más procesos productores generan datos y los almacenan en un buffer compartido Un proceso consumidor toma (consume) los datos del buffer uno a la vez Claramente, sólo un agente (productor o consumidor) pueden accesar el buffer a la vez producer() consumer() while (true) while (true) v = produce(); while (in == out); while ((in + 1) % n == out); /* do nothing */ /* do nothing */ w = b[out]; b[in] = v; out = (out + 1) % n; in = (in + 1) % n consume(w); El buffer es de largo n y tratado circularmente in indica la siguiente posición libre y out el siguiente elemento a consumir 18 / 30 9
10 Solución productor/consumidor con semáforos const int sizeofbuffer; semaphore s = 1; semaphore full = 0; semaphore empty = sizeofbuffer; producer() consumer() while(true) while(true) v = produce(); wait(full); wait(empty); wait(s); wait(s); w = take_from_buffer(); put_in_buffer(v); signal(s); signal(s); signal(empty); signal(full); consume(w); 19 / 30 Sincronización con hebras POSIX Hebras POSIX definen funciones para la sincronización de hebras 1. mutexes: parecidos a los semáforos binarios y sirven para proveer exclusión mútua a cualquier número de hebras de un proceso 2. variables de condición: un mecanismo asociado a los mutexes. Permiten que una hebra se bloquee y libere la SC en la que se encuentra Estos mecanismos no sirven para sincronizar hebras de distintos procesos 20 / 30 10
11 Mutex Un * mutex es la forma más básica de sincronización y provee el mismo servicio que un semáforo binario Generalmente se utilizan para implementar acceso exclusivo a SC de las hebras #include <pthread.h> int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int pthread_mutex_destroy(pthread_mutex_t *mutex); Si una hebra invoca pthread_mutex_lock(m) y el mutex m ya está tomado, entonces la hebra se bloquea (en ese mutex), sino toma (cierra) el mutex y continúa su ejecución Si una hebra invoca pthread_try_lock(m) y el mutex m ya está tomado, entonces pthread_try_lock(m) retorna un código de error EBUSY; la hebra no se bloquea y puede continuar su ejecución (fuera de la SC) 21 / 30 Variables de condición Qué sucedería si una hebra se bloquea dentro de una SC? Una variable de condición permite que una hebra se bloquee dentro de una SC y al mismo tiempo libere la sección crítica int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t * mutex); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); int pthread_cond_destroy(pthread_cond_t *cond); int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t * attr); pthread_cond_t cond = PTHREAD_COND_INITIALIZER; La hebra que invoca pthread_cond_wait(c, m) se bloquea hasta que la condición c se señalice; además libera el mutex m pthread_cond_signal(c) señaliza o despierta alguna otra hebra que está bloqueada en la variable de condición c pthread_cond_broadcast(c) desbloquea todas las hebras esperando en c 22 / 30 11
12 Productor/consumidor usando pthreads typedef struct int buf[queuesize]; int head, tail; int full, empty; pthread_mutex_t mutex; pthread_cond_t notfull, notempty; buffer_t; void main() buffer_t *buffer; pthread_t pro, con; buffer = bufferinit(); pthread_mutex_init(&buffer->mutex, NULL); pthread_cond_init(&buffer->notfull, NULL); pthread_cond_init(&buffer->notempty, NULL); pthread_create(&pro, NULL, producer, (void *) buffer); pthread_create(&con, NULL, consumer, (void *) buffer); pthread_join (pro, NULL); pthread_join (con, NULL); exit 0; 23 / 30 El Productor void *producer(void *arg) int v; buffer_t *buffer; buffer = (buffer_t *) arg; while (true) v = produce(); pthread_mutex_lock (&buffer->mutex); while (buffer->full) pthread_cond_wait (&buffer->notfull, &buffer->mutex); put_in_buffer(buffer, v); pthread_cond_signal(&buffer->notempty); pthread_mutex_unlock(&buffer->mutex); 24 / 30 12
13 El Consumidor void *consumer (void *arg) int v; buffer_t *buffer; buffer = (buffer_t *) arg; while (true) pthread_mutex_lock (&buffer->mutex); while (buffer->empty) pthread_cond_wait (&buffer->notempty, &buffer->mutex); v = take_from_buffer(buffer); pthread_cond_signal(&buffer->notfull); pthread_mutex_unlock(&buffer->mutex); 25 / 30 Barreras para hebras Una barrera es un mecanismo de sincronización detener (bloquear) la ejecución de un grupo de hebras en un mismo punto del programa Cuando la barrera está a bajo las hebras se detienen en ella en el orden en que llegan Cuando la barrera se levanta, las hebras continúan su ejecución Las barreras son útiles para implementar puntos de sincronización globales en un algoritmo Usamos mutex y variables de condición para implementar barreras Implementamos las siguientes funciones 1. barrier_init() 2. barrier_wait() 3. barrier_destroy() 26 / 30 13
14 Implementación barreras con pthreads Una posible forma de implementación es usando dos mutexes y dos variables de condición Cada par representa una barrera struct _sb pthread_cond_t cond; pthread_mutex_t mutex; int runners; ; typedef struct int maxcnt; struct _sb sb[2]; struct _sb *sbp; barrier_t; 27 / 30 Inicialización de barrera int barrier_init(barrier_t *bp, int count) int i; if (count < 1) printf("error: numero de hebras debe ser mayor que 1\n"); exit(-1); bp->maxcnt = count; bp->sbp = &bp->sb[0]; for (i=0; i < 2; i++) struct _sb *sbp = &(bp->sb[i]); sbp->runners = count; pthread_mutex_init(&sbp->mutex, NULL); pthread_cond_init(&sbp->cond, NULL); return(0); 28 / 30 14
15 Espera con barreras int barrier_wait(barrier_t *bp) struct _sb *sbp = bp->sbp; pthread_mutex_lock(&sbp->mutex); if (sbp->runners == 1) if (bp->maxcnt!= 1) sbp->runners = bp->maxcnt; bp->sbp = (bp->sbp = &bp->sb[0])? &bp->sb[1] : &bp->sb[0]; pthread_cond_broadcast(&sbp->cond); else sbp->runners--; while (sbp->runners!= bp->maxcnt) pthread_cond_wait(&sbp->cond, &sbp->mutex); pthread_mutex_unlock(&sbp->wait_mutex); 29 / 30 Uso de barreras void *proceso(void *arg) int *tidptr, tid; tidptr = (int *) arg; tid = *tidptr; printf("hola justo antes de la barrera%d\n", tid); barrier_wait(&barrera); int main(int argc, char *argv[]) int i, status; pthread_t hebra[10]; barrier_init(&barrera, 10); for (i=0; i < 10; i++) taskids[i] = (int *) malloc(sizeof(int)); *taskids[i] = i; pthread_create(&hebra[i], NULL, &proceso, taskids[i]); for (i=0; i < 10; i++) pthread_join(hebra[i], (void **) &status); barrier_destroy(&barrera); 30 / 30 15
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 detallesMensajes. 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 detallesConcurrencia: 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 detallesSistemas 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 detallesImplementació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 detallesSistemas 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 detallesConcurrencia. 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 detallesPrá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 detallesCapí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 detallesCDI 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 detallesProgramación Concurrente y Paralela. P(S) ; sección crítica P(S);
2.5.2 Monitores Los semáforos, a pesar de su sencillez de uso, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles
Más detallesPROGRAMACION 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 detallesTema 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- 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 detallesSistemas 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 detallesProgramació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
Más detallesTema 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 detallesSistemas 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 detallesPROGRAMACIÓ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 detallesProgramación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
Más detallesUNIVERSIDAD 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 detallesSOLUCIONES 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 detallesFundamentos 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
Más detallesSistemas Distribuidos
Sistemas Distribuidos Exclusion Mutua: Memoria Compartida. Ramiro De Santiago Lopez. 28/01/2014 Exclusion Mutua (ME) Un proceso excluye temporalmente a todos los demás para usar un recurso compartido.
Más detallesAdministración de procesos: Primitivas de sincronización
Administración de procesos: Primitivas de sincronización Facultad de Ingeniería, UNAM Instituto de Investigaciones Económicas, UNAM Administración de procesos: Índice Introducción a la concurrencia 1 Introducción
Más detalles3.- 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 detallesMensajes. (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 detallesTema 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 detallesTema 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 detallesReceta 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 detalles07 << 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 detallesSIMM: 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 detallesESTRUCTURAS REPETITIVAS
DOCENTE: Ing. Ronald Rentería Ayquipa MARCO TEÓRICO: ESTRUCTURAS REPETITIVAS La programación estructurada es un paradigma que consiste en la organización de un código en bloques conformados por estructuras
Más detallesUniversidad 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
Más detallesConcurrencia 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 detallesProcesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso
Procesos 1 / 31 Concepto de proceso Para entender el concepto de hebra, necesitamos compreender el concepto de proceso Un proceso es un programa en ejecución Una instancia de un programa corriendo en un
Más detallesProgramcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.
Programación Básica Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad
Más detallesHerramientas Informáticas I Software: Sistemas Operativos
Herramientas Informáticas I Software: Sistemas Operativos Facultad de Ciencias Económicas y Jurídicas Universidad Nacional de La Pampa Sistemas Operativos. Es el software base que permite trabajar como
Más detallesExclusión mutua. Gustavo Romero. 14 de febrero de 2014. Arquitectura y Tecnología de Computadores
Exclusión mutua Gustavo Romero Arquitectura y Tecnología de Computadores 14 de febrero de 2014 Gustavo Romero Exclusión mutua (1/109) Índice 1 Introducción 2 Usuario 3 Hardware Cerrojos Gestión de interrupciones
Más detallesMonitores. Implementación de un Buffer con monitores
Monitores Los monitores corresponden a la segunda herramienta de sincronización que veremos en el curso. Se usan para garantizar la exclusión mutua en secciones críticas y para esperar la ocurrencia de
Más detallesSistemas Distribuidos. Soporte de Sistemas Operativos
Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Tareas principales de un SO: Administrar recursos Proveer abstracciones de los
Más detallesElementos 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 detallesUnidad 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 detalles2 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 detallesDepartamento de Computación. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Sistemas Operativos. Autor: Leopoldo Taravilse
Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Sistemas Operativos Autor: Leopoldo Taravilse 15 de diciembre de 2014 Índice 1. Procesos 4 1.1. Qué es un
Más detallesIntroducció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:
Más detallesSistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña
Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS. P. Cabalar Sistemas( Operativos Depto. de Computación Universidade Tema da Coruña III. Procesos ) 1 /
Más detallesun programa concurrente
Introducción un programa concurrente asumimos que tengamos un programa concurrente que quiere realizar acciones con recursos: si los recursos de los diferentes procesos son diferentes no hay problema,
Más detallesEstructuras de Repetición (Hacer-Mientras)
Estructuras de Repetición (Hacer-Mientras) Material Original: Prof. Flor Narciso Modificaciones: Prof. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería
Más detallesEstatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
Más detallesEl problema de los Filósofos
El problema de los Filósofos Problemas de Programación Concurrente Solución con Semáforos Para evitar una situación de interbloqueo se limita el número de filósofos en disposición de comer a 4. PROGRAM
Más detallesComunicació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
Más detallesfundamentos de programación (unidad 4) programación estructurada en Java
fundamentos de programación (unidad 4) programación estructurada en Java Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es
Más detallesUNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN PRODUCCIÓN INDUSTRIAL. UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 6 Material visual: Diapositivas Unidad de competencia
Más detallesSistemas Operativos. Curso 2016 Procesos
Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor
Más detallesJava: Programación Multithread
Qué es un thread? Java: Programación Multithread Hasta el momento hemos desarrollado programas secuenciales con un único thread: en cualquier instante durante la ejecución de un programa hay un único punto
Más detalles6. Planificación. Los procesos tienden a tener ráfagas de ejecución (CPU-burst) y ráfagas de espera de operaciones de E/S (I/O burst).
6. Planificación La planificación es la base para lograr la multiprogramación. En un sistema multiprogramado, generalmente en un determinado instante existirán varios procesos que requieren el procesador
Más detallesTEMA 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.
Más detallesProgramación concurrente
Programación concurrente Master de Computación I Conceptos y recursos para la programación concurrente: I.1 Motivación de la programación concurrente. J.M. Drake M. Aldea Motivación de la programación
Más detallesLENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
Más detallesIngenierí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 detallesTema 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 detallesDiseño arquitectónico 1ª edición (2002)
Unidades temáticas de Ingeniería del Software Diseño arquitectónico 1ª edición (2002) Facultad de Informática objetivo Los sistemas grandes se descomponen en subsistemas que suministran un conjunto relacionado
Más detallesProgramación 1 Tema 3. Información, datos, operaciones y expresiones
Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información
Más detallesTostadores y POSIX. 1. Introducción
Tostadores y POSIX Michael González Harbour 1 (mgh@ctr.unican.es) Departamento de Electrónica y Computadores, Universidad de Cantabria 39005 Santander, SPAIN C. Douglass Locke (doug.locke@lmco.com) Lockheed
Más detallesCiclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL
Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos
Más detallesManipulació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 detallesJava para programadores
Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Variables. Tipos
Más detallesPROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I
PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I Table of contents 1 INFORMACIÓN GENERAL...2 2 INTRODUCCIÓN... 2 3 OBJETIVOS GENERALES DE LA ASIGNATURA... 3 4 OBJETIVOS, TEMAS Y SUBTEMAS... 3 5 PLAN TEMÁTICO...6
Más detallesProcesos 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 detallesMONITORES 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
Más detallesPROGRAMACION CONCURRENTE Y DISTRIBUIDA
PROGRAMACION CONCURRENTE Y DISTRIBUIDA V.2 Redes de Petri: Análisis y validación. J.M. Drake 1 Capacidad de modelado y capacidad de análisis El éxito de un método de modelado es consecuencia de su capacidad
Más detallesCAPÍ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
Más detallesSincronizació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 detallesTarea #1 Comunicación y Sincronización entre Procesos
Comunicación y Sincronizacion 1 Tarea #1 Comunicación y Sincronización entre Procesos 1. Enumere cuatro elementos de diseño para los cuales es necesario el concepto de concurrencia. La concurrencia comprende
Más detallesOperadores de comparación
Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (
Más detallesMecanismo para el acceso público a servidores con direccionamiento privado.
[ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE TELECOMUNICACIÓN] UNIVERSIDAD POLITÉCNICA DE CARTAGENA Mecanismo para el acceso público a servidores con direccionamiento privado. Proyecto Fin de Carrera Autor:
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
Más detallesIntroducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es 1 Índice General Conceptos sobre ordenadores Concepto
Más detallesUnidad 8. Bases de Datos en el Modelo Cliente Servidor
Unidad 8 Bases de Datos en el Modelo Cliente Servidor El Modelo Cliente Servidor En la comunicación TCP/IP las comunicaciones entre computadoras se manejan a través del modelo Cliente Servidor Este concepto
Más detallesCAPITULO 6. Control de Concurrencia y Recuperación
CAPITULO 6 Control de Concurrencia y Recuperación 6.1 Protocolos de Bloqueo Un protocolo de bloqueo nace de la necesidad creada cuando una transacción solicita un bloqueo de un modo particular sobre un
Más detallesMercedes Granda Departamento de Electrónica y Computadores. Las propiedades de las redes de Petri nos permiten
22//22 REDES DE PETRI: PROPIEDADES Y MÉTODOS DE ANÁLISIS PROGRAMACIÓN CONCURRENTE MASTER EN COMPUTACIÓN DEPARTAMENTO DE ELECTRÓNICA Y COMPUTADORES UNIVERSIDAD DE CANTABRIA CURSO 22/3 REDES DE PETRI: PROPIEDADES
Más detallesContenido. Procesos. Programas/Procesos. Programas/Procesos. Por qué hacer uso de los Procesos? Proceso
Contenido Procesos Qué es un Proceso? Qué información requiere el Sistema de Operación para manejar los procesos? Programas/Procesos Programas/Procesos Un proceso es diferente a un programa Programa: Código
Más detallesSistemas 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 detallesFuncionamiento de la computadora
Funcionamiento de la computadora La computadora es una maquina destinada a procesar datos. Este procesamiento involucra dos flujos de información: el de datos y el de instrucciones. Se parte del flujo
Más detallesIntroducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Más detallesI.3. Interacción entre Procesos Concurrentes.
PROGRAMACION CONCURRENTE I.3. Interacción entre Procesos Concurrentes. J.M. Drake 1 Interacción entre Procesos Concurrentes Modelos de interacción entre procesos. Problemas de sincronización y exclusión
Más detallesSistemas 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.
Más detallesSolución Examen Febrero 2006
Solución Examen Febrero 2006 Lea detenidamente las siguientes instrucciones. No cumplir los requerimientos puede implicar la pérdida del examen. Formato Indique su nombre completo y número de cédula en
Más detallesDefinición de Sistema Operativo
Definición de Sistema Operativo El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema
Más detallesPrimeros pasos con CUDA. Clase 1
Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i
Más detallesObject 1. Threads en Java
Object 1 Threads en Java Introducción En este artículo voy a explicar cómo se usan los threads en Java (también traducidos como "hilos de ejecución"). La intención no es solamente explicar cuáles son las
Más detallesTema: Arreglos de Objetos en C++.
Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos.
Más detallesVariables. 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
Más detallesDiseño de sistemas concurrentes
Diseño de sistemas concurrentes Manuel Carro Universidad Politécnica de Madrid Necesidad de diseño Hasta ahora, problemas ya cerrados: Número de procesos, recursos Código de procesos Especificación de
Más detallesInstrucciones de control
Instrucciones de control Instrucciones de control de flujo C# ofrece un conjunto de sentencias similar al de C, C++ o Java. A continuación se estudian muy brevemente cada una de ellas. if if se utiliza
Más detallesFederico Peinado www.federicopeinado.es
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
Más detallesProgramación Concurrente Recopilación de teoría referente a la materia
UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller 2011 Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente,
Más detallesSistemas Operativos [Procesos]
Sistemas Operativos [Procesos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 13-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Sistemas Operativos 1 / 62 Procesos Procesos I Un
Más detallesla solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.
ALGORITMOS SECUENCIALES: La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente
Más detalles