Clase V - Ejercicios Clasicos De Sincronzacion

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Clase V - Ejercicios Clasicos De Sincronzacion as PDF for free.

More details

  • Words: 471
  • Pages: 9
Presentación

Sincronización de Procesos INGENIERÍA EN INFORMÁTICA Sistemas de Operación (actualizado)

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Sistemas Operativos

Problemas clásicos • Búfer limitado (productor-consumidor): Modela la relación de un proceso que consume la información generada por otro.

• Lectores y escritores: Modela la manipulación de datos compartidos por procesos con diferentes patrones de acceso: unos que leen (lectores) y otros que escriben (escritores).

• Filósofos comensales: Modela la compartición simultánea de varios recursos por varios procesos. Sistemas Operativos

Problema del Búfer Limitado • Cada cierto tiempo, el productor coloca un ítem en el buffer. • El consumidor retira un desde el buffer. • Se requiere de una sincronización cuidadosa. • El consumidor debe esperar si el buffer está vacío. • El productor debe esperar si el buffer está lleno. • También conocido como el problema del productor consumidor Sistemas Operativos

Problema del Búfer Limitado Semaforo empty; /*con N tickets */ Semaforo full; /* con 0 tickets */ Semaforo mutex; /* con 1 ticket */ Item buffer[N]; int nextempty=0, nextfull=0;

void Productor() { for (;; ) { Item x = Produce(); Wait(empty); Wait(mutex); buffer[nextempty] = x; nextempty = (nextempty + 1) % N; Signal(mutex); Signal(full); } }

void Consumidor() { for (;; ) { Item x; Wait(full); Wait(mutex); x = buffer[nextfull]; nextfull = (nextfull + 1) % N; Signal(mutex); Signal(empty); Consume(x); } } Sistemas Operativos

Problema del Búfer Limitado

Sistemas Operativos

Problema de los lectores-escritores • En este problema varios procesos concurrentes comparten una misma estructura de datos y necesitan consultarla o actualizarla • Un proceso lector es aquel que está consultando la estructura en algún momento • Un proceso escritor es aquel está modificando la estructura de datos. • Las características del problema son los siguientes: • Se permite a varios procesos lectores al mismo tiempo • Sólo se permite un proceso escritor en un instante dado. Mientras el escritor modifica la estructura no puede haber lectores u otros procesos escritores • Es clásico en los sistemas de Bases de Datos. • Cualquier implementación genera Inanición. Sistemas Operativos

Problema de los lectores-escritores Semaforo escritura= 1; /* con 1 ticket */ Semaforo mutex= 1; /* con 1 ticket * int lectores = 0;

void Lector() { for (;; ) { Wait(mutex); lectores++; if (lectores==1) Wait (escritura); //primero en llegar. Signal(mutex); leer(); Wait(mutex); lectores--; if (lectores==0) Signal(escritura); //último en salir. Signal(mutex); }

void Escritor() { for (;; ) { Wait(escritura); escribir(); Signal(escritura); } }

En esta solución la prioridad Se le da a los lectores, Hambruna para los escritores Sistemas Operativos

Problema de los lectores-escritores

Sistemas Operativos

Problema de los filósofos comensales • 5 filósofos se pasaban la vida pensando y comiendo. La comida la hacían en una mesa con cinco platos y cinco tenedores. Para comer se necesitaban dos tenedores a la vez. ¿Cómo sincronizar para que todos puedan comer? Sistemas Operativos

Related Documents