martes, 30 de junio de 2009

PROCESOS CONCURRENTES

  • Procesos concurrentes.- Aquellos que intercalan y/o superponen su ejecución.
  • Gestión Concurrencia.- Gestión de varios procesos o hilos. Comunicación, competencia por recursos, sincronización, asignación tiempo procesador.

Sincronización y Comunicación entre procesos


La comunicación entre procesos: necesaria si se desea que varios procesos puedan colaborar para realizar una misma tarea. Sincronización === funcionamiento coordinado en la resolución de una tarea encomendada.
El SO ofrece mecanismos básicos de comunicación, 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 comunicación y sincronización son dinámicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva ningún mecanismo de comunicación, ya que ellos podrían producir efectos indeseados. Es decir, la comunicación es algo puntual.
Los servicios básicos de comunicación son:
crear: el proceso solicita la creación del mecanismo
enviar o escribir: el proceso emisor envía información al proceso receptor
recibir o leer: el proceso receptor recibe información
destruir: el proceso solicita la destrucción del mecanismo de comunicación
La comunicación puede ser sincrona y asíncrona:
síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.
asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el receptor la solicite.

Esquema de Sincronización Sincrona


Modelo de sección crítica
El modelo de sección crítica que vamos a utilizar sigue el siguiente protocolo genérico:
Entrar_SC(esta_SC) /* Solicitud de ejecutar esta_SC */
/* código de esta_SC */
Dejar_SC(esta_SC) /* Otro proceso puede ejecutar esta_SC */
Es decir, cuando un proceso quiere entrar a la sección crítica:
(1) ejecuta Entrar_SC(), y si la sección crítica está ocupada el proceso espera;
(2) ejecuta la sección crítica;
(3) ejecuta Dejar_SC(), permitiendo que entre uno de los procesos en espera.
La decisión de qué proceso es el seleccionado para entrar en el paso (3) puede tener consecuencias importantes, como se comentará más adelante. En general, puede asumirse disciplina FIFO.

Problemas que introduce la Concurrencia

  • Multiprogramación, multiproceso y procesamiento distribuido presentan los mismos problemas independientemente del número de procesadores.
    1Problemas para compartir recursos globales no compartibles
    Procedimiento echo ()
    Entrada(x);
    sal:=x;
    Salida(sal);
    End.


¿Problemas? ¿Solución?

  • Problemas de sincronización en la coordinación de procesos
    Proceso P1 Proceso P2
    i1 i1
    ..... ...
    ix iy
    Sincronización Sincronización
    Resto Resto

  • Dificultad de asignar los recursos de forma óptima.-Uso ineficiente de los recursos.
  • Dificultad de localizar errores.- Situaciones no repetibles.

Propiedades del acceso exclusivo a secciones críticas.-
Como criterios de validez de un mecanismo de sincronización nos referiremos al cumplimiento de las siguientes condiciones enunciadas por Dijkstra para el acceso exclusivo a una sección crítica.
Exclusión mutua. No puede haber más de un proceso simultáneamente en la
SC.
No interbloqueo. Ningún proceso fuera de la SC puede impedir que otro entre a la SC.
No inanición. Un proceso no puede esperar por tiempo indefinido para entrar a la SC.
Independencia del hardware. No se pueden hacer suposiciones acerca del número de procesadores o de la velocidad relativa de los procesos.
Suposición inicial adicional: las instrucciones del lenguaje. Máquina son atómicas y se ejecutan secuencialmente.
Además, existen otros criterios que determinan la calidad del mecanismo y que fundamentalmente se refieren a su rendimiento, como son la productividad (número de operaciones de sincronización por unidad de tiempo que el mecanismo es capaz de soportar) y el tratamiento equitativo entre los procesos (por ejemplo, siguiendo una politica FIFO para entrar a la sección crítica).


Entrada en sección crítica
Cuando un hilo quiere entrar en su sección crítica, primero obtiene su número de turno, que calcula como el máximo de los turnos de los otros hilos, más uno. (Si varios hilos realizan el cálculo al mismo tiempo, puede ocurrir que dos o más hilos obtengan el mismo turno).
Antes de entrar en sección crítica, el hilo debe asegurarse de que tiene el número de turno más bajo. En caso de empate, decidirá el identificador de hilo más bajo.
Cuando el hilo abandona la sección crítica, pone su número de turno a un valor especial que indique su no intención de entrar en sección crítica (en este algoritmo, se usa el valor cero).

Procesos ejecutan Sección Crítica
–Código de acceso a recursos compartidos no compartibles
–Hay que garantizar que cuando P está en su sección crítica usando el recurso R, ningún Q puede estar ejecutando sus secciones críticas para el recurso R
–Ejecución de las secciones críticas de los procesos es mutuamente exclusiva en el tiempo

Ejemplo: {R1 y R2} y {P1, P2 y P3 }con el siguiente comportamiento:
P1 P2 P3
CI CI CI
repeat repeat repeat
S.C:R1 S.C:R1 S.C:R2
Resto resto resto
Forever; S.C: R2 forever;

forever;

www.monografias.com

No hay comentarios:

Publicar un comentario