Sistemas de Computo

HARDWARE

SOFTWARE

PROCESO

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).

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

FUNCIONES PRICIPALES

Máquina ampliada o virtual

Dar facilidades a los usuarios, separándolos de tener que conocer las obscuras y complejas interioridades del hardware

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

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

Programas de Aplicación

Word, Office, etc.

Programas del Sistema

Compiladores, Sistemas Operativos, etc.

Hardware

Lenguaje Máquina, Microprogramación, etc.

ESTADOS DE LOS PROCESOS

En ejecución

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

Bloqueado

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

Listo

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

Programación concurrente

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.

FORK

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

JOIN

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

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

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

S1: a = x + y;

S2: b = z + 1;

Se pueden ejecutar concurrentemente

S3: c = a - b;

S4: w = c + 1;

No se pueden ejecutar concurrentemente

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

PARBEGIN-PAREND

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

Una construcción estructurada para especificar concurrencia es la PARBEGIN / PAREND

Su forma es: PARBEGIN S1; … Sn; PAREND;

Todas la instrucciones encerradas entre PARBEGIN y PAREND se ejecutarán concurrentemente

Objetivo

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

Características de la Sintaxis

•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.

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.

S1

S2

S3

S4

S5

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

Sección Crítica

Sincronización entre procesos.

Exclusión mutua con espera ocupada.

Condiciones de competencia. Sección crítica

Problema del productor – consumidor

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

Espera ocupada

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

Abrazo fatal

Con un solo procesador más dificultades

La CPU está siendo utilizada por el proceso que está en espera.

Entonces, el otro no podrá tomarlo y no se saldrá de esa situación.

El consumidor espera debido a que no hay "buffers" llenos y el productor no puede generar ya que el procesador lo tiene el consumidor.

Posible solución:

Quantum de tiempo por proceso.

El bloqueo del proceso.

Primitivas de bloqueo

sleep ():

Implica que el proceso que la ejecuta pasa al estado de bloqueado.

wake_up (p):

El proceso p pasa del estado de bloqueado al estado de listo.

Condiciones para exclusión mutua y paralelismo correcto y eficiente

Exclusión mutua:

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

Sin suposiciones:

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

Progreso:

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

Límite de tiempo:

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

SOLUCIONES

Desactivar las interrupciones

El planificador se bloquearía pues depende de ellas para trabajar correctamente.

Sólo es válida si la sección crítica es pequeña y donde no se usen las interrupciones.

En multiprocesamiento esta alternativa no tiene sentido.

Otra solución: Alternación estricta

Exclusión mutua con espera ocupada.