lunes, 4 de febrero de 2013

BIENVENIDOS A LA PÁGINA DEL EQUIPO 2

En esta página encontraran información para apoyarte en la materia de programación concurrente y paralela, a continuación una breve definición.

INTRODUCCION
Actualmente observamos que el paradigma orientado a objetos, solo podemos ejecutar un equipo a la vez como máximo en cambio con la introducción de las hebras concurrentes(programación concurrente)  o procesos es posible que cada objeto se ejecute simultáneamente, esperando mensajes y respondiendo adecuadamente. Como siempre la principal razón para la investigación de la programación concurrente es que nos ofrece una manera diferente de conceptualizar la solución de un problema, una segunda razón es la de aprovechar el paralelismo del hardware subyacente para lograr una aceleración significativa. Para entender mejor este detalle un buen ejemplo de un programa concurrente es el navegador Web de modem. Un ejemplo de concurrencia en un navegador Web se produce cuando e navegador empieza a presentar una página aunque puede estar aun descargando varios archivos de gráficos o de imágenes. La página que estamos presentando es un recurso compartido que deben gestionar cooperativamente las diversas hebras involucradas en la descarga de todos los aspectos de una página. Las diversas hebras no pueden escribir todas en la pantalla simultáneamente, especialmente si la imagen o grafico descargado provoca el cambio de tamaño del espacio asignado a la visualización de la imagen, afectando así la distribución del texto. Mientras hacemos todo esto hay varios botones que siguen activos sobre los que podemos hacer click particularmente el boton stop como una suerte de conclusión se observa en este paper  que las hebras operan para llevar a cabo una tarea como la del ejemplo anterior así mismo se vera que los procesos deben tener acceso exclusivo aun recurso compartido como por ejemplo la visualización para evitar interferir unas con otras.

CONCEPTOS:
  • ·         PROGRAMA SECUENCIAL: Es aquel que especifica la ejecución de una secuencia de instrucciones que comprenden el programa.
  • ·         PROCESO: Es un programa en ejecución, tiene su propio estado independiente del estado de cualquier otro programa incluidos los del sistema operativo. Va acompañado de recursos como archivos, memoria, etc.
  • ·         PROGRAMA CONCURRENTE: Es un programa diseñado para tener 2 o mas contextos de ejecución decimos que este tipo de programa es multihenbrado, porque tiene mas de un contexto de ejecución.
  • ·         PROGRAMA PARALELO: Es un programa concurrente en el que hay mas de un contexto de ejecución o hebra activo simultáneamente; desde un punto de vista semántica no hay diferencia entre un programa paralelo y concurrente.


EXCLUSIÓN MUTUA.

Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusión) consisten en que un solo proceso cuya función es excluir temporalmente a todos los demás procesos o threads de ejecutar su ingreso a sus secciones críticas para modificar el recurso compartido de forma que garantice la integridad del sistema.
La sección crítica es el fragmento de código y el instante donde puede modificarse un recurso compartido.
La exclusión mutua necesita ser aplicada sólo cuando un proceso accede a datos compartidos; ejemplo, la lectura de archivos, cuando los procesos ejecutan operaciones que no estén en conflicto entre sí; debe permitírseles proceder de forma concurrente. La condición de exclusión mutua debe conservarse para recursos no compatibles. Por ejemplo varios procesos no pueden compartir una impresora al mismo tiempo. Los recursos compatibles, por otra parte, no requieren acceso mutuamente excluyente y por lo tanto no pueden participar en un bloqueo mutuo.

SEMÁFOROS
Dijkstra dio en 1968 una solución elegante y sencilla al problema de la exclusión mutua con la introducción del concepto de semáforo binario. Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos. Esta técnica permite resolver la mayoría de los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes. Un semáforo binario es un indicador de condición (S) que registra si un recurso está disponible o no. Un semáforo binario sólo puede tomar dos valores: O y 1. Si, para un semáforo binario. S=1 entonces el recurso está disponible y la tarea lo puede utilizar; si S=0 el recurso no está disponible y el proceso debe esperar. Los semáforos sólo permiten tres operaciones sobre ellos: Espera. Señal. Inicializar.


Para más información detallada ver el siguiente  link: Exclusión Mutua

SINCRONIZACIÓN. 

Definición: Sincronización es la comunicación requerida entre dos o más procesos con el fin de sincronizar sus actividades.
Gráficamente:
 

  
Un proceso, P1, llegado a un punto T, no puede proseguir su ejecución hasta que otro proceso, P2, haya llegado a otro punto, Q, de su ejecución.

Para más información detallada ver el siguiente  link: Sincronización