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.