Está en la página 1de 10

Ô 

|  
 

ͻ |    

Son las situaciones en las que dos o más procesos leen o escriben en ciertos datos
compartidos y el resultado final depende de quién ejecuta qué y en qué
momento

ͻ 

Forma de garantizar que si un proceso utiliza una variable o archivo compartidos, los
demás procesos no puedan utilizarlos. Forma de prohibir que más de un proceso
lea o escriba en los datos compartidos a la vez

ͻ    


 
Parte del programa en el cual se tiene acceso a la memoria compartida
Problema del Productor - Consumidor
 î   Ô 
|     
 
  

  
 
         
  
  
  


  
  

         

  

 
    


 Ô       
       
      
      
   
   
     

        
  
  

   
           

    
        
    

 
   
     
        
     
 
Semáforos
 Variable especial reservada que administra
variables de entrada y salida dentro de un
proceso.
 Administra y restringe la entrada a un proceso
Semaforos
 Semáforos es un algoritmo de control de procesos, que
tiene solo dos operaciones básicas, las cuales son:
 Wait.- Pregunta a los procesos si su contador es > ó =
que cero, en caso de no ser así, los decrementa. El
proceso que cambia en este caso a negativo (о1) desde
la cola de procesos Listos a ser ejecutados es el que
automáticamente toma el control del procesador.
 Signal.- A partir de un tiempo t definido por el
despachador se ejecuta, y pregunta a los procesos si su
contador es < que cero en caso de que sea afirmativa la
respuesta, saca a este proceso de su ejecución y
depende de su estado
rormir y despertar
 VER ALGORITMO
Exclusión mutua
 Los algoritmos de    
 (comúnmente abreviada como p 
por mutual exclusión) se usan en programación concurrente para evitar
que fragmentos de código conocidos como    
 accedan al
mismo tiempo a recursos que no deben ser compartidos.
 a mayor parte de estos recursos son las señales, contadores, colas y otros
datos que se emplean en la comunicación entre el código que se ejecuta
cuando se da servicio a una interrupción y el código que se ejecuta el resto
del tiempo. Se trata de un problema de vital importancia porque, si no se
toman las precauciones debidas, una interrupción puede ocurrir entre dos
instrucciones cualesquiera del código normal y esto puede provocar
graves fallos.
 La técnica que se emplea por lo común para conseguir la exclusión mutua
es inhabilitar las interrupciones durante el conjunto de instrucciones más
pequeño que impedirá la corrupción de la estructura compartida (la
sección crítica). Esto impide que el código de la interrupción se ejecute en
mitad de la sección crítica.
Ô 

r  

Tanto Peterson como TSL son correctas, pero su inconveniente es la espera
ocupada, además pueden darse casos en el que un proceso espere un tiempo
infinito para ejecutarse debido a las prioridades en el despachador. (problema de
inversión de prioridad)
rormir (u ) y despertar ( ) son llamadas que no provocan desperdicio de
CPU. rormir bloquea al proceso que hizo la llamada (lo suspende) hasta que otro
proceso lo despierte.
El problema del productor y el consumidor (almacén limitado)
ros procesos comparten un almacén (buffer). El productor coloca información en el
buffer, y el consumidor la obtiene de él (la elimina)

p:
- Buffer vacío ó Buffer lleno

:
- Utilizar sleep y wakeup
Ô 

Si N es el tamaño del buffer, entonces si count=0 bloquear al consumidor, si


count=N bloquear al productor.
Si se ha colocado el primer item, despertar al consumidor. Si se ha eliminado un
item de un buffer que estaba lleno, despertar al productor.

Ë  !

 "
Ë  #$%%
&
 
'%(

)   * +, )    * +,




( 

(

- *./0î+, - *./0î+,


 1
*2
+( * 
''%+ *+(
* 
''#+ *+(   1
*2
+(

1
*
+(  
' 
 $(
 
' 
3$( * 
''# $+-4  *  +(
* 
''$+-4  *   +(    1
*
+(
5 5
5 5
Interbloqueos
 rado un conjunto de procesos
 P= {p1, p2, ..., pn}
 y un conjunto de recursos14
 R= {r1, r2, ..., rm}
 El acceso a un recurso puede modelarse de la siguiente forma: un proceso:
 (1) solicita un recurso (y eventualmente espera para conseguirlo),
 (2) usa el recurso,
 (3) libera el recurso.
 En el paso 3 se produce el evento que puede sacar a otro proceso de la espera por
el
 recurso (paso 1). Como en el caso de la sección crítica, para evitar que lo procesos
 sufran inanición, es importante determinar una política adecuada de selección del
 proceso en espera que usa el recurso recién liberado e implementarla
correctamente.
Condiciones para el interbloqueo

 Para que se produzca un interbloqueo deben


cumplirse las cuatro condiciones siguientes:
(1) Exclusión mutua. En todo momento, cada recurso, o
está asignado a un proceso, o está libre.
(2) Retención y espera. Un proceso que está utilizando un
recurso ri puede solicitar otro recurso antes de liberar
otro
(3) No expulsión. Un proceso no puede ser forzado a
liberar un recurso.
(4) Espera circular. Existe un conjunto de procesos Pr
entre los que se define un círculo de espera por
recursos que están siendo usados: