Comunicación y sincronización con datos comunes
|
|
- María Dolores Poblete Velázquez
- hace 5 años
- Vistas:
Transcripción
1 dit UPM Comunicación y sincronización con datos comunes Juan Antonio de la Puente DIT/UPM
2 Objetivos Comprender los problemas relacionados con la comunicación entre procesos concurrentes Revisar los mecanismos de sincronización que se utilizan para la comunciación mediante datos compartidos entre tareas Estudiar la forma de realizar este tipo de comunicación en Ada Juan Antonio de la Puente 1
3 Índice Comunicación con variables comunes exclusión mutua y sincronización condicional Mecanismos de sincronización espera ocupada semáforos regiones críticas condicionales monitores Objetos protegidos en Ada ejemplos de programación Sincronización en C/POSIX mutex y variables de condición Juan Antonio de la Puente 2
4 Comunicación y sincronización Raras veces los procesos de un sistema son independientes unos de otros Más a menudo cooperan para un fin común o compiten por la utilización de recursos. Para ello es necesario realizar operaciones de comunicación y sincronización entre procesos Dos procesos se comunican cuando hay una transferencia de información de uno a otro Dos procesos están sincronizados cuando hay restricciones en el orden en que ejecutan algunas de sus acciones Los dos conceptos están relacionados Hay diferentes formas de abordar el problema: Datos comunes Mensajes Juan Antonio de la Puente 3
5 Comunicación con datos comunes En un sistema monoprocesador, la forma más directa de comunicación entre dos o más procesos consiste en compartir datos comunes Sin embargo, el acceso incontrolado a variables comunes puede producir resultados anómalos Se dice que hay una condición de carrera cuando el resultado de la ejecución depende del orden en que se intercalan las instrucciones de dos o más procesos Se trata de una situación anómala que hay que evitar Juan Antonio de la Puente 4
6 Ejemplo Incrementar contador LDA contador INC STA contador T1 T2 Incrementar contador LDA contador INC STA contador contador=0 El resultado final puede ser 1 ó 2 Depende de las velocidades relativas de los procesos Para evitar condiciones de carrera hay que asegurar que las operaciones con variables comunes se ejecutan de forma atómica (indivisible) Juan Antonio de la Puente 5
7 Exclusión mutua Una secuencia de instrucciones que se debe ejecutar de forma indivisible se denomina sección crítica Las operaciones de dos secciones críticas respecto a la misma variable no se entremezclan La forma de sincronización que se usa para proteger una sección crítica se llama exclusión mutua Supondremos que el acceso a una celda de memoria es atómico (hay exclusión mutua entre operaciones que solo hacen un acceso a memoria) Juan Antonio de la Puente 6
8 Sincronización condicional Cuando una acción de un proceso solo se puede ejecutar si otro proceso está en determinado estado o ha ejecutado ciertas acciones, hace falta un tipo de sincronización denominada sincronización condicional Ejemplo: Productor y consumidor con tampón limitado productor put tampón get consumidor No se debe hacer Put cuando el tampón está lleno. No se debe hacer Get cuando el tampón está vacío Además, hay exclusión mutua en el acceso al tampón Juan Antonio de la Puente 7
9 Índice Comunicación con variables comunes exclusión mutua y sincronización condicional Mecanismos de sincronización espera ocupada suspensión síncrona semáforos regiones críticas condicionales monitores Objetos protegidos en Ada ejemplos de programación Sincronización en C/POSIX mutex y variables de condición Juan Antonio de la Puente 8
10 Espera ocupada Una forma de realizar la exclusión mutua es usar un indicador compartido Se puede hacer si el acceso al indicador sea atómico (por ejemplo, mediante una instrucción test-and-set ) while Test_and_Set(Flag) loop null; end loop; -- sección crítica Flag := False; Si no, hay que usar algoritmos complejos Es un método poco eficiente y complicado No es fácil imponer un orden de acceso cuado hay varios procesos esperando Juan Antonio de la Puente 9
11 Suspensión síncrona Una solución más eficiente consiste en disponer de un indicador que permita que un proceso se detenga o continúe su ejecución de forma atómica la atomicidad se asegura en el núcleo de multiprogramación Ejemplo if not Flag then suspend; end if; -- sección crítica Flag := False; tiene una condición de carrera! Es mejor para sincronización condicional Juan Antonio de la Puente 10
12 Estados de un proceso terminado esperando terminación pupilo suspendido inexistente creado iniciándose ejecutable esperando inicio hijo Juan Antonio de la Puente 11
13 Semáforos Un semáforo es una variable que toma valores enteros no negativos Además de asignarle un valor inicial, sólo se pueden hacer dos operaciones con un semáforo S Wait: Si S > 0, decrementa S en 1 Si S 0, la tarea se suspende hasta que S > 0 Signal: Incrementa S en 1 Wait y Signal son indivisibles Otros nombres comunes para las operaciones de un semáforo son: Down / Up P / V (passieren / vrijmachen) Secure / Release, Juan Antonio de la Puente 12
14 Ejemplo Supongamos una definición como la siguiente (ojo, no está predefinida en Ada) package Semaphores is type Semaphore (Initial : Integer := 1) is limited private; procedure Wait (S : in out Semaphore); procedure Signal(S : in out Semaphore); private... end Semaphores; La implementación debe garantizar las propiedades de Wait y Signal Juan Antonio de la Puente 13
15 Exclusión mutua con semáforos Mutex : Semaphore; -- iniciado a 1 por defecto task T1; task body T1 is loop Wait(Mutex); -- sección crítica 1 Signal(Mutex);... end loop; end T1; task T2; task body T2 is loop Wait(Mutex); -- sección crítica 2 Signal(Mutex);... end loop; end T2; Mutex es un semáforo binario Juan Antonio de la Puente 14
16 Sincronización condicional Condition : Semaphore(0); task T1; -- espera task body T1 is loop S1A; Wait(Condition); S1B; end loop; end T1; task T2; -- avisa task body T2 is loop S2A; -- establece condición Signal(Condition); S2B; end loop; end T2; S1B no se ejecuta hasta que T2 avisa que se cumple la condición Juan Antonio de la Puente 15
17 Productor y consumidor (1) package Buffer is -- objeto abstracto procedure Put(X: in Item); procedure Get(X: out Item); end Buffer; package body Buffer is Size : constant Positive := 32; -- por ejemplo subtype Index is mod Size; type Store is array (Index) of Item; Box : Store; First, Last : Index := Index First; Mutex : Semaphore(1); -- exclusión mutua Full; : Semaphore(0); -- elementos ocupados Empty : Semaphore(Size); -- elementos libres Juan Antonio de la Puente 16
18 Productor y consumidor (2) procedure Put (X : in Item) is Wait(Empty); Wait(Mutex); Box(Last) := X; Last := Last + 1; Signal(Mutex); Signal(Full); end Put; procedure Get (X : out Item) is Wait(Full); Wait(Mutex); X := Box(First); First := First + 1; Signal(Mutex); Signal(Empty); end Get; end Buffer; Juan Antonio de la Puente 17
19 Problemas de los semáforos Es fácil cometer errores Un solo wait o signal mal colocado puede hacer que el programa funcione incorrectamente Ejemplos: Signal(S);... Signal(S); Wait(S);... Wait(S); Signal(S);... Wait(S); -- no hay exclusión mutua -- interbloqueo -- depende Es mejor usar mecanismos más abstractos y fiables regiones críticas monitores objetos protegidos Juan Antonio de la Puente 18
20 Interbloqueo (deadlock) Dos procesos están interbloqueados si cada uno de ellos espera un condición o un recurso que depende del otro X,Y : Semaphore; task T1; task body T1 is loop Wait(X); Wait(Y); -- usar recursos Signal(Y)); Signal(X); end loop; end T1; task T2; task body T2 is loop Wait(Y); Wait(X); -- usar recursos Signal(X); Signal(Y); end loop; end T2; Juan Antonio de la Puente 19
21 Interbloqueos, bloqueos vivos e inanición Se pueden evitar los interbloqueos asignando los recursos de forma ordenada no siempre es posible Se puede intentar asignar los recursos de forma más flexible pueden aparecer otros problemas:» bloqueo vivo (livelock) los procesos se ejecutan, pero ninguno consigue recursos» inanición (starvation) los procesos se ejecutan, pero algunos no consiguen el recurso nunca Juan Antonio de la Puente 20
22 Regiones críticas condicionales Una región crítica es una secuencia de instrucciones que se ejecuta en exclusión mutua el compilador produce el código de bajo nivel necesario se identifica la variable compartida a la que se accede en una sección crítica La sincronización condicional se consigue mediante guardas en las regiones críticas solo se puede entrar en la región crítica cuando la guarda es verdadera Ejemplo (ojo, no es Ada): V : shared T;... region V when condición is... end region; Juan Antonio de la Puente 21
23 Productor y consumidor (1) package body Buffer is Size : constant Positive := 32; -- por ejemplo subtype Index is mod Size; subtype Count is Natural range 0..Size; type Store is array (Index) of Item; type Buffer_Type is record Box : Store; First, Last : Index := Index First; Number : Count := 0; end record; Data : shared Buffer_Type; -- no es Ada! Juan Antonio de la Puente 22
24 Productor y consumidor (2) procedure Put (X : in Item) is region Data when Data.Number < Size do -- no es Ada! Data.Box(Data.Last) := X; Data.Last := Data.Last + 1; Data.Number := Data.Number + 1; end region; end Put; procedure Get (X : out Item) is region Data when Data.Number > 0 do X := Data.Box(Data.First); Data.First := Data.First + 1; Data.Number := Data.Number - 1; end region; end Get; -- no es Ada! end Buffer; Juan Antonio de la Puente 23
25 Problemas de las regiones críticas Implementación complicada cada vez que un proceso sale de una región crítica hay que volver a evaluar las guardas de los procesos que están esperando en otras regiones con la misma variable para ello hay que reanudar el proceso que espera, que se puede volver a suspender si la guarda es falsa potencialmente, muchos cambios de contexto No es obligatorio que estén confinadas en módulos el programa puede ser difícil de comprobar y mantener Una solución mejor son los monitores Juan Antonio de la Puente 24
26 Monitores Un monitor es un módulo cuyas operaciones se ejecutan en exclusión mutua el compilador produce el código de bajo nivel necesario La sincronización condicional se obtiene con variables de condición dos operaciones primitivas: signal y wait» wait suspende el proceso de forma incondicional y lo pone en una cola asociada a la condición que espera» signal reanuda el primer proceso que espera en la señal» no hay memoria: si no espera nadie, la señal se pierde un proceso que espera una condición libera el monitor Juan Antonio de la Puente 25
27 Productor y consumidor (1) monitor Buffer is procedure Put(X: in Item); procedure Get(X: out Item); end Buffer; -- ojo! no es Ada monitor body Buffer is -- ojo! no es Ada Size : constant Positive := 32; -- por ejemplo subtype Index is mod Size; subtype Count is Natural range 0..Size; type Store is array (Index) of Item Box : Store; First, Last : Index := Index First; Number : Count := 0; Non_Full : Condition := True; -- ojo! no es Ada Non_Empty : Condition := False; -- ojo! no es Ada Juan Antonio de la Puente 26
28 Productor y consumidor (2) procedure Put (X : in Item) is if Number = Size then Wait(Non_Full); end if; Box(Last) := X; Last := Last + 1; Number := Number + 1; Signal(Non_Empty); end Put; procedure Get (X : out Item) is if Number = 0 then Wait(Non_Empty); end if; X := Box(First); First := First + 1; Number := Number - 1; Signal(Non_Full); end Get; end Buffer; -- ojo! no es Ada -- ojo! no es Ada -- ojo! no es Ada -- ojo! no es Ada Juan Antonio de la Puente 27
29 Problemas de los monitores Las variables de condición son un mecanismo de bajo nivel La semántica de signal presenta problemas: Cuando un proceso hace signal puede haber dos procesos activos en el monitor Hay varias formas de evitar que se viole la exclusión mutua» permitir signal solo si es la última instruccíón de un subprograma» forzar una salida del monitor al hacer signal» suspender el proceso que hace signal si se reanuda otro proceso Juan Antonio de la Puente 28
30 Índice Comunicación con variables comunes exclusión mutua y sincronización condicional Mecanismos de sincronización espera ocupada semáforos regiones críticas condicionales monitores Objetos protegidos en Ada ejemplos de programación Sincronización en C/POSIX mutex y variables de condición Juan Antonio de la Puente 29
31 Objetos protegidos en Ada Combinación de monitores y regiones críticas condicionales Un objeto protegido es un objeto compuesto cuyas operaciones se ejecutan en exclusión mutua se pueden declarar tipos protegidos u objetos protegidos únicos en ambos casos hay especificación y cuerpo.» la especificación contiene la interfaz visible desde otras unidades de programa. los tipos y objetos protegidos son unidades de programa, pero no de compilación.» deben estar declarados en una unidad de compilación (paquete o subprograma) Juan Antonio de la Puente 30
32 Ejemplo: entero compartido (1) protected type Shared_Integer(Initial_Value : Integer) is function Value return Integer; procedure Change(New_Value : Integer); private Data : Integer := Initial_Value; end Shared_Integer; Las operaciones (subprogramas) se declaran en la parte pública Los detalles de implementación del tipo van en la parte privada solo son visibles en el cuerpo no se pueden declarar tipos de datos Es parecido a un registro Puede tener discriminantes tienen que ser de tipos discretos o acceso Juan Antonio de la Puente 31
33 Ejemplo: entero compartido (2) protected body Shared_Integer is function Value return Integer is return Data; end Value; procedure Change(New_Value : Integer) is Data := New_Value; end Change; end Shared_Integer; Los cuerpos de las operaciones van en el cuerpo del tipo protegido No se pueden declarar tipos ni objetos Juan Antonio de la Puente 32
34 Ejemplo: entero compartido (3) declare X : Shared_Integer(0); Y : Shared_Integer(1); X.Change(Y.Value + 1); -- ahora X.Value es 2 end; No hay cláusula use para los objetos protegidos Las operaciones deben ir siempre cualificadas con el nombre del objeto Juan Antonio de la Puente 33
35 Diagrama de procesos T1 op1 op2 P T2 op Juan Antonio de la Puente 34
36 Subprogramas protegidos Con los objetos protegidos solo se pueden efectuar operaciones protegidas Un procedimiento protegido da acceso exclusivo en lectura y escritura a los datos privados. Una función protegida da acceso concurrente en lectura sólo a los datos privados Se pueden ejecutar concurrentemente varias llamadas a una función protegida, pero no a un procedimiento protegido, ni a ambos a la vez. El núcleo de ejecución realiza la exclusión mutua mediante mecanismos más primitivos ojo! una tarea que está intentando acceder a un objeto protegido no se considera suspendida Juan Antonio de la Puente 35
37 Entradas protegidas y sincronización condicional Una entrada es una operación protegida con una interfaz semejante a la de un un procedimiento entry E (...); En el cuerpo se le asocia una barrera booleana entry E (...) when B is... si la barrera es falsa cuando se invoca la operación, la tarea que llama se suspende en una cola de espera cuando la barrera es verdadera, la tarea puede continuar Las entradas se usan para realizar sincronización condicional Juan Antonio de la Puente 36
38 Productor y consumidor (1) package Buffer is -- objeto abstracto procedure Put(X: in Item); procedure Get(X: out Item); end Buffer; package body Buffer is Size : constant Positive := 32; -- por ejemplo subtype Index is mod Size; subtype Count is Natural range 0.. Size; type Store is array (Index) of Item; Juan Antonio de la Puente 37
39 Productor y consumidor (2) protected type Buffer_Type is entry Put(X : in Item); entry Get(X : out Item); private Box : Store; First, Last : Index := Index First; Number : Count := 0; end Buffer_Type; Data : Buffer_Type; procedure Put (X : in Item) is Data.Put(X); end Put; procedure Get (X : out Item) is Data.Get(X); end Get; Juan Antonio de la Puente 38
40 Productor y consumidor (3) protected body Buffer_Type is entry Put (X : in Item) when Number < Size is Box(Last) := X; Last := Last + 1; Number := Number + 1; end Put; entry Get (X : out Item) when Number > 0 is X := Box(First); First := First + 1; Number := Number - 1; end Get; end Buffer_Type; end Buffer; Juan Antonio de la Puente 39
41 Productor y consumidor (4) with Buffer; use Buffer; procedure Producer-Consumer is task Producer; task Consumer; task body Producer is X : Item; loop Produce(X); Put(X); end loop; end Producer; task body Consumer is X : Item; loop Get(X); Consume(X); end loop; end Consumer; end Producer-Consumer; Juan Antonio de la Puente 40
42 Evaluación de las barreras Las barreras se evalúan cuando una tarea llama a una entrada y la barrera hace referencia a una variable que puede haber cambiado desde la última evaluación una tarea termina la ejecución de un procedimiento o entrada y hay tareas esperando en entradas cuyas barreras hacen referencia a variables que pueden haber cambiado desde la última evaluación No se deben usar variables globales en las barreras La correción de un programa no debe depender del momento en que se evalúan las barreras (se puede hacer con más frecuencia de lo indicado) Juan Antonio de la Puente 41
43 Semáforos (1) package Semaphores is type Semaphore (Initial : Integer := 1) is limited private; procedure Wait (S : in out Semaphore); procedure Signal(S : in out Semaphore); private protected type Semaphore (Initial : Integer := 1) is entry Wait; procedure Signal; private Value : Natural := Initial; end Semaphore; end Semaphores; Juan Antonio de la Puente 42
44 Semáforos (2) package body Semaphores is procedure Wait (S : in out Semaphore) is S.Wait; end Wait; procedure Signal(S : in out Semaphore) is S.Signal; end Signal; Juan Antonio de la Puente 43
45 Semáforos (3) protected body Semaphore is entry Wait when Value > 0 is Value := Value -1; end Wait; procedure Signal is Value := Value + 1; end Signal; end Semaphore; end Semaphores; Juan Antonio de la Puente 44
46 Recursos (1) package Resources is type Resource is limited private; procedure Allocate(R : in out Resource); procedure Free (R : in out Resource); private protected type Resource is entry Allocate; procedure Free; private Busy : Boolean := False end Resource; end Resources; Juan Antonio de la Puente 45
47 Recursos (2) package body Resources is procedure Allocate(R : in out Resource) is R.Allocate; end Wait; procedure Free(R : in out Resource) is S.Free; end Signal; Juan Antonio de la Puente 46
48 Recursos (3) protected body Resource is entry Allocate when not Busy is Busy := True; end Wait; procedure Free is Busy := False; end Signal; end Resource; end Resources; Juan Antonio de la Puente 47
49 Exclusión mutua y barreras Las tareas esperando en barreras tienen preferencia sobre las que esperan acceder al objeto de esta forma se evitan condiciones de carrera en la implementación Este modelo se llama cáscara de huevo (eggshell) tareas esperando entrar tareas esperando en barreras una tarea dentro como máximo Juan Antonio de la Puente 48
50 Radiado de mensajes (1) generic type Message is private; package Broadcast is procedure Send (M : in Message); procedure Receive (R : out Message); end Broadcast; package body Broadcast is protected Buffer is procedure Send (M : in Message); entry Receive (M : out Message); private Data : Message; Arrived : Boolean := False; end Buffer; Juan Antonio de la Puente 49
51 Radiado de mensajes (2) protected body Buffer is procedure Send (M : in Message) is if Receive'Count > 0 then Arrived := True; Data := M; end if; end Send; entry Receive (M : out Message) when Arrived is M := Data; if Receive'Count = 0 then -- el último cierra! Arrived := False; end if; end Receive; end Buffer; Juan Antonio de la Puente 50
52 Radiado de mensajes (3) procedure Send (M : in Message) is Buffer.Send(M); end Send; procedure Receive (R : out Message) is Buffer:Receive(M); end Receive; end Broadcast; Juan Antonio de la Puente 51
53 Restricciones En el cuerpo de una operación protegida no se pueden ejecutar operaciones "potencialmente bloqueantes": llamadas a entradas retardos creación o activación de tareas llamadas a subprogramas que contengan operaciones potencialmente bloqueantes Tampoco puede haber llamadas al mismo objeto El objetivo de estas restricciones es evitar que una tarea se quede suspendida indefinidamente en el acceso a un subprograma protegido Juan Antonio de la Puente 52
54 Reencolamiento Las barreras no pueden depender de los parámetros de la llamada Para conseguir el mismo efecto se permite que una llamada a una entrada que ya ha sido aceptada pueda volver a encolarse en otra entrada mediante una instrucción requeue: requeue entrada [with abort]; La nueva entrada tiene que tener un perfil de parámetros compatible con la llamada en curso, o bien no tener parámetros La primera llamada se completa al hacer el requeue La cláusula with abort permite que se cancele la llamada cuando hay temporizaciones, o cuando se aborta la tarea que llama Juan Antonio de la Puente 53
55 Sucesos (1) package Events is type Event is limited private; procedure Wait (E : Event); procedure Signal (E : Event); private protected type Event is entry Wait; entry Signal; private entry Reset; Occurred : Boolean := False; end Event; end Events; Juan Antonio de la Puente 54
56 Sucesos (2) package body Events is protected body Event is entry Wait when Occurred is null; -- sincronización sólo end Wait; entry Signal when True is -- barrera obligatoria if Wait Count > 0 then Occurred := True; requeue Reset; end if; end Signal; Juan Antonio de la Puente 55
57 Sucesos (3) entry Reset when Wait'Count = 0 is Occurred := False; end Reset; end Event; procedure Wait (E : Event) is E.Wait; end Wait; procedure Signal (E : Event) is E.Signal; end Signal; end Events; Juan Antonio de la Puente 56
58 Tareas esporádicas with Events; use Events;... Button_Pressed : Event;... task body Sporadic is loop Wait (Button_Pressed); -- acción esporádica end loop; end Sporadic; task body Event_Handler is... Signal (Button_Pressed); -- puede activar varias tareas... end Event_Handler; Juan Antonio de la Puente 57
59 Objetos de suspensión Proporcionan una funcionalidad similar cuando sólo hay una tarea que espera package Ada.Synchronous_Task_Control is type Suspension_Object is limited private; procedure Set_True (S : in out Suspension_Object); procedure Set_False (S : in out Suspension_Object); function Current_State (S : Suspension_Object) return Boolean; procedure Suspend_Until_True (S : in out Suspension_Object); -- Raises Program_Error if more than one task tries to -- suspend on S at once -- Sets S to False private... end Ada.Synchronous_Task_Control; Juan Antonio de la Puente 58
60 Tarea esporádica (2) with Ada.Synchronous_Task_Control; use Ada.Synchronous_Task_Control;... Button_Pressed : Suspension_Object; task body Sporadic is... loopsuspend_until_true (Button_Pressed); -- acción esporádica end loop; end Sporadic; task body Event_Handler is Set_To_True (Button_Pressed);... end Event_Handler; Juan Antonio de la Puente 59
61 Índice Comunicación con variables comunes exclusión mutua y sincronización condicional Mecanismos de sincronización espera ocupada semáforos regiones críticas condicionales monitores Objetos protegidos en Ada ejemplos de programación Sincronización en C/POSIX mutex y variables de condición Juan Antonio de la Puente 60
62 Sincronización en C/POSIX.1c Hay dos mecanismos que permiten emular monitores con interfaz de procedimiento Un mutex es una variable que proporciona exclusión mutua mediante dos operaciones, lock y unlock una variable de condición proporciona sincronización condicional mediante dos operaciones, wait y signal Ambos tipos de variables pueden tener atributos Otras operaciones: crear y destruir, espera temporizada Juan Antonio de la Puente 61
63 Definiciones /* pthreads.h */ typedef... pthread_mutext_t; typedef... pthread_cond_t;... int pthread_mutex_lock (pthread_mutext_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_cond_wait(pthread_cond_t *cond, pthread_mutext_t *mutex); /* espera y libera el mutex */ int pthread_cond_signal(pthread_cond_t *cond); /* puede reanudar más de un thread */ Juan Antonio de la Puente 62
64 Productor y consumidor (1) #include pthreads.h #define SIZE 32 typedef struct { pthread_mutext_t mutex; pthread_cond_t non_full; pthread_cond_t non_empty; int first, last, number; int box[size]; } buffer_t; Juan Antonio de la Puente 63
65 Productor y consumidor (2) int put(int item, buffer_t *buffer) { pthread_mutex_lock(&buffer->mutex); while (buffer->number == SIZE) pthread_cond_wait(&buffer->non_full, &buffer->mutex); buffer[last] = item; last = (last++)%size; number++; pthread_mutex_unlock(&buffer->mutex); pthread_cond_signal(&buffer->non_empty); return 0; } int get(int *item, buffer_t *buffer) { pthread_mutex_lock(&buffer->mutex); while (buffer->number == 0) pthread_cond_wait(&buffer->non_empty, &buffer->mutex); item = buffer[first]; first = (first++)%size; number--; pthread_mutex_unlock(&buffer->mutex); pthread_cond_signal(&buffer->non_full); return 0; } Juan Antonio de la Puente 64
66 Resumen El acceso de dos o más tareas concurrentes a las variables comunes debe realizarse en exclusión mutua Otra forma de sincronización está ligada al cumplimento de una condición Algunos mecanismos que permiten conseguir ambas formas de sincronización son: semáforos regiones críticas condicionales monitores Los objetos protegidos reúnen las ventajas de las regiones críticas condicionales y los monitores Los mutex y las variables condicionales de POSIX proporcionan un mecanismo similar a los monitores Juan Antonio de la Puente 65
Comunicación y sincronización con datos comunes
dit UPM Comunicación y sincronización con datos comunes Juan Antonio de la Puente DIT/UPM Transparencias basadas en el capítulo 8 del libro de A. Burns y A. Wellings Real Time Systems and Programming Languages,
Sistemas multiprogramados
dit UPM Sistemas multiprogramados Juan Antonio de la Puente DIT/UPM Objetivos Veremos cómo realizar sistemas de tiempo real con arquitectura asíncrona tareas como hebras de sistema operativo no todas las
UPM Comunicación entre tareas en Ada
UPM Comunicación entre tareas en Ada Juan Antonio de la Puente DIT/UPM Objetos protegidos en Ada Un objeto protegido es un objeto compuesto cuyas operaciones se ejecutan en exclusión mutua se pueden declarar
Comunicación y sincronización
Comunicación y sincronización Son conceptos relacionados con la interacción entre los procesos La comunicación se refiere al paso de información de un proceso a otro La sincronización corresponde al cumplimiento
UPM Concurrencia en Ada
UPM Concurrencia en Ada Juan Antonio de la Puente DIT/UPM Objetivos Veremos el modelo de concurrencia de Ada tareas comunicación y sincronización con objetos protegidos otras formas de comunicación (citas)
Sincronización de Procesos
Sincronización de Procesos Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Sincronización de Procesos Fundamentos El Problema de la Sección Crítica Solución a la sección
Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1
Semáforos Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la Creative Commons
Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.
Junio 2008 Programación Concurrente 1/6 Normas Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software Este examen es un cuestionario
Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos
Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la Creative Commons License
Semáforos. Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos
Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la Creative Commons License
UPM Concurrencia en Java
UPM Concurrencia en Java Juan Antonio de la Puente DIT/UPM Hebras (threads) Una hebra es un objeto de una subclase de java.lang.thread o una implementación de la interfaz Runnable El código que ejecuta
Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi
Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:
Programación concurrente
Programación concurrente Master de Computación I Conceptos y recursos para la programación concurrente: I.6 Sincronización basada en memoria compartida. J.M. Drake M. Aldea Procesos concurrentes y memoria
Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos
Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión
Sincronización de Procesos. Módulo 6. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur. Sincronización de Procesos
Sincronización de Procesos Módulo 6 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Sincronización de Procesos Fundamentos El Problema de la Sección Crítica La Solución
Taller de Programación Paralela
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.............................................................
MECANISMOS PARA SINCRONIZACIÓN. Semáforos
MECANISMOS PARA SINCRONIZACIÓN Semáforos Mecanismos para sincronización Una vez discutidos los principales problemas a enfrentar para coordinar procesos/hilos que comparten espacio de direccionamiento,
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA PRACTICA 8 MONITORES BASADOS EN SEMÁFOROS
Programació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 Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a
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
dit Programación concurrente Sincronización condicional UPM
20151028 dit UPM Programación concurrente Sincronización condicional Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons
Lección 5: Sincronización de procesos mediante semáforos
Lección 5: Sincronización de procesos mediante semáforos Introducción Estados de un proceso Semáforos: sintaxis y semántica Técnicas de programación con semáforos: el problema de la sección crítica el
dit Programación de sistemas grandes Juan Antonio de la Puente DIT/UPM UPM
dit UPM Programación de sistemas grandes Juan Antonio de la Puente DIT/UPM Objetivos Repasaremos los elementos de los lenguajes de programación que facilitan la realización de sistemas grandes Veremos
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
Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA.
Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA. Carácterísticas: Construcción de alto nivel. Estructura de datos estática:
Planificación de tareas en Ada
dit UPM Planificación de tareas en Ada Juan Antonio de la Puente DIT/UPM Características generales Modelo básico planificación con prioridades dinámicas» también EDF políticas de despacho para tareas con
Lección 9: Programación concurrente con semáforos
Lección 9: Programación concurrente con semáforos Semáforos: sintaxis y semántica Técnicas de programación con semáforos: el ejemplo de la sección crítica un ejemplo de barreras el caso de productores/consumidores
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Procesos concurrentes y problemas en la comunicación y la sincronización Contenido 2 Concurrencia. Condiciones de carrera. Exclusión mutua
Concurrencia Condiciones de Carrera. Guillermo Román Díez
Concurrencia Condiciones de Carrera Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Condiciones de Carrera 1/20 Condiciones de carrera Condición
Sincronización de Threads
Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)
Acceso coordinado a recursos compartidos
Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos
ISO Tema 8,
ISO Tema 8, 2017-2018 Pablo González Nalda Depto. de Lenguajes y Sistemas Informáticos 13 de abril de 2018 Modificado el 27 de abril de 2018 de la presentación 1 2 3 4 5 6 7 2 / 32 1 2 3 4 5 6 7 3 / 32
Taller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 4, 2008 y sincronización Cuando dos o más tareas (procesos o hebras) comparten algún recurso
Modelo de Cómputo. Programación concurrente
Programa concurrente Programa concurrente: conjunto finito de procesos (secuenciales). Un proceso secuencial está escrito con un conjunto finito de acciones atómicas. Ejecución: una secuencia de acciones
Unidad 1: Gestión de Procesos
Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de
Concurrencia Monitores. Guillermo Román Díez
Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de
Lección 6: Ejemplos de programación con semáforos
Lección 6: Ejemplos de programación con semáforos El problema de la cena de los filósofos El problema de los lectores y escritores Ejercicios Gestión de concurrencia mediante paso de testigo (implementación
Sistemas operativos. Comunicación y sincronización de procesos
Sistemas operativos Comunicación y sincronización de procesos Comunicación y sincronización de procesos Contenido 1. Introducción 2. Comunicación por memoria común 3. El problema de la sección crítica
Resumen Examen de Septiembre programación Concurrente.
Resumen Examen de Septiembre programación Concurrente. Tema1: Introducción a la programación Concurrente. - Hay que evitar la espera activa (se denomina espera activa a una técnica donde un proceso repetidamente
Estados de un proceso
Semáforos Estados de un proceso Inactivo Listo Ejecutando Completo Escribimos p.state := ready p. state := running Bloqueado Para indicar que un proceso cambia de estado Semáforo Es un tipo de dato abstracto
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
06/06/2017. Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de Sentencia Nivel de Unidad Nivel de Programa
1 Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de Sentencia Nivel de Unidad Nivel de Programa 2 Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de
SISTEMAS OPERATIVOS:
SISTEMAS OPERATIVOS: Lección 6: Procesos concurrentes y problemas en la comunicación y la sincronización Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García
TEMA 5. PROGRAMACIÓN CONCURRENTE.
TEMA 5. PROGRAMACIÓN CONCURRENTE. 5.1. Ejecución concurrente. 5.2. Representación de procesos. 5.3. Tareas en Ada. 5.4. Ejemplo. 5.5. Comunicación y sincronización con variables comunes. 5.6. Comunicación
Sincronización de procesos
Sincronización de procesos Contenido Procesos concurrentes. El problema de la seccion critica Problemas clásicos de comunicación y sincronización. Mecanismos de comunicación y sincronización. DSO 2014
dit Concurrencia Juan Antonio de la Puente DIT/UPM UPM
dit UPM Concurrencia Juan Antonio de la Puente DIT/UPM Objetivos Repasaremos los principios de la programación concurrente Analizaremos la distintas alternativas de ejecución de procesos concurrentes Veremos
Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales.
GRAFOS DE PRECEDENCIA Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales. Un arco de un nodo Si al nodo Sj significa que la sentencia Sj puede ejecutarse sólo cuando ha acabado
Programación Concurrente y Distribuída Estado Compartido, 2010
Programación Concurrente y Distribuída Estado Compartido, 2010 Camilo Rueda 1 1 Universidad Javeriana-Cali 9 de abril de 2010 Concurrencia con estado: introducción problema: modelar con puertos un objeto
Secciones críticas y exclusión mutua
Secciones críticas y exclusión mutua Lecturas: Andrews, secciones 3.1, 3.2, 3.3, 3.4 Ben-Ari, sección 2.2 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la
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
Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización. Slides de Samuel Oporto Díaz
Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización Slides de Samuel Oporto Díaz CONCURRENCIA 2 Concurrencia La concurrencia es la simultaneidad de hechos. Un programa concurrente
Concurrencia de Procesos
Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)
Por ejemplo, el siguiente error conduce inmediatamente a un deadlock:
Monitores Los semáforos, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles a errores. Su utilización exige disciplina.
SEMAFOROS. if hay procesos suspendidos en este semáforo then despertar a uno de ellos else S = S + 1
1 de 21 22/12/2007 21:48 SEMAFOROS 1. DEFINICIONES 1.1. Semáforo general 1.2. Semáforo binario 1.3. Semáforo con cola de procesos bloqueados 1.4. Semáforo con espera activa (busy-wait) 1.5. Consecuencias
Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo
Concurrencia Programación Concurrente Espera ocupada. Primitivas IPC con bloqueo Programación concurrente Los lenguajes concurrentes tienen elementos para: Crear procesos Sincronizar procesos Comunicar
Planificación con prioridades
dit UPM Planificación con prioridades Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Planificación El objetivo de los métodos de planificación (scheduling) es repartir el tiempo
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
Sistemas Operativos. Concurrencia. Concurrencia de procesos. Concurrencia de procesos. Ejecución simultánea de procesos.
Sistemas Operativos Concurrencia Mario Medina (mariomedina@udec.cl) Everybody understands what concurrency means? Two lies at once. Todos entienden qué significa concurrencia? Dos mentiras a la vez. Luis
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
PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES.
PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES. Cinco filósofos pasan su vida pensando y comiendo. Los filósofos comparten una mesa circular rodeada por cinco sillas, una para cada uno de
UPM. Introducción a Ada. Juan Antonio de la Puente DIT/UPM. Copyright , Juan Antonio de la Puente
UPM Introducción a Ada Juan Antonio de la Puente DIT/UPM Copyright 2007-2008, Juan Antonio de la Puente Índice Introducción cómo escribir programas sencillos Datos e instrucciones aspectos básicos del
Primitivas de Sincronización
Primitivas de Sincronización JUAN CARLOS CONDE RAMÍREZ DISTRIBUTED COMPUTING Introducción Todas las soluciones previas al problema de mutex fueron un desperdicio de algún modo: Si un proceso es incapaz
UNIDAD 3 MEMORIA COMÚN. El problema de exclusión mutua
UNIDAD 3 MEMORIA COMÚN El problema de exclusión mutua Exclusión mutua Exclusión mutua significa asegurar que un recurso compartido (variable, estructura de datos, etc.) sea accedida por un solo hilo a
SINCRONIZACIÓN DE PROCESOS
SINCRONIZACIÓN DE PROCESOS 1 Introducción Los procesos acceden a datos o recursos compartidos El acceso puede provocar que el estado final de los datos no sea correcto, generando incoherencias debido a
Introducción al Lenguaje de Programación Ada
Instrumentación de Tiempo Real Introducción al Lenguaje de Programación Ada Mario Aldea Rivas Departamento de Electrónica y Computadores Universidad de Cantabria GRUPO DE COMPUTADORES Y TIEMPO REAL Mario
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
Parte I: Programación en Ada
Parte I: Programación en Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas 5.
Teoría de Sistemas Operativos Sincronización Procesos
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica º Semestre, 00 Gabriel Astudillo Muñoz http://www.elo.utfsm.cl/~elo1 Dos o más procesos leen o escriben ciertas zonas compartidas
Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)
Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9) Temas: Planificación Sincronización y Comunicación entre Procesos Funciones
Instrumentación de Tiempo Real
Instrumentación de Tiempo Real Tema 1. Introducción Tema 2. Recursos de acceso al hardware Tema 3. Interrupciones Tema 4. Puertas básicas de entrada/salida (I) Tema 5. Recursos de temporización de bajo
CONCURRENCIA. Sincronización. Sistemas Operativos y Distribuidos. Prof. Javier Echaiz 1. Material Adicional (SOSD Mod 4)
Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización CONCURRENCIA Slides de Samuel Oporto Díaz 2 Concurrencia La concurrencia es la simultaneidad de hechos. Un programa concurrente
Concurrencia. Guillermo Román Díez
Concurrencia Semáforos Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2017-2018 Guillermo Román, UPM CC: Semáforos 1/11 Problemas de la espera activa Los algoritmos de espera
SISTEMAS OPERATIVOS:
SISTEMAS OPERATIVOS: Lección 7: Hilos y mecanismos de comunicación y sincronización Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García Blas José Manuel Pérez
Sistemas Operativos Tema 6. Concurrencia
Contenidos Sistemas Operativos Tema 6. Concurrencia Sistemas concurrentes El problema de la sección crítica Semáforos Monitores 1998-2008 José Miguel Santos Alexis Quesada Francisco Santana 1 2 Bibliografía
Unidad 2: Gestión de Procesos
Unidad 2: Gestión de Procesos Tema 6, Concurrencia: Exclusión mutua y sincronización. 6.1 Principios generales de concurrencia. 6.2 EM: Soluciones software (Algoritmos de Dekker y Peterson). 6.3 EM: Soluciones
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
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
Programación concurrente en Java
Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en
Arreglos y Subrangos
Arreglos y Subrangos Programación 1 InCo - FING Programación 1 Arreglos y Subrangos InCo - FING 1 / 27 Tipos de datos definidos por el programador Programación 1 Arreglos y Subrangos InCo - FING 2 / 27
Modelos de Programación Paralela
Modelos de Programación Paralela Modelos de Programación para Multiprocesadores El Modelo de Variables Compartidas Expresión del Paralelismo en el Modelo de Variables Compartidas Primitivas de Sincronización
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Sistemas Computacionales Sistemas Operativos Docente: M.G.A.
dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente
dit UPM Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Objetivos Plantear los problemas básicos relacionados con el cumplimiento de los
Apellidos: Nombre: Matrícula: UNIVERSIDAD POLITÉCNICA DE MADRID
Apellidos: Nombre: Matrícula: Concurrencia (parte 2)/clave: a Curso 2014/2015-2 o semestre (junio 2015) Grado en Ingeniería Informática / Grado en Matemáticas e Informática UNIVERSIDAD POLITÉCNICA DE MADRID
Sincronización entre procesos (aka: semáforos)
Sincronización entre procesos (aka: semáforos) DC - FCEyN - UBA Sistemas Operativos, 1c-2016 Dónde estamos? De dónde venimos? Race condition Semáforos Race condition Semáforos Primero repasemos brevemente
PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela
Introducción a los tipos de datos abstractos (TAD)
Introducción a los tipos de datos abstractos (TAD) SINTAXIS Y SEMÁNTICA DEL LENGUAJE Prof. Lic. Ma. Gabriela Cerra Definición de abstracción Abstracción: idea general que se concentra sobre las cualidades
Fundamentos de los Sistemas Operativos
Práctica 3 : hilos! Fundamentos de los Sistemas Operativos Grado en Ingeniería Informática Rubén García Rodríguez Alexis Quesada Arencibia Eduardo Rodríguez Barrera Francisco J. Santana Pérez José Miguel
Programación Concurrente y Distribuida Paso de mensajes
Programación Concurrente y Distribuida Paso de mensajes Camilo Rueda 1 1 Universidad Javeriana-Cali PUJ 2010 Hacia concurrencia de paso de mensajes Ejercicio: Modelar captura de un bus Un cierto número
VHDL. Lenguaje de descripción hardware Estructura Básica de diseño
VHDL. Lenguaje de descripción hardware Estructura Básica de diseño 2007 A.G.O. All Rights Reserved Estructura de un diseño en VHDL LIBRARY declaraciones VHDL estructura básica ENTITY caja negra ARCHITECTURE
2.2 Nombres, Ligado y Ámbito
2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el
Programación de Sistemas Concurrentes y Distribuidos 1 a Convocatoria curso 12/13
Programación de Sistemas Concurrentes y Distribuidos 1 a Convocatoria curso 12/13 5 de febrero de 2013 Dpto. de Informática e Ingeniería de Sistemas Universidad de Zaragoza Ejercicio 1 (1.5 ptos.) Considérese
seguridad y vivacidad/viveza
Aclaraciones seguridad y vivacidad/viveza Un programa concurrente puede fallar por varias razones, las cuales se pueden clasificar entre dos grupos de propiedades: seguridad: Esa propiedad indica que no
Sistemas Operativos Tema 7. Concurrencia
Contenidos Sistemas Operativos Tema 7. Concurrencia Sistemas concurrentes El problema de la sección crítica Semáforos Monitores 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana 1 2 Bibliografía
SISTEMAS OPERATIVOS Manejo de procesos
SISTEMAS OPERATIVOS Manejo de procesos Amilcar Meneses Viveros ameneses@computacion.cs.cinvestav.mx Universidad de Occidente Presentación Concepto de proceso Despacho de procesos Operaciones sobre procesos