Want to make creations as awesome as this one?

Transcript

LECTORES, ESCRITORES

Daniel Castellanos ReyesCesar Ivan Trejo Sanchez

01

video

EXPLICACION

introduccion

El problema de los lectores y escritores es cómo compartir un libro. Varias personas pueden leer al mismo tiempo, pero solo una puede escribir sin molestarse. La manera de resolver esto es tener el manejo de la concurrencia para que los lectores puedan leer si así les place, mientras que los escritores también puedan escribir sin ser interrumpidos. Este proyecto utiliza semáforos para coordinar a los lectores y escritores.

EXPLICACION DE CÓDIGO

Variables compartidas y semáforos:

x: Semáforo binario que controla el acceso exclusivo a la variable contLectores, asegurando que un lector a la vez pueda modificar el contador de lectores activos.esem: Semáforo que controla el acceso de los escritores al recurso compartido. Solo un escritor puede acceder a la vez, y solo cuando no hay lectores.

Método lector():

Inicio lectura:Los lectores adquieren el semáforo x para actualizar el contador de lectores (contLectores).Si es el primer lector (cuando contLectores pasa de 0 a 1), adquiere el semáforo esem para bloquear a los escritores, evitando que escriban mientras haya lectores.Luego libera el semáforo x para permitir que otros lectores también puedan acceder.Simulación de lectura:Simula un proceso de lectura con Thread.sleep y muestra un mensaje indicando que el lector está leyendo.Fin de lectura:Después de la lectura, adquiere nuevamente el semáforo x para decrementar el contador de lectores.Si es el último lector (cuando contLectores pasa de 1 a 0), libera el semáforo esem, permitiendo que los escritores puedan escribir.Libera el semáforo x y simula el procesamiento de los datos leídos.

EXPLICACION DE CÓDIGO

Método escritor():

Inicio escritura:El escritor adquiere el semáforo esem, bloqueando el acceso a otros escritores y a los lectores mientras escribe.Simulación de escritura:Simula un proceso de escritura con Thread.sleep y muestra un mensaje indicando que el escritor está escribiendo.Fin de escritura:El escritor libera el semáforo esem, permitiendo que otros escritores o lectores puedan acceder al recurso.Luego espera un tiempo antes de intentar escribir de nuevo.

Método exec():

Se crean 5 hilos de lectores y 3 hilos de escritores, que se ejecutan de manera concurrente simulando las lecturas y escrituras sobre un recurso compartido.

ejecución

preguntas del tema

¿Qué es el problema de lectores y escritores?¿Por qué es importante que los lectores y escritores no se interrumpan entre sí?¿Cómo crees que los semáforos ayudan a resolver este problema?¿Cuál crees que sería un ejemplo cotidiano del problema de lectores y escritores?¿Qué te parece más difícil: que haya muchos lectores o muchos escritores al mismo tiempo?

conclusion

El problema de lectores y escritores es crucial en programación concurrente. Usando semáforos, garantizamos que los lectores puedan acceder a la información sin interferencias y que los escritores puedan modificarla sin conflictos. Este equilibrio es esencial para mantener la integridad de los datos y optimizar el rendimiento del sistema.

referencias

  • Codeurjc. (s. f.). concurrencia-tema5/src/main/java/ejercicio/ejer_t5_5_5/LectoresEscritores.java at master · codeurjc/concurrencia-tema5. GitHub. https://github.com/codeurjc/concurrencia-tema5/blob/master/src/main/java/ejercicio/ejer_t5_5_5/LectoresEscritores.java
  • Greyrat, R. (2022, 5 julio). Problema de Lectores-Escritores | Conjunto 1 (Introducción y solución de preferencia de los lectores) – Barcelona Geeks. https://barcelonageeks.com/problema-de-lectores-escritores-conjunto-1-introduccion-y-solucion-de-preferencia-de-los-lectores/
  • Mtro. José Luis Elvira. (2020, 24 junio). Sistemas Operativos, Problema de la concurrencia 28 Lectores escritores, prioridad a los lectores [Vídeo]. YouTube. https://www.youtube.com/watch?v=Ac5W-jH5GFA
GitHub