Categorieën: Alle - instrucciones - concurrencia - ejecución - paralelismo

door Criss Miranda 9 jaren geleden

389

Sistemas_Distribuidos

La programación concurrente se refiere a la ejecución paralela de múltiples instrucciones o procesos dentro de un sistema computacional. Este concepto es fundamental para mejorar la eficiencia y la velocidad de los programas al permitir que diferentes tareas se lleven a cabo simultáneamente.

Sistemas_Distribuidos

SOLUCIONES

Otra solución: Alternación estricta

Desactivar las interrupciones

En multiprocesamiento esta alternativa no tiene sentido.
Sólo es válida si la sección crítica es pequeña y donde no se usen las interrupciones.
El planificador se bloquearía pues depende de ellas para trabajar correctamente.

Condiciones para exclusión mutua y paralelismo correcto y eficiente

Límite de tiempo:

Ningún proceso deberá esperar tiempo arbitrariamente largo para entrar en su sección crítica.

Progreso:

Ningún proceso que se encuentre fuera de su sección crítica puede impedir que otro entre en la suya.

Sin suposiciones:

No se deben hacer hipótesis sobre la velocidad o la cantidad de procesadores.

Exclusión mutua:

No pueden haber simultáneamente dos procesos en sus respectivas secciones críticas.

Problema del productor – consumidor

Primitivas de bloqueo

wake_up (p):
El proceso p pasa del estado de bloqueado al estado de listo.
sleep ():
Implica que el proceso que la ejecuta pasa al estado de bloqueado.

Abrazo fatal

Posible solución:
El bloqueo del proceso.
Quantum de tiempo por proceso.
Con un solo procesador más dificultades
El consumidor espera debido a que no hay "buffers" llenos y el productor no puede generar ya que el procesador lo tiene el consumidor.
Entonces, el otro no podrá tomarlo y no se saldrá de esa situación.
La CPU está siendo utilizada por el proceso que está en espera.

Espera ocupada

El que espera consume tiempo de la CPU de forma improductiva.

Un proceso productor genera información que es tomada por el proceso consumidor

Por ejemplo, un programa genera ficheros de salida que son impresos por el SPOOLING de impresión

Sección Crítica

Condiciones de competencia. Sección crítica

Exclusión mutua con espera ocupada.

Sincronización entre procesos.

S1; parbegin S2; S3; parend; S4; S5;

S4

S5

S1

S3

S2

PARBEGIN-PAREND

Características de la Sintaxis

Operación up: se ejecuta en paralelo, con respecto a cualquier otro proceso que dependa solo del proceso del que depende la activación del hilo de ejecución.
•Operación down: después de ella, se ejecutan los procesos que dependen de la activación del hilo de ejecución en cuestión.

Objetivo

Desarrollar las habilidades en la combinación del paralelismo con la ejecución secuencial y el bloqueo de las llamadas al sistema.

Instrucciones para especificar en un programa la ejecución concurrente de instrucciones

Todas la instrucciones encerradas entre PARBEGIN y PAREND se ejecutarán concurrentemente
Su forma es: PARBEGIN S1; … Sn; PAREND;
Una construcción estructurada para especificar concurrencia es la PARBEGIN / PAREND

Para esquematizar estas situaciones se hace uso de los llamados grafos de precedencia

S3: c = a - b; S4: w = c + 1;

No se pueden ejecutar concurrentemente

S1: a = x + y; S2: b = z + 1;

Se pueden ejecutar concurrentemente

Programación concurrente

Aunque sea seudoparalela se deberán tener en cuenta las mismas consideraciones.

O simplemente concurrencia es la ejecución paralela de instrucciones o procesos.

Instrucciones para concurrencia

Las instrucciones FORK and JOIN fueron unas de las primeras notaciones que se utilizaron para especificar en un programa la ejecución concurrente de instrucciones.
JOIN

La instrucción JOIN permite unir varios hilos de ejecución en uno solo.

FORK

La instrucción FORK L produce en un programa dos hilos de ejecución concurrentes.

ESTADOS DE LOS PROCESOS

Listo

El proceso está en condiciones de ejecutar, pero está detenido temporalmente para permitir a otro proceso la ejecución.

Bloqueado

El proceso está esperando hasta que ocurra un evento externo (por ejemplo, una E/S).

En ejecución

El proceso está en posesión del CPU en ese instante.

Ubicación del SO en el Sistema de cómputo

Hardware

Lenguaje Máquina, Microprogramación, etc.

Programas del Sistema

Compiladores, Sistemas Operativos, etc.

Programas de Aplicación

Word, Office, etc.

Sistemas de Computo

FUNCIONES PRICIPALES

Administración de recursos
Asignar, en forma ordenada y controlada, los distintos recursos de que dispone el sistema de cómputo entre varios programas que compiten por ellos
Máquina ampliada o virtual
Dar facilidades a los usuarios, separándolos de tener que conocer las obscuras y complejas interioridades del hardware

PROCESO

Es un programa en ejecución que incluye la secuencia de código ejecutable, los datos, la pila, el contador de programa, los valores almacenados en los registros y todo lo que refleja el estado de su ejecución en un instante
Esto permite continuar su procesamiento si en algún momento se le retira el control de la CPU (constituye la base de la multiprogramación).

SOFTWARE

HARDWARE