Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Comunicación y Sincronizacion de Procesos
1. COMUNICACIÓN Y
SINCRONIZACIÓN
ENTRE PROCESOS
LORENA RAMOS
Carrera: Técnico Superior en Análisis de Sistemas 2° Año.
Cátedra: Sistemas Operativos
Docente: Cristian Gómez
Año:2012
3. Multiprogramación
Gestión de varios procesos dentro de un
sistema monoprocesador.
Multiprocesamiento
Gestión de varios procesos dentro de un
sistema multiprocesador.
Procesamiento Distribuido
Gestión de varios procesos ejecutándose
en sistemas de múltiples computadoras las
cuales se encuentran distribuidas.
5. Procesos
Programa que esta en ejecución.
Un programa vivo que tiene su
propio flujo de control, su
directorio de trabajo y es
independiente de los otros
procesos.
.
.
.
6. concurrentes:
Varios procesos ejecutándose al
mismo tiempo.
El sistema operativo crea la ilusión
de que cada uno tiene su propia
CPU.
.
. .
7. LOS PROCESOS
CONCURRENTES PUEDEN SER:
Independientes: No comparten datos con
otros procesos.
Cooperativos: Si pueden afectar o verse
afectados por otros procesos. Las razones que
permiten la cooperación entre procesos son:
1.- Compartir información
2.- Aceleración de cálculos (subtareas)
3.- Modularidad dividir las funciones del sistema
4.- Conveniencia .
8. Exclusión mutua:
Exclusión mutua: los procesos reclaman control
exclusivo de
los recursos que piden.
Interbloqueado:
Un proceso esta interbloqueado si está
esperando por un evento determinado que nunca
Inanición :
va a ocurrir.
Cuando un proceso espera por un evento que puede
ocurrir pero no se sabe cuando.
9. Sección crítica :
Definición: región crítica es el trozo de
código donde un proceso hace uso de un
recurso no compartible, por lo tanto
debe ejecutarse en exclusión mutua.
Las secciones críticas deben ser
ejecutadas lo más rápido posible y
además deben ser cuidadosamente
codificadas.
12. Los procesos son independientes.
No tienen conocimiento de los demás.
Compiten por el acceso a los recursos.
Problemas de control
Exclusión Mutua.
Interbloqueo
Inanición
14. Los procesos comparten el acceso a algunos
objetos, por ejemplo a un buffer de E/S.
Tienen conocimiento indirecto de los otros.
Cooperan para compartir el objeto común
Problemas de control
Exclusión Mutua.
Interbloqueo
Inanición
18. Las situaciones como las planteadas en que el
resultado de la ejecución de dos o más procesos
depende del orden de ejecución de los mismos
reciben el nombre de
CONDICIONES DE COMPETENCIA
¿Cómo se soluciona
este problema?
Mediante la EXCLUSIÓN MUTUA
Garantizando que los procesos accedan en forma
ordenada al recurso compartido
20. Un proceso comienza a utilizar una variable
compartida antes que el otro termine de
usarla
Esa parte del programa, en la cual se
accede a la memoria compartida, se
denomina SECCION CRITICA
Si se puede garantizar que 2 procesos no
entrarán, al mismo tiempo, en su
SECCIÓN CRITICA, podrán evitarse las
Condiciones de Competencia
22. 1 - Dos procesos no deben encontrarse, al mismo
tiempo, en su Sección Crítica.
2 - No deben hacerse hipótesis sobre la velocidad
o el número de CPU´s.
3 - Ninguno de los procesos que se están
ejecutando fuera de su Sección Crítica puede
bloquear a otros procesos que desean entrar a su
SC.
4 - Ningún proceso debe esperar eternamente
para entrar en su Sección Crítica.
5 – Un proceso que se encuentra dentro de su SC
debe abandonarla en un tiempo finito.
6 - Un Proceso no puede consumir tiempo de
ejecución mientras espera por un recurso.
7 - No debe haber ningún proceso privilegiado que
monopolice la SC.
24. Dejar la responsabilidad a los procesos, que
deben coordinarse unos con otros para
cumplir la exclusión mutua.
Sin ayuda por parte del lenguaje de
programación o del sistema operativo.
Estas soluciones son propensas a errores y a
una fuerte carga de proceso.
Variables de Cerradura – Alternancia estricta
– Solución de Peterson
26. Si se desea que un proceso entre a su sección
critica primero hace una prueba de la variable
de cerradura. Si su valor es 0 el proceso lo
cambia a 1 y entra a su sección critica. Si la
variable vale uno, el proceso espera hasta que
tome el valor 0 y esta ocurre cuando el proceso
que entro a la sección critica sale de ella.
Esta variable es compartida y tiene 2
valores: 0 y 1. El sistema operativo tiene
acceso a esa variable y el único que puede
cambiar el estado es el proceso actual.
28. Obliga a que cada proceso tenga un turno, hay
un cambio de turno cada vez que un proceso
sale de la sección critica, si un proceso es
lento atrasara a otros procesos que son
rápidos.
Características:
Garantiza la exclusión mutua
Su sincronización es forzada
Acopla fuertemente a los procesos (procesos
lentos atrasan a procesos rápidos)
No garantiza la progresión, ya que si un
proceso por alguna razón es bloqueado dentro o
fuera de la sección puede bloquear a los otros
30. Consideremos el caso de que 2 procesos llaman
al procedimiento para entrar en su sección
critica de forma casi simultanea, ambos
procesos almacenaran su número de proceso en
una variable x. Solo cuenta la última
operación, la primera de ellas se pierde.
Supongamos que el proceso 1 almacena su
numero en ultimo lugar, por lo que el valor de x
será igual a 1. Cuando ambos procesos lleguen
al enunciado while, la condición se cumplirá
únicamente para uno de los dos procesos, por lo
que el otro proceso deberá esperar.
32. Ofrece solucionar el problema mediante
instrucciones especiales de máquina.
Reducen la sobrecarga pero no son óptimas.
Inhabilitación de interrupciones –
Instrucciones especiales de máquina
34. La solución de I.I. evita que el proceso abandone
el CPU durante la S.C., logrando así la exclusión
mutua. El gran inconveniente que presenta esta
opción es que desactivar y activar las
interrupciones es muy costoso en lo que respecta
a tiempo de ejecución, por lo que no es una
buena opción para sistemas en tiempo real, por
ejemplo
{
// Desactivar las interrupciones
// S.C.
// Activar las interrupciones nuevamente
// S.n.C.
36. Test-And-Set: esta función verifica el estado de
una variable cerrojo devolviendo verdadero si el
cerrojo estaba abierto (en 0), falso en otro caso.
Además, al retornar, el cerrojo queda cerrado (bien
sea porque ya lo estaba o porque se cerro dentro de
la función). Su uso es como se muestra a
continuación:
int cerrojo=0;
void Proceso(int id) {
while(test_and_set(cerrojo));
// S.C.
cerrojo=0;
// S.n.C.
38. Ofrece solucionar el problema a través del
soporte del Sistema Operativo o de los
lenguajes de programación
Semáforos – Monitores – Paso de mensajes
40. int mutex=MAX_RECURSOS;
void signal(int *_mutex) {
(_mutex*)++;
if((*mutex)<=0)
// Desencolar un proceso
}
void wait(int *_mutex) {
(_mutex*)--;
if((*mutex)<0)
// Encolar un proceso
}
41. Consta de dos instrucciones signal y wait, y
una variable mutex comun. Esta variable se
suele fijar al numero de recursos
disponibles, la operación wait decrementa su
valor y verifica si no es
negativo (es decir, que al solicitarse habia
alguno disponible); si no lo es, continua la
ejecución, en
caso contrario se puede utilizar espera
activa o se puede bloquear el proceso e
introducirlo en una
cola para evitar el consumo de CPU. El signal
simplemente libera un recurso y en caso de
43. Son estructuras de un lenguaje de programación
que ofrecen una funcionalidad equivalente a la
de los semáforos , pero que son más fáciles de
controlar. Un monitor es un módulo de software
que consta de uno o más procedimientos, una
secuencia de inicio y unos datos locales. Sus
características fundamentales: Las variables de
datos locales están solo accesibles para los
procedimientos del monitor y no para los
procedimientos externos. Un proceso entra en
el monitor invocando a uno de sus
procedimientos. Solo un proceso puede estar
ejecutando en el monitor en un instante
dado, cualquier otro proceso que haya invocado
al monitor quedará suspendido mientras espera
45. Paso de mensajes: este sistema de comunicación
tiene diversas implementaciones que solo serán
mencionadas: directa e indirecta; sin buffer, con
buffer, bien sea limitado o “ilimitado”; con y sin
bloqueo. Se basa en un par de instrucciones send y
receive, las cuales se encargan de enviar y leer,
respectivamente, un determinado mensaje, ya sea
directamente a un proceso o bien sea a un buzón o
buffer.
Por ultimo, otro mecanismo de comunicación
sumamente utilizado en Linux, es de las tuberías,
que no son mas que flujos unidireccionales de datos
implementados por el shell.
Simplemente se toma la salida de un proceso y se
usa como salida del siguiente. La implementación de
esta técnica es sumamente sencilla: se crea un