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