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

Más contenido relacionado

PPT
PPT
Sincronizacion de procesos
PPTX
218727950 curso-robots-motoman-pptx
PPTX
Electrónica digital: maquinas de estado con VHDL
PPTX
Algoritmo
PDF
4. interrupciones y temporizadores
PDF
05.Manejo de interrupciones
PDF
Modulo Timer 0 del PIC16F887
Sincronizacion de procesos
218727950 curso-robots-motoman-pptx
Electrónica digital: maquinas de estado con VHDL
Algoritmo
4. interrupciones y temporizadores
05.Manejo de interrupciones
Modulo Timer 0 del PIC16F887

La actualidad más candente (19)

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

Destacado (20)

PDF
Ficha de consulta dossier temático
PPTX
Faz uma pesquisa e apresenta a na aula emrc
PPTX
Ideias que emitem notas fiscais
PDF
Desdobravel semana da leitura
PPSX
III semana da acção global pela educação
PDF
Reflexão sobre a experiência de aprendizagem em ppel
PDF
Itelecommute portugues Portugal e Brasil
DOC
Inovação
PPS
Cartao Natal
PPS
Fotos extraordinarias
PPTX
Mètode Suzuki
PDF
Regulamento formação 2011 2012
PPT
Asignación de Probabilidades a Eventos en Simulación de Combate
PDF
Informativo Estrela Vermelha
PPT
Ementas valorizadas escolas moura
ODP
Trabalho para emrc
PDF
Setima Edicao Congresso Ambiental
PDF
Reggae brasil
PDF
Workshop tdabc porto e lisboa setembro 2011
PDF
Raposinho 6ª Edição
Ficha de consulta dossier temático
Faz uma pesquisa e apresenta a na aula emrc
Ideias que emitem notas fiscais
Desdobravel semana da leitura
III semana da acção global pela educação
Reflexão sobre a experiência de aprendizagem em ppel
Itelecommute portugues Portugal e Brasil
Inovação
Cartao Natal
Fotos extraordinarias
Mètode Suzuki
Regulamento formação 2011 2012
Asignación de Probabilidades a Eventos en Simulación de Combate
Informativo Estrela Vermelha
Ementas valorizadas escolas moura
Trabalho para emrc
Setima Edicao Congresso Ambiental
Reggae brasil
Workshop tdabc porto e lisboa setembro 2011
Raposinho 6ª Edição
Publicidad

Similar a Blog (20)

PPT
PPTX
SICRONIZACION DE PROCESOS
PPT
Semaforos
PDF
So 07-concurrencia-6x1
PPS
Tema0397
PDF
Programacion concurrente
PDF
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
PDF
Comunicación entre Procesos
PPTX
S Incronizacion De Procesos
PPTX
S Incronizacion De Procesos
PPTX
Mecanismos de exclusion mutua y algoritmos
PDF
PPT
PDF
6 sincronizacion de_procesos
PDF
Ejercicios sincronizacion de procesos
PDF
Pregunta 3.pdfggbggggggggggggggggggggggggggggggg
PDF
PPTX
PROBLEMA DE LECTORES Y ESCRITORES DE UNA IPC
SICRONIZACION DE PROCESOS
Semaforos
So 07-concurrencia-6x1
Tema0397
Programacion concurrente
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
Comunicación entre Procesos
S Incronizacion De Procesos
S Incronizacion De Procesos
Mecanismos de exclusion mutua y algoritmos
6 sincronizacion de_procesos
Ejercicios sincronizacion de procesos
Pregunta 3.pdfggbggggggggggggggggggggggggggggggg
PROBLEMA DE LECTORES Y ESCRITORES DE UNA IPC

Más de dgzz (10)

PDF
Patrones
PDF
Ogro
PDF
Sq lactividades
PDF
Sq lactividades
ODP
2nd part
ODP
Vmfs
PDF
Dead
PDF
Blog
ODP
Act1
ODP
Act1
Patrones
Ogro
Sq lactividades
Sq lactividades
2nd part
Vmfs
Dead
Blog
Act1
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.