You are on page 1of 22

Comunicacin y sincronizacin entre procesos Interbloqueos:

Comunicacin entre Procesos:


La comunicacin entre procesos: necesaria si se desea que varios procesos
puedan colaborar para realizar una misma tarea.
Sincronizacin: funcionamiento coordinado en la resolucin de una tarea
encomendada.
El SO ofrece mecanismos bsicos de comunicacin, que permiten transferir
cadenas de bytes. Deben ser los procesos que se comunican quienes interpreten
el significado de las cadenas transferidas para su labor coordinada.
Los mecanismos de comunicacin y sincronizacin son dinmicos. Es decir,
cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de
forma que no se establezca de forma definitiva ningn mecanismo de
comunicacin, ya que ellos podran producir efectos indeseados. Es decir, la
comunicacin es algo puntual.
Los servicios bsicos de comunicacin son:
a.

crear: el proceso solicita la creacin del mecanismo

b.

enviar o escribir: el proceso emisor enva informacin al proceso receptor

c.

recibir o leer: el proceso receptor recibe informacin

d.

destruir: el proceso solicita la destruccin del mecanismo de comunicacin

La comunicacin puede ser sincrona y asncrona:


a.

sncrona: los dos procesos han de ejecutar servicios de forma simultnea.


El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.

b.

asncrona: el emisor hace el envo y prosigue su ejecucin. El SO ofrece


un almacenamiento intermedio para guardar la informacin enviada, hasta
que el receptor la solicite.

Condiciones de Competencia
Es una situacin en la que dos o ms procesos intentan realizar alguna operacin
(Lectura-Escritura) en ciertos datos compartidos (In, Out) y el resultado final
depende de quin ejecuta qu y en qu momento.

En algunos SO los procesos que trabajan juntos comparten con frecuencia un


espacio comn para almacenamiento (MP, archivo, etc), en el que cada uno
puede leer o escribir.
La actualizacin sin restricciones de variables compartidas puede conducir a
inconsistencias. Tales errores suelen ser dependiente de la temporizacin
especfica y del modo de entrelazarse las acciones de los procesos.
Las situaciones como sta en que dos o ms procesos utilizan recursos
compartidos y el resultado final depende de quin ejecuta qu y en qu momento,
recibe el nombre de condicin de competencia.
Los errores introducidos por la concurrencia pueden ser extremadamente difciles
de detectar, reproducir y depurar.
Secciones y Recursos Crticos
ste es uno de los problemas que con mayor frecuencia aparece cuando se
ejecutan procesos concurrentes tanto si son cooperantes como independientes.
Considrese un sistema compuesto por n procesos {P1, P2, ..., PN} en el que
cada uno tiene un fragmento de cdigo, que se denomina seccin crtica. Dentro
de la seccin crtica, los procesos pueden estar accediendo y modificando
variables comunes, registros de una base de datos, un archivo, en general
cualquier recurso compartido.
La caracterstica ms importante de este sistema es que cuando un proceso se
encuentra ejecutando cdigo de la seccin crtica, ningn otro proceso puede
ejecutar en su seccin.
Para resolver el problema de la seccin crtica es necesario utilizar algn
mecanismo de sincronizacin que permita a los procesos cooperar entre ellos sin
problemas. Este mecanismo debe proteger el cdigo de la seccin crtica y su
funcionamiento bsico es el siguiente:
Cada proceso debe solicitar permiso para entrar en la seccin crtica
mediante algn fragmento de cdigo, que se denomina de forma genrica
entrada en la seccin crtica.

Cuando un proceso sale de la seccin crtica debe indicarlo mediante otro


fragmento de cdigo, que se denomina salida de la seccin crtica. Este
fragmento permitir que otros procesos entren a ejecutar el cdigo de la
seccin crtica.

La estructura general, por tanto, de cualquier mecanismo que pretenda resolver el


problema de la seccin crtica es la siguiente:

Entrada en la seccin crtica


Cdigo de la seccin crtica
Salida de la seccin crtica

Cualquier solucin que se utilice para resolver este problema debe cumplir los tres
requisitos siguientes:
Exclusin mutua: si un proceso est ejecutando cdigo de la seccin
crtica, ningn otro proceso lo podr hacer.
Progreso: si ningn proceso est ejecutando dentro de la seccin crtica, la
decisin de qu proceso entra en la seccin se har sobre los procesos que
desean entrar. Los procesos que no quieren entrar no pueden formar parte
de esta decisin. Adems, esta decisin debe realizarse en tiempo finito.
Espera acotada: debe haber un lmite en el nmero de veces que se
permite que los dems procesos entren a ejecutar cdigo de la seccin
crtica despus de que un proceso haya efectuado una solicitud de entrada
y antes de que se conceda la suya.

Principios de Concurrencia
En un sistema multiprogramado con un nico procesador, los procesos se
intercalan en el tiempo aparentando una ejecucin simultnea. Aunque no se logra
un procesamiento paralelo y produce una sobrecarga en los intercambios de

procesos, la ejecucin intercalada produce beneficios en la eficiencia del


procesamiento y en la estructuracin de los programas.
La intercalacin y la superposicin pueden contemplarse como ejemplos de
procesamiento concurrente en un sistema monoprocesador, los problemas son
consecuencia de la velocidad de ejecucin de los procesos que no pueden
predecirse y depende de las actividades de otros procesos, de la forma en que el
sistema operativo trata las interrupciones surgen las siguientes dificultades:
1. Compartir recursos globales es riesgoso
2. Para el sistema operativo es difcil gestionar la asignacin ptima de
recursos.
Las dificultades anteriores tambin se presentan en los sistemas multiprocesador.
El hecho de compartir recursos ocasiona problemas, por esto es necesario
proteger a dichos recursos.
Los problemas de concurrencia se producen incluso cuando hay un nico
procesado
Exclusin Mutua (mutual exclusin MUTEX).
Las soluciones con espera ocupada funcionan de la siguiente manera, cuando un
proceso intenta ingresar a su regin crtica, verifica si esta permitida la entrada. Si
no, el proceso se queda esperando hasta obtener el permiso.

Sincronizacin:
Es un conjunto de protocolos y mecanismos utilizados para preservar la integridad
y consistencia del sistema, cuando varios procesos concurrentes comparten
recursos que son reutilizables en serie (slo pueden ser utilizados por un proceso
a la vez). Su estado y operacin pueden resultar corruptos si son manipulados
concurrentemente y sin sincronizacin por ms de un proceso.
Algoritmo de Dekker (exclusin mutua solucin por software).

El algoritmo de Dekker es un algoritmo de programacin concurrente para


exclusin mutua (mutex), que permite a dos procesos o hilos de ejecucin
compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de
exclusin mutua inventados, implementado por Edsger Dijkstra.
Si ambos procesos intentan acceder a la seccin crtica simultneamente, el
algoritmo elige un proceso segn una variable turno. Si el otro proceso est
ejecutando en su seccin crtica, deber esperar su finalizacin.
Versin 1965:
Para 2 procesos {Pi, Pj}.
int pet[2]; /* inicialmente pet[i]=0 para todo i */
int turno;
Entrar_SC (para un proceso Pi):
pet[i]= 1;
while (pet[j])
if (turno==j) {
pet[i]= 0;
while (turno==j) NOP; /* espera activa */
pet[i]= 1;
}
Dejar_SC (para un proceso Pi):
turno= j;
pet[i]= 0;
a.

Proporciona exclusin mutua: Pi slo entra si pet[i]. Si tambin pet[j],


entonces uno de los dos procesos espera por turno.

b. No interbloqueo y no inanicin: Slo un proceso quedar esperando


por turno, y en este caso el otro estar en la SC, por lo que el primero
entrar cuando el segundo cambie el turno al salir.
c. No garantiza un orden FIFO (First in, first out).

Ultima Version:

Shared int cierto=1;


/* Definicin de variables compartidas */
Shared int bandera[2]={0,0};
Shared int turno=0;
while(cierto)
{
bandera[proc_id]= cierto;
while (bandera[1-proc_id] == cierto)
{
if(turno == 1-proc_id)
{
bandera[proc_id] = 0;
while(turno==(1-proc_id)) /*espera a que sea su turno de intentar*/
bandera[proc_id]=1;
}
}
/*Seccin crtica*/
turno=1-proc_id; /*es el turno de otro proceso*/
bandera[proc_id]=0;
/*Seccin no crtica */

Test and Set o Comparar y Fijar (tambin conocido como instruccin


TSL)
Es una instruccin especial de maquina a nivel de hardware, la instruccin se
ejecuta atmicamente en su totalidad, es decir, no esta sujeta a interrupciones.
booleano TS(int i)
{
if (I==0)
{
I=1;

return cierto;
}
else
{
return falso;
}
}

Esta solucin requiere ayuda del hardware y es debido a que en general


las computadoras diseadas para tener ms de un procesador tienen una
instruccin TEST AND SET LOCK.

Semforos
Para solucionar problemas de procesos concurentes, se diseo un S.O. como un
conjunto de procesos secuenciales, eficiente y fiables para dar soporte a la
cooperacin. Los procesos de usuario podran utilizar estos mecanismos si el
procesador y el S.O. los hacan disponible.
El principio fundamental es el siguiente, 20+ procesos pueden cooperar por medio
de simples seales, de manera que se pueda obligar a un proceso a detener en
una posicin determinada hasta que reciba una seal especfica. Para la
sealizacin se usan variables especiales llamadas semforos "S", los procesos
ejecutan las primitivas wait(s) si la seal aun no se transmiti, el proceso se
suspende hasta que tiene lugar la transmisin.
A los semforos se los contemplan como variables que tienen un N entero sobre
el que se definen las siguientes operaciones:
a. un semforo puede iniciarse con un valor negativo
b. la operacin wait disminuye el valor del semforo. Si el valor no es positivo
el proceso que ejecuta wait se bloquea.
c. las operaciones signal incrementa el N del semforo. Si el valor es positivo
se desbloquea el proceso bloqueado por una operacin wait.

No hay forma de examinar o manipular los semforos aparte de estas tres


operaciones.
Las primitivas wait y signal se suponen atmicas, es decir no pueden ser
interrumpidas y cada rutina puede considerarse como un peso indivisible.
Un semforo solo puede tomar los valores 0 y 1. Son ms sencillos de implantar y
pueden demostrarse que tienen la misma potencia de expresin que los
semforos generales.
En ambos semforos se emplean una cola para mantener los procesos en espera,
la cuestin reside en el orden en que se retiran los procesos de la cola. La poltica
utilizada el la de FIFO; el proceso que estuvo bloqueado durante mas tiempo se
libera de la cola, se denomina semforo robusto (incluye esta estrategia). Un
semforo dbil no especifica el orden en que se retiran los procesos de la cola.
Los semforos robustos garantizan la inexistencia de inanicin en el algoritmo de
exclusin mutua, pero no as en los semforos dbiles, se supone que los
semforos son siempre robustos ya que son los ms adecuados y porque son los
tipos de semforos que ms incluyen los S.O.
Implementacin de los semforos. Como se menciono anteriormente es
impredecible que las operaciones wait y signal sean implementadas como
primitivas atmicas.
La esencia del problema del productor/consumidor, es la exclusion mutua: solo 1
proceso puede manipular un semforo a la vez, en una operacin wait o signal. Se
pueden utilizar cualquier esquema de software con los algoritmos de Dekker o
Peterson los que suponen una sobrecarga de procesos sustancial. Otra alternativa
es usar uno de los esquemas de soporte del hardware p/la exclusion mutua..
En sistemas monoprocesador procesador, se pueden inhibir las interrupciones
durante una operacin wait o signal.

Contadores de EventosSe puede sincronizar varios procesos sin


forzar la exclusin mutua, ya sea porque no deseamos limitar la
concurrencia de los procesos, o simplemente porque no lo necesitemos.
Esto lo podemos conseguir con los contadores de eventos.

Estos mecanismo pueden ser utilizados para disear semforos en el caso de que
el sistema no proporcione este tipo de mecanismos.
Un contador de eventos se representa como una variable entera E cuyo valor
inicial ser 0, y sobre la que slo se podrn realizar las siguientes operaciones:
advance(E): se utiliza para indicar la aparicin de sucesos que
el diseador haya asociado al contador E. Cada vez que se
ejecuta esta funcin, E se incrementar.
Read(E): lee el valor del contador de eventos E. Si el nmero
ledo es positivo, indicar el nmero de sucesos que se han
producido en el sistema.
Await(E, v): espera a que el contador de eventos E haya
alcanzado el valor v. El proceso que llama a la funcin
permanecer bloqueado hasta que se hayan producido v
ms sucesos del tipo asociado al contador.
Cabe destacar que tanto await como read son concurrentes con advance, ya que
la operacin de esta ltima influye en el comportamiento de las otras dos.
Monitores
Es un tipo de procedimientos, variables y estructuras de datos que se agrupan en
un tipo de modulo especial. Tienen una propiedad importante: solo un proceso
puede estar activo en un monitor en un instante de tiempo.
Los monitores proveen un nuevo tipo de variables de condicin con dos
operaciones que operan sobre el (solo se usan dentro del procedimiento de el
monitor).
Wait -> wait(a) : produce que el proceso que ejecuta la instruccin sea
interrumpido y removido de la cola de ready hasta que otro proceso lo habilite
ejecutando la instruccin signal( )con la misma variable de condicin.
Signal -> signal(a) : Habilita la ejecucin de algn proceso en espera por la
ejecucin de la instruccin wait con la misma variable de condicin.

Paso de Mensajes
Son una solucin del sistema operativo que nos permitirn la sincronizacin de
procesos y la comunicacin entre ambos.
Es una cadena de texto transmitida de un proceso que enva el mensaje a un
receptor (proceso receptor). Un mensaje puede tener cdigo, texto, datos,
Suelen tener dos partes:
- Cabecera (obligatoria): IdProcesoEmisor, IdProcesoReceptor, Tipo, Longitud
- Cuerpo (optativo): Informacin adicional
Tenemos dos tipos de rdenes para gestionar mensajes (para enviar y recibir):
- Enviar: send (destino, mensaje)
- Recibir: receive (origen, mensaje)
*Direccionamiento.
a) Directo. Se especifican emisor y receptor de forma explcita.
P enva a Q:
- P: send (Q, mensaje)
- Q: receive (Q, mensaje)
b) Implcito: El emisor especifica quien es el receptor, pero el receptor no
especifica quin es el emisor.
c) Indirecto. En este direccionamiento los mensajes no se envan directamente al
receptor, sino que se envan a una estructura de datos denominada buzn o
mailbox. Una gran ventaja de esto es que podemos enviar a cualquier buzn
cualquier mensaje. Los mensajes no tienen que ir dirigidos especficamente a un
proceso.
En este tercer caso la relacin puede ser (1-1) (un proceso enva a un solo buzn).
Tambin puede haber (n-1) donde varios procesos envan mensajes a un solo
buzn o (1-n) donde un proceso enva mensajes a muchos buzones. Este ltimo
caso vale para cuando quiero comunicar una informacin a muchos procesos.
* Propiedad de los buzones.
Tenemos dos casos:
- El proceso es el propietario. El buzn existe mientras existe el proceso y slo
el propietario puede leer datos del buzn

- El propietario del buzn es el SO. La propiedad del buzn puede transmitirse


entre procesos, lo que permite que varios procesos puedan leer.
* Sincronizacin de los mensajes.
a) Cuando enviamos:
- El proceso se bloquea hasta que el receptor reciba el mensaje (envo
bloqueante)
- No se bloquea y continua haciendo operaciones (envo no bloqueante)
b) Al recibir el mensaje:
- Al mirar a ver si est el mensaje, si ya ha llegado, lo cojo y contino.
- Cuando voy a buscar el mensaje, si no ha llegado todava:
- Bloqueo el proceso, hasta que llegue el mensaje (recepcin bloqueante).
- No se bloquea el proceso (recepcin no bloqueante).
- El proceso se bloquea durante un intervalo de tiempo. Si transcurrido ese
tiempo, el mensaje no ha llegado, el proceso contina sin el mensaje.
*Casos habituales:
- Envo bloqueante- Recepcin bloqueante.
Se usa cuando la sincronizacin ha de ser muy estricta.
- Envo no bloqueante - recepcin bloqueante.
Se usa para cuando el proceso emisor no necesita que el receptor haya
recibido el mensaje para continuar. Ej: Servidor de correo.
- Envo no bloqueante - recepcin no bloqueante.

Equivalencia entre Primitivas:


Interbloqueos (tambin conocido como Deadlock):
Definicin y Principios

Un interbloqueo supone un bloqueo permanente de un conjunto de procesos que


compiten por recursos o bien se comunican o sincronizan entre s. Los

interbloqueos que aparecen cuando se utilizan mecanismos de comunicacin y


sincronizacin se deben a un mal uso de los mismos.

A continuacin se van a presentar ejemplos de mala utilizacin de mecanismos de


comunicacin y sincronizacin que llevan a los procesos a un estado de
interbloqueo. Considrese en primer lugar una situacin en la que se utilizan dos
semforos P y Q, ambos con un valor inicial 1. Si dos procesos utilizan estos dos
semforos de la siguiente manera se puede producir un interbloqueo.
Proceso A

Proceso B

wait(P);

wait(Q);

wait(Q);

wait(P);

....

....

signal(P);

signal(Q);

signal(Q);

signal(P);

Para modelizar los interbloqueos se suele recurrir a la construccin de un grafo de


asignacin de recursos. En este grafo existen dos tipo de nodos: lo procesos se
representan mediante cuadrados y los recursos mediante crculos, cuando un
proceso solicita un recurso, se dibuja en el grafo un arco dirigido que parte del
proceso y que va hacia el recurso, y cuando se concede un recurso a un proceso,
el arco anterior se cambia por otro que parte del recurso y que va hacia el
proceso. El interbloqueo se detecta cuando aparece un ciclo en el grafo de
asignacin de recursos.
La Figura 4.8 presenta el interbloqueo que se produce en el ejemplo anterior
cuando los procesos ejecutan las operaciones wait segn el siguiente orden:
Proceso A

Proceso B

1 wait(P);

2 wait(Q);

3 wait(Q);

4 wait(P);

Condiciones
Si se presentan simultneamente las cuatro siguientes condiciones el sistema est
en interbloqueo.
1. EXCLUSION MUTUA: Por lo menos un proceso que tenga otorgado un
recurso en forma exclusiva.
2. USO Y ESPERA: Debe existir al menos un proceso que est haciendo
uso de un recurso y que est esperando por otros recursos asignados a
otros procesos.
3. NO INTERRUPCION: Los recursos no pueden ser retirados al proceso.
Si un proceso hace uso de un recurso no le podr ser retirado hasta que
voluntariamente el proceso lo libere.
4. ESPERA CIRCULAR: Debe existir un conjunto de procesos {P1.....Pn}
tal que P1 espera por un recurso utilizado por P2,......,Pn espera por un
recurso utilizado por P1.

Deteccin
Algoritmos de Deteccin de interbloqueo
1.

Cuando hay una nica ocurrencia de cada recurso. (variante del grafo de
"wait for graph"). Consiste en reducir el grafo, retirando las aristas que van de
recursos a procesos y de procesos a recursos, colocando nuevas aristas que
reflejan la situacin de espera entre procesos. Si el grafo reducido tiene ciclos
el sistema est en interbloqueo. Orden de operaciones = n^2 , n = cantidad
de aristas.

2.

Cuando hay mltiples ocurrencias de cada recurso

Procedure detecta_deadlock
var Disponible:array[1..n] of integer //# de recursos
Usados:array[1..n] of integer
Solicitados:array[1..n] of integer
Finalizado:array[1..n] of boolean
Begin
Work:=Disponibles;
For i:=1..n do if(usados[i]0) then finish[i]:=false
Else finish[i]:=true;
While(encontrar_indice_i = true) do
{
Work:=work + usados[i];
Finish[i]:=true;
}
If ((finish[i] = false) para algun i), 1in then El sistema esta en
interbloqueo.
End

Function encontrar_indice_i : Boolean


Begin
If (existe i tal que (Finish[i]=false && solicitados[i] work)
Then -> true
Else -> false
End
Prevencin
La estrategia consiste en anular alguna de las cuatro condiciones necesarias para
que se produzca un interbloqueo.
1.

No puede ser anulada porque existen recursos que deben ser usados en
modalidad exclusiva.

2.

La alternativa sera hacer que todos los procesos solicitaran todos los
recursos que habrn de utilizar antes de utilizarlos al momento de su
ejecucin lo cual sera muy ineficiente.

3.

Para anular esta condicin cuando un proceso solicita un recurso y este es


negado el proceso deber liberar sus recursos y solicitarlos nuevamente con
los recursos adicionales. El problema es que hay recursos que no pueden ser
interrumpidos.

4.

Espera Circular: esta estrategia consiste en que el sistema operativo


numere en forma exclusiva los recursos y obligue a los procesos a solicitar
recursos en forma ascendente. El problema de esto es que quita
posibilidades a la aplicacin.

Recuperacin
a. Cancelacin de todos los procesos involucrados. Esto resuelve la situacin
de Deadlock pero tiene un costo muy alto de reprocesamiento.
b. Cancelacion de un proceso por vez hasta resolver la situacin de Deadlock.
La ventaja de esto es que el costo de reprosesamiento de la informacin es
menor pero cada vez que se cancela un proceso debe ejecutarse el
algoritmo de deteccin de deadlock. Los criterios para elegir el candidato a
ser cancelado son: por prioridad, por tiempo de uso de CPU, por cantidad
de recursos utilizados y por cuantos recursos adicionales habr de utilizar.
c. Obtencin de recursos (resourse Preemption). El sistema operativo
selecciona un proceso y le quita los recursos otorgados. Los criterios para
seleccionar el candidato son los mismos que para la cancelacin. El
proceso seleccionado se le quitan los recursos y se le lleva a un estado
consistente (Rollback).
Inanicin

Se da cuando un proceso espera por un evento que no se sabe cuando puede


ocurrir, es decir, ocurre una Espera Infinita.

Planificacin
La planificacin es el proceso por el cual el sistema operativo selecciona que
proceso ejecutar. La seleccin del proceso se basa en alguno de los algoritmos de
planificacin que se describen ms abajo.
Objetivos de la planificacin
Los objetivos de la planificacin de proceso son:

Equidad, todos los procesos deben poder ejecutarse

Eficacia, mantener ocupada la CPU un 100% del tiempo

Tiempo de respuesta, minimizar el tiempo de respuesta al usuario

Tiempo de regreso, minimizar el tiempo que deben esperar los usuarios por
lotes para obtener sus resultados

Rendimiento, maximizar el nmero de tareas procesadas por hora.

Concurrencia
La concurrencia comprende un gran nmero de cuestiones de diseo, incluida
la comunicacin entre procesos, comparticin y competencia por los recursos,
sincronizacin de la ejecucin de varios procesos y asignacin del tiempo de
procesador a los procesos. Se ver que estas cuestiones no solo surgen en
entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas
multiprogramados con un solo procesador.
La concurrencia puede presentarse en tres contextos diferentes:
Mltiples aplicaciones: la multiprogramacin se cre para permitir que el
tiempo de procesador de la mquina fuese compartido dinmicamente entre varias
aplicaciones activas.

Aplicaciones estructuradas: como ampliacin de los principios del diseo


modular

la

programacin

estructurada,

algunas

aplicaciones

pueden

implementarse eficazmente como un conjunto de procesos concurrentes.


Estructura del sistema operativo: las mismas ventajas de estructuracin son
aplicables a los programadores de sistemas y se ha comprobado que algunos
sistemas operativos estn implementados como un conjunto de procesos o hilos.

Sincronizacin y Exclusin Mutua en Sistemas Multiprocesadores:


Consideraremos un multiprocesador como una mquina con un conjunto de
procesadores que comparten un mismo espacio de direcciones de memoria fsica.
Por esta razn, tambin se les llama multiprocesadores de memoria compartida
fuertemente acoplados, a diferencia de los multicomputadores, donde los
elementos de proceso no comparten memoria fsica, y que no vamos a tratar aqu.
Sin embargo hay que recordar que en un multiprocesador moderno existen
niveles de memoria cache (normalmente dos, interna y externa) privados para
cada procesador, lo que, como veremos, tiene relevancia para la eleccin de una
poltica de planificacin.

Clasificacin
Las cuatro categoras definidas por Flynn (1972) se basan en el nmero de
instrucciones concurrentes y en los flujos de datos disponibles en la arquitectura:

- Una secuencia de instrucciones y una secuencia de datos (SISD: Single


Instruction, Single Data): Un nico procesador interpreta una nica secuencia de
instrucciones para procesar los datos almacenados en una nica memoria. No
explota el paralelismo a nivel de instruccin. Mquinas monoprocesador.

- Una secuencia de instrucciones y mltiples secuencias de datos (SIMD: Single


Instruction, Multiple Data): Una nica instruccin controla de forma simultnea y

sincronizada un cierto nmero de elementos de proceso. Cada elemento tiene una


memoria asociada, de forma que cada elemento ejecuta la misma instruccin con
diferentes datos. Los procesadores vectoriales y matriciales pertenecen a esta
categora.

- Mltiples secuencias de instrucciones y una secuencia de datos (MISD: Multiple


Instruction, Single Data): Se transmite una secuencia de datos a varios
procesadores, cada uno de los cuales ejecuta una instruccin diferente sobre los
mismos. Esta estructura nunca se ha implementado.

- Multiples secuencias de instrucciones y mltiples secuencias de datos (MIMD:


Multiple Instructions, Multiple data): Un conjunto de procesadores ejecuta
simultneamente instrucciones diferentes sobre conjuntos de datos diferentes. Es
el caso de los sistemas distribuidos, bien explotando un nico espacio compartido
de memoria, o bien uno distribuido.
De las cuatro categoras, las SISD y la MIMD dan lugar a implementaciones
paralelas.

Granularidad
La granularidad se define como el nmero de elementos de proceso que
componen un computador paralelo.
Una granularidad fina consiste en el empleo de muchos elementos de proceso
de poca potencia. En este caso, el grado de paralelismo es mximo. Los
computadores de grano fino exigen tcnicas de programacin y algoritmos que
potencien el paralelismo.
Una mquina de grano grueso consta de pocos elementos procesadores, pero de
alta potencia cada uno.
planificacin de procesos
La planificacin de procesos en un sistema multiprocesador presenta dos

componentes:
Planificacin temporal, que define la poltica de planificacin en cada
procesador individual, exactamente igual que si de un monoprocesador se
tratase, salvo por el hecho de que en los multiprocesadores es menos
relevante para el rendimiento la poltica que se elija, y tanto menos cuanto
ms procesadores. En la planificacin temporal se decide qu procesos se
ejecutan.
Planificacin espacial, que define cmo se asignan los procesadores a los
diferentes procesos. En la planificacin espacial se decide en qu
procesadores se ejecutan los procesos.

Criterios para la planificacin en multiprocesadores:


En la planificacin espacial es necesario considerar dos hechos relevantes en la
ejecucin de las aplicaciones multiprogramadas o multithread:

1. A medida que proceso se ejecuta en un procesador determinado va


dejando una huella (estado del proceso en la memoria cache del
procesador donde se ejecuta), por lo que parece adecuado mantener a un
proceso en el mismo procesador (criterio de afinidad al procesador). Sin
embargo, las polticas que potencian la afinidad al procesador tienden a
provocar un desequilibrio en la carga de los procesadores, que se traduce
en una utilizacin menos eficiente de los recursos. El criterio opuesto
(reparto de la carga), provoca sobrecargas en el bus de memoria al
invalidar frecuentemente el contenido de las memorias cache.

2. En las aplicaciones concurrentes de hoy en da, de tipo multithread, los


threads habitualmente interaccionan de manera muy estrecha (utilizando
memoria compartida como mecanismo de comunicacin), por lo que la
carencia de recursos para planificar alguno de los threads puede provocar
que otros threads de la aplicacin que s disponen de procesador no
progresen y consuman ciclos de CPU esperando por condiciones que

deberan satisfacer los threads no planificados, lo que conduce a pobres


resultados en cuanto a latencias y tiempos de finalizacin. Este hecho invita
a implementar polticas de asignacin de procesadores que permitan a una
aplicacin disponer de los recursos necesarios para que la ejecucin de la
aplicacin progrese adecuadamente. El criterio de proporcionar recursos
exclusivos para la aplicacin, en vez de compartidos, tiene como
contrapartida la posibilidad de que gran parte de ellos queden ociosos o con
un uso poco eficiente, debido a que el sistema operativo no conoce a priori
el perfil de necesidades de la aplicacin.
.
Las polticas de planificacin en multiprocesadores atienden a combinaciones de
estos criterios.

planificacin de hilos.
Un hilo de ejecucin o thread , en sistemas operativos, es una caracterstica que
permite a una aplicacin realizar varias tareas concurrentemente. Los distintos
hilos de ejecucin comparten una serie de recursos tales como el espacio
de memoria, los archivos abiertos, situacin de autenticacin, etc.
Esta tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo
distintas funciones simultneamente.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos
recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos
de ejecucin de un mismo proceso compartan los recursos hace que cualquiera de
estos hilos pueda modificar stos.
Los sistemas operativos generalmente implementan hilos de dos maneras:

Multihilo apropiativo: permite al sistema operativo determinar cundo debe


haber un cambio de contexto. La desventaja de esto es que el sistema puede
hacer un cambio de contexto en un momento inadecuado, causando un
fenmeno conocido como inversin de prioridades y otros problemas.

Multihilo cooperativo: depende del mismo hilo abandonar el control cuando


llega a un punto de detencin, lo cual puede traer problemas cuando el hilo
espera la disponibilidad de un recurso.

El soporte de hardware para multihilo desde hace poco se encuentra disponible.


Esta caracterstica fue introducida por Intel en el Pentium 4, bajo el nombre de
HyperThreading.

Reparto de carga: los procesos no se asignan a un procesador en particular.


Se mantiene una cola global de hilos listos y cada procesador,
cuando est ocioso, selecciona un hilo de la cola
Planificacin por grupos: Se panifica un conjunto de hilos afines para su ejecuci
en un conjunto de procesadores al mismo tiempo, segn la relacin
de uno a uno
Asignacin dedicada de procesadores: Ofrece una planificacin implcita definida
por la asignacin de hilos a los procesadores. Mientras un programa
se ejecuta, se le asigna un nmero de procesadores igual al nmero
de hilos que posea
Planificacin dinmica: el nmero de hilos en un programa se puede cambiar en
el curso de la ejecucin

UNIVERSIDAD DE CARABOBO
FACULTAD DE CIENCIAS Y TECNOLOGIA
DEPARTAMENTO DE COMPUTACION
SISTEMAS OPERATIVOS

COMUNICACIN Y SINCRONIZACION ENTRE PROCESOS

INTEGRANTES:
Gerardo Carrillo C.I: 16895077
Iregui Hembert C.I: 21.151.213
Palacios Luis

C.I: 18.781.981

Pinto Wilmer F C.I: 19.524.910


Ramrez Jos

C.I: 19.020.820

SECCION: 01

Brbula, 23 de NOVIEMBRE de 2011