Podcast
Questions and Answers
¿Cuál de las siguientes afirmaciones describe con mayor precisión el comportamiento de la operación sem_wait(s)
en un semáforo s
?
¿Cuál de las siguientes afirmaciones describe con mayor precisión el comportamiento de la operación sem_wait(s)
en un semáforo s
?
- Si el valor de `s` es mayor que 0, lo decrementa. Si es 0, el proceso continúa sin bloquearse.
- Si el valor de `s` es 0, bloquea el proceso hasta que `s` sea mayor que 0, luego lo decrementa. Si `s` es mayor que 0, lo decrementa directamente. (correct)
- Siempre decrementa el valor de `s` en una unidad, independientemente de su valor actual.
- Incrementa el valor de `s` en una unidad y, si hay procesos bloqueados esperando en `s`, reanuda uno de ellos.
Considerando un semáforo s
con un valor inicial de 2, y asumiendo que se han completado 5 llamadas a sem_signal(s)
y 3 llamadas a sem_wait(s)
, ¿cuál es el valor actual de s
?
Considerando un semáforo s
con un valor inicial de 2, y asumiendo que se han completado 5 llamadas a sem_signal(s)
y 3 llamadas a sem_wait(s)
, ¿cuál es el valor actual de s
?
- 6
- 10
- 4 (correct)
- 0
¿Qué condición debe cumplirse para que un proceso se bloquee al intentar ejecutar sem_wait(s)
sobre un semáforo s
?
¿Qué condición debe cumplirse para que un proceso se bloquee al intentar ejecutar sem_wait(s)
sobre un semáforo s
?
- El valor de `s` debe ser igual a 0. (correct)
- El valor de `s` debe ser mayor que 1.
- No hay otros procesos esperando en `s`.
- El valor de `s` debe ser menor que 0.
¿Cuál de las siguientes opciones describe un escenario imposible según las propiedades de los semáforos binarios?
¿Cuál de las siguientes opciones describe un escenario imposible según las propiedades de los semáforos binarios?
Si en un sistema concurrente, múltiples procesos comparten un semáforo, ¿cómo garantiza el diseño del semáforo que no haya condiciones de carrera al modificar su valor?
Si en un sistema concurrente, múltiples procesos comparten un semáforo, ¿cómo garantiza el diseño del semáforo que no haya condiciones de carrera al modificar su valor?
¿Cuál de las siguientes afirmaciones describe mejor la restricción sobre las interfoliaciones de las sentencias E (escritura) y L (lectura) en los procesos Productor y Consumidor?
¿Cuál de las siguientes afirmaciones describe mejor la restricción sobre las interfoliaciones de las sentencias E (escritura) y L (lectura) en los procesos Productor y Consumidor?
Si la sentencia x := a
(E) se retrasa indefinidamente en el proceso Productor, ¿cuál es el resultado más probable en el proceso Consumidor?
Si la sentencia x := a
(E) se retrasa indefinidamente en el proceso Productor, ¿cuál es el resultado más probable en el proceso Consumidor?
Considerando la necesidad de alternar las sentencias E y L, ¿qué problema podría surgir si múltiples procesos Consumidor intentan leer la variable x
simultáneamente?
Considerando la necesidad de alternar las sentencias E y L, ¿qué problema podría surgir si múltiples procesos Consumidor intentan leer la variable x
simultáneamente?
¿Qué modificación en el proceso Productor podría mitigar los problemas causados por retrasos en la ejecución de la sentencia E?
¿Qué modificación en el proceso Productor podría mitigar los problemas causados por retrasos en la ejecución de la sentencia E?
Supongamos que se introduce un búfer de tamaño fijo entre el proceso Productor y el proceso Consumidor. ¿Cómo afectaría esto a la necesidad de alternar estrictamente las sentencias E y L?
Supongamos que se introduce un búfer de tamaño fijo entre el proceso Productor y el proceso Consumidor. ¿Cómo afectaría esto a la necesidad de alternar estrictamente las sentencias E y L?
¿Cuál es la principal desventaja de utilizar dos variables lógicas independientes (p0sc
, p1sc
) en lugar de una sola para controlar el acceso a la sección crítica en un sistema concurrente?
¿Cuál es la principal desventaja de utilizar dos variables lógicas independientes (p0sc
, p1sc
) en lugar de una sola para controlar el acceso a la sección crítica en un sistema concurrente?
En el pseudocódigo presentado, si p0sc
y p1sc
son ambas true
, ¿qué problema fundamental de concurrencia se manifiesta?
En el pseudocódigo presentado, si p0sc
y p1sc
son ambas true
, ¿qué problema fundamental de concurrencia se manifiesta?
Considerando la propiedad de progreso en sistemas concurrentes, ¿cuál de las siguientes afirmaciones describe un escenario en el que el uso de dos variables booleanas independientes (p0sc
, p1sc
) podría aún fallar en garantizar el progreso?
Considerando la propiedad de progreso en sistemas concurrentes, ¿cuál de las siguientes afirmaciones describe un escenario en el que el uso de dos variables booleanas independientes (p0sc
, p1sc
) podría aún fallar en garantizar el progreso?
¿Cuál es la implicación de que los procesos no tengan que entrar de forma necesariamente alterna a la sección crítica al usar dos variables independientes?
¿Cuál es la implicación de que los procesos no tengan que entrar de forma necesariamente alterna a la sección crítica al usar dos variables independientes?
En el contexto de la corrección del pseudocódigo, ¿qué significa que la propiedad de progreso 'sí se cumple'?
En el contexto de la corrección del pseudocódigo, ¿qué significa que la propiedad de progreso 'sí se cumple'?
Supongamos que el proceso P0 establece p0sc := true
y, antes de entrar a la sección crítica, es interrumpido y el proceso P1 establece p1sc := true
. ¿Qué estado concurrente problemático puede surgir inmediatamente después?
Supongamos que el proceso P0 establece p0sc := true
y, antes de entrar a la sección crítica, es interrumpido y el proceso P1 establece p1sc := true
. ¿Qué estado concurrente problemático puede surgir inmediatamente después?
Considerando la solución propuesta con las variables p0sc
y p1sc
, ¿cuál es el principal riesgo si un proceso modifica su variable a false
prematuramente?
Considerando la solución propuesta con las variables p0sc
y p1sc
, ¿cuál es el principal riesgo si un proceso modifica su variable a false
prematuramente?
¿Qué cambio en el pseudocódigo podría mitigar el riesgo de que ambos procesos entren simultáneamente a la sección crítica?
¿Qué cambio en el pseudocódigo podría mitigar el riesgo de que ambos procesos entren simultáneamente a la sección crítica?
¿Cuál es la principal razón por la que la primera versión del código presentado no garantiza la exclusión mutua en la sección crítica?
¿Cuál es la principal razón por la que la primera versión del código presentado no garantiza la exclusión mutua en la sección crítica?
En el contexto del código provisto, ¿qué significa que p01sc
valga true
?
En el contexto del código provisto, ¿qué significa que p01sc
valga true
?
Considerando la secuencia de eventos que lleva al fallo de exclusión mutua, ¿cuál es el paso crítico en el que se produce la violación de la exclusión mutua?
Considerando la secuencia de eventos que lleva al fallo de exclusión mutua, ¿cuál es el paso crítico en el que se produce la violación de la exclusión mutua?
Si se implementara un semáforo en lugar de la variable booleana compartida, ¿qué operación correspondería a p01sc := true
en el código original?
Si se implementara un semáforo en lugar de la variable booleana compartida, ¿qué operación correspondería a p01sc := true
en el código original?
¿Qué cambio en el diseño del sistema podría mitigar el riesgo de que ambos procesos entren en la sección crítica simultáneamente?
¿Qué cambio en el diseño del sistema podría mitigar el riesgo de que ambos procesos entren en la sección crítica simultáneamente?
En términos de los principios de concurrencia, ¿qué condición necesaria para la exclusión mutua NO se cumple en la versión inicial del código?
En términos de los principios de concurrencia, ¿qué condición necesaria para la exclusión mutua NO se cumple en la versión inicial del código?
Si se utilizara un mutex en lugar de la variable booleana compartida, ¿cuál sería la principal ventaja en términos de corrección y seguridad?
Si se utilizara un mutex en lugar de la variable booleana compartida, ¿cuál sería la principal ventaja en términos de corrección y seguridad?
Considerando el problema de la exclusión mutua en sistemas concurrentes, ¿cómo afectaría la introducción de una sección no crítica más larga en uno de los procesos al riesgo de violación de la exclusión mutua en el código dado?
Considerando el problema de la exclusión mutua en sistemas concurrentes, ¿cómo afectaría la introducción de una sección no crítica más larga en uno de los procesos al riesgo de violación de la exclusión mutua en el código dado?
¿Cuál de las siguientes afirmaciones describe mejor la implicación de que turno0b
valga true
durante el intervalo (s, t] en la demostración de exclusión mutua?
¿Cuál de las siguientes afirmaciones describe mejor la implicación de que turno0b
valga true
durante el intervalo (s, t] en la demostración de exclusión mutua?
En la demostración de exclusión mutua, ¿qué condición no se menciona como verdadera durante el intervalo de tiempo (s, t], asumiendo que ambos procesos están en su sección crítica (SC) en el instante t?
En la demostración de exclusión mutua, ¿qué condición no se menciona como verdadera durante el intervalo de tiempo (s, t], asumiendo que ambos procesos están en su sección crítica (SC) en el instante t?
Considerando el argumento de espera limitada, ¿cuál es la razón principal por la que el proceso 1 no puede volver a entrar en la sección crítica (SC) mientras el proceso 0 permanece en espera ocupada?
Considerando el argumento de espera limitada, ¿cuál es la razón principal por la que el proceso 1 no puede volver a entrar en la sección crítica (SC) mientras el proceso 0 permanece en espera ocupada?
¿Cuál es la conclusión principal derivada de la demostración de exclusión mutua presentada?
¿Cuál es la conclusión principal derivada de la demostración de exclusión mutua presentada?
En el contexto de la espera limitada, ¿cuál es el peor escenario posible (m) en términos de cuántas veces el proceso 1 puede entrar a su sección crítica antes que el proceso 0, si el proceso 0 está en espera ocupada?
En el contexto de la espera limitada, ¿cuál es el peor escenario posible (m) en términos de cuántas veces el proceso 1 puede entrar a su sección crítica antes que el proceso 0, si el proceso 0 está en espera ocupada?
¿Cuál de las siguientes opciones describe una condición necesaria para que la demostración de exclusión mutua sea válida?
¿Cuál de las siguientes opciones describe una condición necesaria para que la demostración de exclusión mutua sea válida?
Si la condición de espera del proceso 0 se cumple en el intervalo (s, t], ¿qué se puede inferir sobre el estado del proceso 1 durante ese mismo intervalo?
Si la condición de espera del proceso 0 se cumple en el intervalo (s, t], ¿qué se puede inferir sobre el estado del proceso 1 durante ese mismo intervalo?
¿Por qué la demostración de exclusión mutua considera importante el intervalo de tiempo (s, t]?
¿Por qué la demostración de exclusión mutua considera importante el intervalo de tiempo (s, t]?
¿Cuál de las siguientes afirmaciones describe con mayor precisión el propósito del semáforo puede_leer
en el código proporcionado?
¿Cuál de las siguientes afirmaciones describe con mayor precisión el propósito del semáforo puede_leer
en el código proporcionado?
Considerando el valor inicial del semáforo puede_leer
y las operaciones sem_wait
y sem_signal
, ¿qué problema potencial se evita en este escenario de concurrencia?
Considerando el valor inicial del semáforo puede_leer
y las operaciones sem_wait
y sem_signal
, ¿qué problema potencial se evita en este escenario de concurrencia?
¿Qué implicación tiene el grafo de dependencia presentado en el texto con respecto al orden de ejecución de las sentencias E
y L
?
¿Qué implicación tiene el grafo de dependencia presentado en el texto con respecto al orden de ejecución de las sentencias E
y L
?
Si el semáforo puede_leer
se inicializara con el valor 1 en lugar de 0, ¿cuál sería la consecuencia más probable en la ejecución del programa?
Si el semáforo puede_leer
se inicializara con el valor 1 en lugar de 0, ¿cuál sería la consecuencia más probable en la ejecución del programa?
En un escenario donde múltiples Productores
y Consumidores
compartieran la variable x
y el semáforo puede_leer
, ¿qué modificación sería necesaria para mantener la sincronización correcta?
En un escenario donde múltiples Productores
y Consumidores
compartieran la variable x
y el semáforo puede_leer
, ¿qué modificación sería necesaria para mantener la sincronización correcta?
Si se eliminara la operación sem_signal(puede_leer)
del proceso Productor
, ¿qué problema surgiría en el proceso Consumidor
?
Si se eliminara la operación sem_signal(puede_leer)
del proceso Productor
, ¿qué problema surgiría en el proceso Consumidor
?
Supongamos que la función ProducirValor()
en el proceso Productor
es reemplazada por una función que ocasionalmente tarda mucho tiempo en retornar. ¿Cómo afectaría esto al proceso Consumidor
en el esquema actual?
Supongamos que la función ProducirValor()
en el proceso Productor
es reemplazada por una función que ocasionalmente tarda mucho tiempo en retornar. ¿Cómo afectaría esto al proceso Consumidor
en el esquema actual?
¿Cuál es la principal limitación de la solución de espera única implementada con el semáforo puede_leer
en términos de escalabilidad?
¿Cuál es la principal limitación de la solución de espera única implementada con el semáforo puede_leer
en términos de escalabilidad?
Flashcards
sem_wait(s)
sem_wait(s)
Bloquea el proceso si s es 0 y reduce s en 1 cuando s es mayor que 0.
sem_signal(s)
sem_signal(s)
Incrementa el valor de s en 1. Si hay procesos esperando, reanuda uno de ellos.
Valor del Semáforo
Valor del Semáforo
El valor no es negativo. Solo hay procesos esperando cuando el valor es 0.
Invariante del Semáforo
Invariante del Semáforo
Signup and view all the flashcards
Función de sem_signal
Función de sem_signal
Signup and view all the flashcards
Variables p0sc y p1sc
Variables p0sc y p1sc
Signup and view all the flashcards
Significado de 'true' en p0sc/p1sc
Significado de 'true' en p0sc/p1sc
Signup and view all the flashcards
Espera mutua
Espera mutua
Signup and view all the flashcards
Asignación de 'psc' a 'true'
Asignación de 'psc' a 'true'
Signup and view all the flashcards
Asignación de 'psc' a 'false'
Asignación de 'psc' a 'false'
Signup and view all the flashcards
Propiedad de progreso
Propiedad de progreso
Signup and view all the flashcards
Independencia de variables
Independencia de variables
Signup and view all the flashcards
Corrección del pseudocódigo
Corrección del pseudocódigo
Signup and view all the flashcards
¿Qué es 'p01sc'?
¿Qué es 'p01sc'?
Signup and view all the flashcards
Significado de 'p01sc = true'
Significado de 'p01sc = true'
Signup and view all the flashcards
Significado de 'p01sc = false'
Significado de 'p01sc = false'
Signup and view all the flashcards
¿Qué es 'exclusión mutua'?
¿Qué es 'exclusión mutua'?
Signup and view all the flashcards
¿Cuál es el fallo en el código?
¿Cuál es el fallo en el código?
Signup and view all the flashcards
¿Cómo se viola la exclusión mutua?
¿Cómo se viola la exclusión mutua?
Signup and view all the flashcards
Secuencia de eventos problemática
Secuencia de eventos problemática
Signup and view all the flashcards
¿Qué es 'pseudocódigo'?
¿Qué es 'pseudocódigo'?
Signup and view all the flashcards
Semáforo 'puede_leer'
Semáforo 'puede_leer'
Signup and view all the flashcards
Productor (en concurrencia)
Productor (en concurrencia)
Signup and view all the flashcards
Valor inicial de 'puede_leer'
Valor inicial de 'puede_leer'
Signup and view all the flashcards
Consumidor (en concurrencia)
Consumidor (en concurrencia)
Signup and view all the flashcards
Variable 'a' en Productor
Variable 'a' en Productor
Signup and view all the flashcards
Proceso Productor
Proceso Productor
Signup and view all the flashcards
Variable 'b' en Consumidor
Variable 'b' en Consumidor
Signup and view all the flashcards
sem_wait(puede_leer)
sem_wait(puede_leer)
Signup and view all the flashcards
b := x
b := x
Signup and view all the flashcards
Interfoliación (en concurrencia)
Interfoliación (en concurrencia)
Signup and view all the flashcards
Proceso Consumidor
Proceso Consumidor
Signup and view all the flashcards
sem_signal(puede_leer)
sem_signal(puede_leer)
Signup and view all the flashcards
Espera Única
Espera Única
Signup and view all the flashcards
¿Qué implica 't' en exclusión mutua?
¿Qué implica 't' en exclusión mutua?
Signup and view all the flashcards
¿Qué es 's' en la demostración?
¿Qué es 's' en la demostración?
Signup and view all the flashcards
¿Qué ocurre entre 's' y 't'?
¿Qué ocurre entre 's' y 't'?
Signup and view all the flashcards
¿Qué valor tienen p0sc
y p1sc
en (s, t]?
¿Qué valor tienen p0sc
y p1sc
en (s, t]?
Signup and view all the flashcards
Si el proceso 0 asignó en 's'...
Si el proceso 0 asignó en 's'...
Signup and view all the flashcards
¿Quién asignó a turno0
si el proceso 0 no entró?
¿Quién asignó a turno0
si el proceso 0 no entró?
Signup and view all the flashcards
¿Cuál es la cota de espera limitada?
¿Cuál es la cota de espera limitada?
Signup and view all the flashcards
¿Qué se demuestra con todo esto?
¿Qué se demuestra con todo esto?
Signup and view all the flashcards
Study Notes
Sincronización en Memoria Compartida
- Se exploran soluciones de exclusión mutua y sincronización basadas en el uso de memoria compartida entre procesos.
- Estas soluciones se dividen en:
- Soluciones de bajo nivel con espera ocupada, basadas en instrucciones de lectura/escritura directa y bucles de espera.
- Soluciones de alto nivel, con una capa de software que ofrece una interfaz y bloquea procesos en espera.
Soluciones de Bajo Nivel con Espera Ocupada
- Un proceso en espera entra en un bucle indefinido revisando continuamente si una condición se cumple.
- Se clasifican en:
- Soluciones Software: Operaciones de lectura/escritura de datos simples en memoria compartida.
- Soluciones Hardware (cerrojos): Instrucciones de máquina específicas dentro del repertorio de los procesadores.
Soluciones de Alto Nivel
- Las soluciones de bajo nivel son propensas a errores, generan algoritmos complejos y afectan al rendimiento de la CPU.
- Las soluciones de alto nivel incluyen:
- Semáforos: Construidos sobre soluciones de bajo nivel, utilizan servicios del SO para bloquear y reactivar procesos.
- Regiones críticas condicionales: Soluciones de nivel superior a los semáforos, implementables sobre estos.
- Monitores: Soluciones de alto nivel implementables en lenguajes orientados a objetos (Java, Python).
Estructura de los Procesos con Secciones Críticas
- Un proceso con una sección crítica (SC) se estructura en tres etapas:
- Protocolo de Entrada (PE): Instrucciones incluyendo posibles esperas para acceder a la SC.
- Sección Crítica (SC): Instrucciones ejecutadas por un solo proceso a la vez.
- Protocolo de Salida (PS): Instrucciones que permiten a otros procesos saber que la SC está libre.
- Las sentencias fuera de estas etapas se denominan Resto de Sentencias (RS).
Acceso Repetitivo a las Secciones Críticas
- Se simplifica el análisis asumiendo que cada proceso tiene una única SC contigua y se ejecuta en un bucle infinito con dos pasos: SC (con PE y PS) y RS.
- El proceso puede finalizar en la sección RS.
Diagrama de Estados de un Proceso
- Un proceso pasa por los estados de Protocolo de Entrada, Sección Crítica, Protocolo de Salida y Resto de Sentencias.
- Solo se puede terminar en Resto de Sentencias.
- En el Protocolo de Entrada se introducen esperas para garantizar la exclusión mutua en la Sección Crítica.
Comportamiento de los Procesos
- Para implementar soluciones correctas, se asume que los procesos terminan su sección crítica en un tiempo finito.
- Durante la sección crítica, un proceso no debe finalizar, abortar, entrar en bucle infinito o ser bloqueado externamente.
- Se busca minimizar el tiempo en SC.
Propiedades para Exclusión Mutua
- Un algoritmo de Exclusión Mutua debe ser correcto cumpliendo tres propiedades mínimas:
- Exclusión mutua: Un solo proceso puede ejecutar una sentencia de la SC en un momento dado.
- Progreso: Si ningún proceso está en la SC, y algunos compiten, uno debe poder acceder en un tiempo finito
- Espera limitada: Un proceso tiene un límite máximo en el número de veces que otros procesos pueden entrar a la SC mientras espera.
- Además, se valoran propiedades deseables como eficiencia y equidad.
Refinamiento Sucesivo de Dijkstra
- Es una serie de algoritmos que resuelven el problema de la exclusión mutua.
- Comienza con una versión simple incorrecta y realiza mejoras sucesivas. La versión final correcta es el Algoritmo de Dekker.
- Se asumen dos procesos (P0 y P1) ejecutando un bucle infinito con PE, SC, PS y otras sentencias.
Algoritmo de Dekker
- Es un algoritmo correcto para la exclusión mutua y es el resultado del refinamiento sucesivo de Djikstra.
- Cada proceso incluye una espera de cortesía si ambos coinciden en el PE.
- Para evitar interbloqueos, la espera de cortesía la realiza un proceso de forma alterna.
- Un variable permite determinar el fin de la espera de cortesía.
Algoritmo de Peterson
- Es un algoritmo correcto para exclusión mutua y más simple que el de Dekker.
- Utiliza variables lógicas que expresan la presencia en el PE o SC, más una variable de turno para resolver el interbloqueo.
- Se asigna a la variable de turno al inicio del PE dando preferencia al primer proceso en llegar.
- A diferencia de Dekker, el PE usa un solo bucle en lugar de bucles anidados.
Soluciones Hardware con Espera Ocupada (Cerrojos)
- Los cerrojos son una solución hardware para la exclusión mutua y la sincronización, basada en espera ocupada.
- La espera ocupada es un bucle ejecutado hasta que ningún otro proceso esté en la sección crítica.
- Un valor lógico compartido (cerrojo) indica si un proceso está en la SC. El cerrojo se actualiza en el protocolo de salida.
- Se requiere de instrucciones hardware especificas.
La Instrucción TestAndSet
- Instrucción máquina atómica (indivisible) disponible en algunos procesadores.
- Admite la dirección de memoria de una variable lógica como cerrojo.
- Lee el valor anterior del cerrojo, lo pone a
true
y devuelve el valor anterior, todo de forma atómica.
Desventajas de los Cerrojos
- Las esperas consumen tiempo de CPU.
- El acceso directo a los cerrojos puede llevar a errores.
- No garantizan equidad.
Uso de los Cerrojos
- Se usan restringidamente en componentes de software del sistema operativo o librerías de tiempo real.
- La ejecución de la SC debe llevar un intervalo corto de tiempo ya que las esperas ocupadas son cortas y la CPU no se desaprovecha tanto.
Semáforos para Sincronización
- Solucionan o aminoran los problemas de soluciones de bajo nivel y tienen un uso más amplio.
- No se utiliza espera ocupada, si no bloqueo de procesos utilizando la CPU de forma mucho mas eficiente.
- Resuelven el problema de exclusión mutua de forma sencilla utilizando esquemas sencillos.
- Un estructura de datos a las se accede únicamente mediante subprogramas específicos mejorando la seguridad de los programas.
Bloqueo y Desbloqueo de Procesos
- Los semáforos exigen que los procesos bloqueados no ocupen la CPU.
- Un proceso elige quedarse bloqueado.
- Un proceso en ejecución elige que se desbloquee otro proceso bloquedo.
- Se permite varios conjuntos de procesos bloqueados simultáneos.
- Necesita servicios externos proporcionados por el SO
Estructura de un Semáforo
- Un semáforo es una instancia de una estructura de datos con:
- Un conjunto de procesos bloqueados esperando al semáforo.
- Un valor natural (entero no negativo) llamado valor del semáforo.
Operaciones del Semáforo
- sem_wait(s): Bloquea el proceso si s es 0. Disminuir el valor en uno
- sem_signal(s): Aumenta el valor dese uno. Reactiva a uno de los procesos esperando.
Invariante de un Semáforo
- Dado un semáforo s en el tiempo t, su valor es el valor inicial + llamadas a sem_signal - llamadas a sem_wait >= 0
- Los cuatro valores son enteros
- La igualdad se cumple cuando no se esta ejecutando ni sem_wait ni sem_signal
- No cuentan sem_wait no completadas
Implementación sem _wat sem_signal
- Exclusión mutua sobre cada semáforo.
Patrones de Uso de Semáforos
- Esquema para solucionar la sincronización de un problema típico sencillo.
- Espera única: un proceso espera a que otro complete una sentencia.
- Exclusión mutua: acceso a una sección por parte de un número aleatorio de procesos.
- Problema del Productor/Consumidor: similar al de espera única pero repetida en un bucle.
Espera Única
- Un proceso "consumidor" lee una variable compartida.
- La sentencias deben de ser atómicas.
Espera Única: Solución con semáforo
- Se utiliza un semáforo cuyo valor es 1 solo cuando existe un valor para leer.
Espera Única : Verificación
- En cualquier instante, el número que se a ejecutado sem_signal se escribe después de E donde ns es menor o igual #E
- Se sigue para ver el invariante del monitor.
Uso de Semáforos para Exclusión Mutua
- Un semáforo se inicializa a 1 y se usa
wait
antes de la sección crítica ysignal
después de la sección crítica.
Verificación de Exclusión Mutua
- El número de procesos ejecutándose con un semáforo es: 0 <= nsc = nw - nw
Sincronización tipo Productor/Consumidor
- El problema de Productor/Consumidor es igual al que ya se conoce pero con lecturas y escrituras repetidas.
Solution Del Problema de Productores y Consumidores
- Se utiliza uno nuevo inicial izado en 1
Limitaciones de los semáforos
- Los problemas complejos con sincronización pueden ser difíciles de verificar.
- Al igual que los errores pueden provocar estados incorrectos.
Monitores como Mecansimo de Alto Nivel
- Se evita variables globales, se hacen explícitas las variables y las operaciones están protegidas. Esto permite tener acceso estructurado y encapsulación.
Estructura y Functionalidad de un Monitor
- El acceso es garantizado de forma mutua garantizando la sicnronización.
Ventajas sobre los Semáforos
- Los monitores hacen que los problemas sean más fáciles de ver.
Sintaxis de Un Monitor
- Se declara especificando las variables permanentes, los procedimientos del monitor y el código inicializado.
Componentes de Un Monitor
- Variables permanentes:
- Pueden ser accedidas del código.
- permanecen sin modificaciones.
- Procedimientos
- Toman nuevos valores
- Código de inicialización
- Fija un valor inicial.
Cola Del Monitor Para Exclusiones Mutuas
- Si el proceso que va a ser afectado no es el que se necesita entonces se bloquea y se añade a una cola.
- Cuando un proceso abandone el monitor y están todos libres, la cola seguirá como FIFO para garantizar la validez.
Estructura de UN Semáforo
- La exclusividad mutua se garantiza pero los procesos bloqueados no ocupan la CPU.
- Un hilo se solicita el bloqueo para la espera.
- Se utiliza cola dependiendo de que variable se necesite para la siguiente operación y se guarda con el orden de que se necesita.
Monitores para la sincronización
- Implementar sincronizaciones donde se requieran de facilidades.
- con semáforos solo existe bloqueo o activaciones pero con esto se puede bloquear y activar selectivamente.
Diseño para la verificación de monitores
- Un usuario sólo tiene acceso a las variables mediante un conjunto de funciones
- Es un recurso compartido al cual se accede de forma concurrente
- Exclusión mutua con los accesos a procedimientos.
Cond
- Variable tipo condición para hacer al SO saber cuando un proceso espere y libere al monitor.
- Wait y Signal:
- El proceso llama a wait indicando que espera una condición
- Otro proceso llama a señal una vez que la condición se ha cumplido
- Los procesos que hagan wait liberan la seguridad del monitor permitiendo que puedan entrar otros.
Semántica Y Exclusividad Mutua
- Un subproceso se solicita el bloqueo para la espera indicandole con prioridad al SO.
- Señal:
- Hay tipos de procedimientos de señal, a veces un programa funciona con un semáforo pero no con otro, y viceversa.
- Signal Y Continuar, el programa señal intenta hacer el signal pero otro programa ocupa ese valor por lo que a veces da errores por la espera.
- Signal Y Salida, el monitor señal libera el camino, pero el asignante es quien ejecuta.
- Signal y esperar por una condición.
- Hay tipos de procedimientos de señal, a veces un programa funciona con un semáforo pero no con otro, y viceversa.
Colas De Prioridad
- El planificador se le notifica del código dependiente de los tiempos por lo que así se puede poner uno con mayor o menor capacidad de tiempo.
- Se usan para la espera en FIFO.
El Problema de Los Escritores y Lectores
- Hay procesos que leen la estructura de datos, pero no pueden hacer nada más, su código simplemente lee y debe de ser hecho de forma concurrente, los escritores se van al último ciclo de la operación.
- Para implementar la sincronización correctamente se usaran 4 procedimientos.
- Para implementar se supone que el monitor se le llama cuando un proceso entra en modo lectura, para implementar se supone que si hay mas de 0 escritores, se espera a que no haya ninguno activo.
Cola De Urgencias
- Se tiene más prioridad en un monitor de espera con señal.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Este cuestionario explora el comportamiento y las propiedades de los semáforos en sistemas concurrentes. Aborda las operaciones sem_wait
y sem_signal
, condiciones de bloqueo, y el uso de semáforos binarios. También cubre cómo los semáforos previenen condiciones de carrera.