Resúmenes UNED

Resúmenes de algunas asignaturas de la UNED

Archivos de la categoría ‘Programación Concurrente’

Capítulo 5 – Regiones Críticas Condicionales

Publicado por tomassi en 20 octubre 2009

Definición de Región Crítica Condicional

En Pascal-fc podemos declarar una región crítica condicional (RCC) de la siguiente forma:

  • resource SC: i, j; Lo que significa que se declara la RCC SC compuesta por las variables i y j. Estas dos variables no podrán pertenecer a otra RCC distinta a SC.

Así las variables que componen una RCC solo podrán ser referenciadas dentro de la construcción region. De esta forma resolvemos el problema de la exclusión mutua.

Leer el resto de esta entrada »

Publicado en Programación Concurrente | Etiquetado: , , , , , , , | Deja un Comentario »

Capítulo 4 – Semáforos

Publicado por tomassi en 13 octubre 2009

Definición de Semáforo

Los semáforos pueden realizar tres operaciones: wait, signal y initial. Estas operaciones son atómicas, de modo que sólo un proceso podrá estar ejecutándolas sobre un semáforo en determinado momento.

  • wait(s): Decrementa el valor del semáforo s. Si s es 0 bloquea el proceso que realiza la llamada. Es importante saber que, según la implementación, cuando un proceso realiza esta llamada puede, decrementar s sin importar su valor o decrementarlo sólo si es mayor que 0. Así s podrá tener valores negativos o no según como se haya implementado.
  • signal(s): Si hay algún proceso bloqueado lo desbloquea y si s permite valores negativos lo incrementa. Si no hay procesos bloqueados solamente incrementará el valor de s.
  • initial(s, v): Inicializa el valor de s a v. Esta operación es específica de Pascal-fc, donde la implementación de los semáforos no permite valores negativos.

Se asume que los procesos bloqueados se insertan en una cola FIFO (First In First Out), así el primero en ser bloqueado es el primero que se desbloquea.
Leer el resto de esta entrada »

Publicado en Programación Concurrente | Etiquetado: , , , , | Deja un Comentario »

Capítulo 3 – Primeras Aproximaciones a la Solución de los Problemas de la Programación Concurrente

Publicado por tomassi en 7 octubre 2009

Tipos de Sincronización y su Solución

Los dos tipos de sincronización necesarios entre procesos concurrentes son la exclusión mutua y la condición de sincronización definidos en el capítulo 1. Cuando se hable de procesos se asume que también se habla sobre los hilos.

Exclusión Mutua

Cuando un proceso se encuentra en su sección crítica, el resto de procesos no podrá estar en esa misma sección y si quisieran acceder a ella deberán esperar a que quede libre. Cuando un proceso termina de ejecutar su sección crítica se deberá permitir que otro proceso en espera entre en la sección.

Leer el resto de esta entrada »

Publicado en Programación Concurrente | Etiquetado: , , , , , , | Deja un Comentario »

Capítulo 2 – Procesos vs. Hilos

Publicado por tomassi en 14 septiembre 2009

Procesos

Una forma de programar concurrentemente es dividir un programa en procesos ya que por lo general, los sistemas operativos proveen de un sistema de ejecución concurrente para éstos. Para hacer una comparación entre procesos e hilos aquí se presentan una serie de características de los procesos:

  • Poseen espacios de memoria independientes. Algunos sistemas operativos permiten que distintos procesos compartan memoria.
  • Pueden encontrarse en diferentes estados. Los cambios de estado (cambios de contexto) son relativamente costosos en términos de tiempo.
  • La estructura de los procesos se encuentra en la memoria del núcleo. Esto causa que sea necesario realizar costosas llamadas al sistema para acceder a ella.

Leer el resto de esta entrada »

Publicado en Programación Concurrente | Etiquetado: , , , , , , , | Deja un Comentario »

Capítulo 1 – Conceptos fundamentales

Publicado por tomassi en 4 septiembre 2009

Programa: Un programa es un conjunto de instrucciones. Se trata de algo estático. Para que el programa pueda hacer algo hay que ponerlo en ejecución.

Proceso: A grandes rasgos, un proceso es un programa o parte de él en ejecución. Una mejor definición es la de una actividad asíncrona susceptible de ser asignada a un procesador.

Concurrencia: Dos procesos serán concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera y antes de la última del otro.

Leer el resto de esta entrada »

Publicado en Programación Concurrente | Etiquetado: , , , , , , , | Deja un Comentario »

 
Seguir

Get every new post delivered to your Inbox.