SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
Identificar estado compartido y restricciones de problema


-Buffer de tamaño limitado compartido entre productores y consumidores
-Productor escribe en buffer[ in ], in indica posición de escritura en buffer
-Consumidor extrae de buffer[ out ], out indica posicion de extracción de buffer
-Contador indica el número de elementos actuales en el buffer
-Múltiples productores deben manipular in, buffer[ in ] y contador atómicamente
-Múltiples consumidores deben manipular out, buffer[ out ] y contador atómicamente
-Múltiples consumidores y productores deben manejar contador atómicamente


int contador = 0; // indica número de items en buffer
char buffer[ N ];
int in =0;
int out = 0;
lock_t mutex;


Productor
while( TRUE ){
       // produce items en proxProd
       lock( mutex );
       while( contador == N ){
                unlock( mutex );
                yield();
       }
       buffer[ in ] = proxProd;
       in = ( in + 1 ) % N;
       contador++;
       unlock( lock );
}


Consumidor
while( TRUE ){
       // produce items en proxProd
       lock( mutex );
       while( contador == 0 ){
                unlock( mutex );
yield();
         }
         proxCons = buffer[ out ];
         out = ( out + 1 ) % N;
         contador--;
         unlock( mutex );
}


Problemas con semáforos


    •    Son variables globales por lo tanto pueden ser accesadas de cualquier hebra
         directamente ( no es buena en ingeniería de software)
    •    No hay conexión entre el semáforo y el recurso para el cual se quiere controlar
         acceso
    •    Usados como mutex (ingreso a sección crítica) y para coordinación (planificación,
         elección quien tiene acceso al recurso)
    •    No se puede controlar su uso, no hay garantía que el programador los use
         adecuadamente ( fácil de cometer errores)


* Operación Wait (P): Si el valor del semáforo no es nulo, esta operación decrementa en
uno el valor del semáforo. En el caso de que su valor sea nulo, la operación suspende el
proceso que lo ejecuta y lo ubica en la lista del semáforo a la espera de que deje de ser
nulo el valor.
* Operación Signal (V): Incrementa el valor del semáforo, y en caso de que haya
procesos en la lista de espera del semáforo, se activa uno de ellos para que concluya su
operación Wait.


Pseudocódigo de la operación:
wait(p);
if p>0
then p:= p-1;
else Suspende el proceso y lo encola en la lista del semáforo.


Pseudocódigo de la operación:
signal(p);
if Hay algún proceso en la lista del semáforo
then Activa uno de ellos
else p:= p+1;



Sincronización basada en semáforos
process Productor;
var dato: Tipo_Dato;
         begin
         repeat
                  produceDato(var dato);
                  dejaDato(dato);
         signal(datoDisponible);
         forever;
end:



La clave para implementar semáforos es disponer de un mecanismo(lock y unlock) que
permita garantizar las secciones críticas de las primitivas wait y signal.


Wait
lock
if s>0
then s:= s-1;
else Suspende el proceso;
unlock;


Signal
lock
if Hay procesos suspendidos
then Desbloquea uno de los procesos;
else s:= s+1;
unlock;
- Peligros que introducen los semáforos son:
* Un procedimiento wait y signal pueden olvidarse accidentalmente y ello conduce a
una mal función catastrófica en el programa. En general un olvido de una sentencia wait
conduce a un error de seguridad, como que no se respete una región de exclusión
mutua, así mismo, un olvido de una sentencia signal, conduce a un bloqueo.
* Pueden incluirse todas las sentencias wait y signal necesarias, pero en puntos no
correctos del programa o en orden no adecuado.
* La solución de los mecanismos de exclusión mutua o de sincronización mediante
semáforos, dan lugar a un código con operaciones wait y signal relativas a un mismo
semáforo, muy dispersas por el código del programa, lo que constituye una grave
dificultad para comprender el programa y para mantenerlo.

Mais conteúdo relacionado

Mais procurados

Mais procurados (19)

Clase no12
Clase no12Clase no12
Clase no12
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
Instrucciones de control Parte II
Instrucciones de control Parte IIInstrucciones de control Parte II
Instrucciones de control Parte II
 
Tecnicas de deteccion de errores y pruebas en plc
Tecnicas de deteccion de errores y pruebas en plcTecnicas de deteccion de errores y pruebas en plc
Tecnicas de deteccion de errores y pruebas en plc
 
Plc intrucciones basicas
Plc intrucciones basicasPlc intrucciones basicas
Plc intrucciones basicas
 
El plc
El plcEl plc
El plc
 
Timer 0 - Pic16F877A
Timer 0 - Pic16F877ATimer 0 - Pic16F877A
Timer 0 - Pic16F877A
 
Clase 2
Clase 2Clase 2
Clase 2
 
Analisis sintáctico
Analisis sintácticoAnalisis sintáctico
Analisis sintáctico
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
 
Programación conceptos básicos
Programación conceptos básicosProgramación conceptos básicos
Programación conceptos básicos
 
Ejemplos 4to Examen Mci
Ejemplos 4to Examen MciEjemplos 4to Examen Mci
Ejemplos 4to Examen Mci
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
Control y robótica
Control y robóticaControl y robótica
Control y robótica
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
 
DISEÑO E IMPLEMENTACIÓN DE UN CONTROLADOR PID
DISEÑO E IMPLEMENTACIÓN DE UN CONTROLADOR PIDDISEÑO E IMPLEMENTACIÓN DE UN CONTROLADOR PID
DISEÑO E IMPLEMENTACIÓN DE UN CONTROLADOR PID
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con Arduino
 
Practica pid labview
Practica pid labviewPractica pid labview
Practica pid labview
 

Destaque

Communique´ de presse selecta 2013
Communique´ de presse selecta 2013Communique´ de presse selecta 2013
Communique´ de presse selecta 2013europages1
 
Paragraf deskripsi
Paragraf deskripsiParagraf deskripsi
Paragraf deskripsipurwantaka
 
Visitas guiadas 2011_Diciembre
Visitas guiadas 2011_DiciembreVisitas guiadas 2011_Diciembre
Visitas guiadas 2011_Diciembreturismocoruna
 
Folleto vg12 bsmpara web
Folleto vg12 bsmpara webFolleto vg12 bsmpara web
Folleto vg12 bsmpara webturismocoruna
 
Trasplante de médula ósea
Trasplante de médula óseaTrasplante de médula ósea
Trasplante de médula óseaanelisaa
 
Visitas Guiadas 2011 | Turismo da Coruña
Visitas Guiadas 2011 | Turismo da CoruñaVisitas Guiadas 2011 | Turismo da Coruña
Visitas Guiadas 2011 | Turismo da Coruñaturismocoruna
 
Travertino -remax_christiano
Travertino  -remax_christianoTravertino  -remax_christiano
Travertino -remax_christianocacolares
 
Obama los drones y la ética norteamericana
Obama los drones y la ética norteamericanaObama los drones y la ética norteamericana
Obama los drones y la ética norteamericanarubèn ramos
 

Destaque (18)

아인슈타인의 유산
아인슈타인의 유산아인슈타인의 유산
아인슈타인의 유산
 
Cefaleas curso semergen
Cefaleas curso semergenCefaleas curso semergen
Cefaleas curso semergen
 
Communique´ de presse selecta 2013
Communique´ de presse selecta 2013Communique´ de presse selecta 2013
Communique´ de presse selecta 2013
 
Contraportada cursos
Contraportada cursosContraportada cursos
Contraportada cursos
 
Paragraf deskripsi
Paragraf deskripsiParagraf deskripsi
Paragraf deskripsi
 
Visitas guiadas 2011_Diciembre
Visitas guiadas 2011_DiciembreVisitas guiadas 2011_Diciembre
Visitas guiadas 2011_Diciembre
 
Folleto vg12 bsmpara web
Folleto vg12 bsmpara webFolleto vg12 bsmpara web
Folleto vg12 bsmpara web
 
Trasplante de médula ósea
Trasplante de médula óseaTrasplante de médula ósea
Trasplante de médula ósea
 
Year 6 camp
Year 6 campYear 6 camp
Year 6 camp
 
Cabinet Hardware
Cabinet HardwareCabinet Hardware
Cabinet Hardware
 
Visitas Guiadas 2011 | Turismo da Coruña
Visitas Guiadas 2011 | Turismo da CoruñaVisitas Guiadas 2011 | Turismo da Coruña
Visitas Guiadas 2011 | Turismo da Coruña
 
Sentença
SentençaSentença
Sentença
 
2º ESO Renacimiento escultura
2º ESO Renacimiento escultura2º ESO Renacimiento escultura
2º ESO Renacimiento escultura
 
Vision Nocturna
Vision NocturnaVision Nocturna
Vision Nocturna
 
Bab 5
Bab 5Bab 5
Bab 5
 
Travertino -remax_christiano
Travertino  -remax_christianoTravertino  -remax_christiano
Travertino -remax_christiano
 
Katasendi
KatasendiKatasendi
Katasendi
 
Obama los drones y la ética norteamericana
Obama los drones y la ética norteamericanaObama los drones y la ética norteamericana
Obama los drones y la ética norteamericana
 

Semelhante a Blog

SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSlorenapardo
 
ARDUINO - GRAFCET - IMPLEMENTACIÓN DE LA METODOLOGÍA PARA TRADUCIR AL ...
ARDUINO  - GRAFCET  -  IMPLEMENTACIÓN   DE LA  METODOLOGÍA PARA TRADUCIR  AL ...ARDUINO  - GRAFCET  -  IMPLEMENTACIÓN   DE LA  METODOLOGÍA PARA TRADUCIR  AL ...
ARDUINO - GRAFCET - IMPLEMENTACIÓN DE LA METODOLOGÍA PARA TRADUCIR AL ...Jovanny Duque
 
Alarm - Proyecto de implementación de un TSR en MS-DOS
Alarm - Proyecto de implementación de un TSR en MS-DOSAlarm - Proyecto de implementación de un TSR en MS-DOS
Alarm - Proyecto de implementación de un TSR en MS-DOSEgdares Futch H.
 
11 Automata Program
11 Automata Program11 Automata Program
11 Automata ProgramF Blanco
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2Luis Zurita
 
Automatizacion conceptos generales y diseño
Automatizacion conceptos generales y diseñoAutomatizacion conceptos generales y diseño
Automatizacion conceptos generales y diseñotechonmyweb
 
Actividad teorico practica
Actividad teorico practica Actividad teorico practica
Actividad teorico practica Hugo Mora
 
Ps 10 sos_procesos_señales
Ps 10 sos_procesos_señalesPs 10 sos_procesos_señales
Ps 10 sos_procesos_señalesSan Díaz
 
So 07-concurrencia-6x1
So 07-concurrencia-6x1So 07-concurrencia-6x1
So 07-concurrencia-6x1DIEGODIEGO23
 
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...Jovanny Duque
 

Semelhante a Blog (20)

Monitores
MonitoresMonitores
Monitores
 
Semaforos
SemaforosSemaforos
Semaforos
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
 
Semaforos
SemaforosSemaforos
Semaforos
 
ARDUINO - GRAFCET - IMPLEMENTACIÓN DE LA METODOLOGÍA PARA TRADUCIR AL ...
ARDUINO  - GRAFCET  -  IMPLEMENTACIÓN   DE LA  METODOLOGÍA PARA TRADUCIR  AL ...ARDUINO  - GRAFCET  -  IMPLEMENTACIÓN   DE LA  METODOLOGÍA PARA TRADUCIR  AL ...
ARDUINO - GRAFCET - IMPLEMENTACIÓN DE LA METODOLOGÍA PARA TRADUCIR AL ...
 
Capitulo3
Capitulo3Capitulo3
Capitulo3
 
Tema0397
Tema0397Tema0397
Tema0397
 
Alarm - Proyecto de implementación de un TSR en MS-DOS
Alarm - Proyecto de implementación de un TSR en MS-DOSAlarm - Proyecto de implementación de un TSR en MS-DOS
Alarm - Proyecto de implementación de un TSR en MS-DOS
 
Clase 1
Clase 1Clase 1
Clase 1
 
Robo Taller
Robo TallerRobo Taller
Robo Taller
 
Ing. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 MódulosIng. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 Módulos
 
11 Automata Program
11 Automata Program11 Automata Program
11 Automata Program
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
lógica programable
lógica programablelógica programable
lógica programable
 
Señales en Linux
Señales en LinuxSeñales en Linux
Señales en Linux
 
Automatizacion conceptos generales y diseño
Automatizacion conceptos generales y diseñoAutomatizacion conceptos generales y diseño
Automatizacion conceptos generales y diseño
 
Actividad teorico practica
Actividad teorico practica Actividad teorico practica
Actividad teorico practica
 
Ps 10 sos_procesos_señales
Ps 10 sos_procesos_señalesPs 10 sos_procesos_señales
Ps 10 sos_procesos_señales
 
So 07-concurrencia-6x1
So 07-concurrencia-6x1So 07-concurrencia-6x1
So 07-concurrencia-6x1
 
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
 

Mais de dgzz

Patrones
PatronesPatrones
Patronesdgzz
 
Ogro
OgroOgro
Ogrodgzz
 
Sq lactividades
Sq lactividadesSq lactividades
Sq lactividadesdgzz
 
Sq lactividades
Sq lactividadesSq lactividades
Sq lactividadesdgzz
 
2nd part
2nd part2nd part
2nd partdgzz
 
Vmfs
VmfsVmfs
Vmfsdgzz
 
Dead
DeadDead
Deaddgzz
 
Blog
BlogBlog
Blogdgzz
 
Act1
Act1Act1
Act1dgzz
 
Act1
Act1Act1
Act1dgzz
 

Mais de dgzz (10)

Patrones
PatronesPatrones
Patrones
 
Ogro
OgroOgro
Ogro
 
Sq lactividades
Sq lactividadesSq lactividades
Sq lactividades
 
Sq lactividades
Sq lactividadesSq lactividades
Sq lactividades
 
2nd part
2nd part2nd part
2nd part
 
Vmfs
VmfsVmfs
Vmfs
 
Dead
DeadDead
Dead
 
Blog
BlogBlog
Blog
 
Act1
Act1Act1
Act1
 
Act1
Act1Act1
Act1
 

Blog

  • 1. Identificar estado compartido y restricciones de problema -Buffer de tamaño limitado compartido entre productores y consumidores -Productor escribe en buffer[ in ], in indica posición de escritura en buffer -Consumidor extrae de buffer[ out ], out indica posicion de extracción de buffer -Contador indica el número de elementos actuales en el buffer -Múltiples productores deben manipular in, buffer[ in ] y contador atómicamente -Múltiples consumidores deben manipular out, buffer[ out ] y contador atómicamente -Múltiples consumidores y productores deben manejar contador atómicamente int contador = 0; // indica número de items en buffer char buffer[ N ]; int in =0; int out = 0; lock_t mutex; Productor while( TRUE ){ // produce items en proxProd lock( mutex ); while( contador == N ){ unlock( mutex ); yield(); } buffer[ in ] = proxProd; in = ( in + 1 ) % N; contador++; unlock( lock ); } Consumidor while( TRUE ){ // produce items en proxProd lock( mutex ); while( contador == 0 ){ unlock( mutex );
  • 2. yield(); } proxCons = buffer[ out ]; out = ( out + 1 ) % N; contador--; unlock( mutex ); } Problemas con semáforos • Son variables globales por lo tanto pueden ser accesadas de cualquier hebra directamente ( no es buena en ingeniería de software) • No hay conexión entre el semáforo y el recurso para el cual se quiere controlar acceso • Usados como mutex (ingreso a sección crítica) y para coordinación (planificación, elección quien tiene acceso al recurso) • No se puede controlar su uso, no hay garantía que el programador los use adecuadamente ( fácil de cometer errores) * Operación Wait (P): Si el valor del semáforo no es nulo, esta operación decrementa en uno el valor del semáforo. En el caso de que su valor sea nulo, la operación suspende el proceso que lo ejecuta y lo ubica en la lista del semáforo a la espera de que deje de ser nulo el valor. * Operación Signal (V): Incrementa el valor del semáforo, y en caso de que haya procesos en la lista de espera del semáforo, se activa uno de ellos para que concluya su operación Wait. Pseudocódigo de la operación: wait(p); if p>0 then p:= p-1; else Suspende el proceso y lo encola en la lista del semáforo. Pseudocódigo de la operación: signal(p); if Hay algún proceso en la lista del semáforo
  • 3. then Activa uno de ellos else p:= p+1; Sincronización basada en semáforos process Productor; var dato: Tipo_Dato; begin repeat produceDato(var dato); dejaDato(dato); signal(datoDisponible); forever; end: La clave para implementar semáforos es disponer de un mecanismo(lock y unlock) que permita garantizar las secciones críticas de las primitivas wait y signal. Wait lock if s>0 then s:= s-1; else Suspende el proceso; unlock; Signal lock if Hay procesos suspendidos then Desbloquea uno de los procesos; else s:= s+1; unlock;
  • 4. - Peligros que introducen los semáforos son: * Un procedimiento wait y signal pueden olvidarse accidentalmente y ello conduce a una mal función catastrófica en el programa. En general un olvido de una sentencia wait conduce a un error de seguridad, como que no se respete una región de exclusión mutua, así mismo, un olvido de una sentencia signal, conduce a un bloqueo. * Pueden incluirse todas las sentencias wait y signal necesarias, pero en puntos no correctos del programa o en orden no adecuado. * La solución de los mecanismos de exclusión mutua o de sincronización mediante semáforos, dan lugar a un código con operaciones wait y signal relativas a un mismo semáforo, muy dispersas por el código del programa, lo que constituye una grave dificultad para comprender el programa y para mantenerlo.