Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROCESAMIENTO PARALELO
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sin darnos cuenta, nos hemos metido en la boca del lobo. Para llevar
la cuenta del número de elementos en el buffer, necesitamos una
variable, cuenta. El acceso a la variable cuenta no está controlado.
Así, se puede presentar la siguiente situación: el buffer está vacío y
el consumidor acaba de leer 0 de la variable cuenta. En este instante
el planificador decide pasar el control del consumidor al productor. El
productor deja un elemento en el buffer, incrementa cuenta y
observa que su valor ahora es 1, por lo que deduce que su valor era
0 y que, por tanto, el consumidor está dormido, así que el productor
llama a despertar para despertar al consumidor.
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
No hemos dicho nada aún acerca del proceso que será sacado de la
cola del semáforo después de una operación signal. Tampoco
hemos dicho nada sobre el lugar donde hay que colocar un proceso
que haya efectuado un wait sobre un semáforo a cero. Para la
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Indivisibilidad
Como se apuntó más arriba tanto wait como signal deben ser
operaciones indivisibles, en el sentido de que sólo un proceso debe
poder ejecutarlas en cualquier momento. Justifiquemos dicho
requisito de indivisibilidad. Supóngase que dos procesos, P0 y P1,
desean realizar la operación signal(S) sobre el semáforo S que tiene
el valor 3. Si el código expuesto más arriba no es indivisible, podría
darse la circunstancia de que el procesador se cambiara mientras
que un proceso ejecuta la instrucción 's s + 1'. Como esta
instrucción de un lenguaje de alto nivel puede ser traducida por el
compilador a las instrucciones en ensamblador que se apuntan en la
siguiente tabla (donde 'LOAD A, S' carga el
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Ejemplo 1
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Ejemplo 2
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Deadlock (Interbloqueo)
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Monitor ejemplo
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
int i;
condición c;
insertar(int item)
...
sacar(int *item)
...
Los monitores tienen una propiedad importante que los hace útiles
para conseguir la exclusión mutua: sólo uno de los procesos puede
estar activo en un monitor en cada momento. Los monitores son
construcciones del lenguaje de programación, por lo que el
compilador sabe que son especiales y puede controlar las llamadas
a los procedimientos del monitor de manera distinta a las llamadas a
los demás procedimientos. Por lo general, cuando un proceso llama
a un procedimiento de un monitor, las primeras instrucciones de éste
verificarán si hay otro proceso activo dentro del monitor. En caso
afirmativo, el proceso que hace la llamada será bloqueado hasta que
el otro proceso salga del monitor. Si no hay otro proceso que esté
utilizando el monitor, el que hace la llamada podrá entrar.
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación
PROCESAMIENTO PARALELO UNDAC
Sistemas Y Computación