-
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 y 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