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