0% encontró este documento útil (0 votos)
17 vistas19 páginas

Modulo 4 - Ejercicios Resueltos

El documento describe varios problemas de sincronización en sistemas concurrentes utilizando semáforos. Se presentan diferentes escenarios con procesos y semáforos, detallando los valores iniciales y las primitivas P() y V() necesarias para garantizar la correcta ejecución de las secuencias de procesos. Cada problema incluye una solución específica que asegura el funcionamiento adecuado del sistema descrito.

Cargado por

tinoo.amato
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas19 páginas

Modulo 4 - Ejercicios Resueltos

El documento describe varios problemas de sincronización en sistemas concurrentes utilizando semáforos. Se presentan diferentes escenarios con procesos y semáforos, detallando los valores iniciales y las primitivas P() y V() necesarias para garantizar la correcta ejecución de las secuencias de procesos. Cada problema incluye una solución específica que asegura el funcionamiento adecuado del sistema descrito.

Cargado por

tinoo.amato
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1) Dados los valores iniciales de cuatro semáforos (R=0, S=0, T=1, U=1), Determine el uso de las primitivas

P() y V(), de forma tal que la secuencia normal de ejecución sea CABD (Una vez que los proceso ingresan a
su RC, terminan sin interrupciones).

A B C D
P(U) P(R) P(T) P(S)
P(U) - - -
- - - -
- - - -
- - - -
V(R) V(S) V(U) V(U)
V(T)
2) Dados los siguientes semáforos con sus respectivos valores (X=2, Y=2, Z=2) y el siguiente esquema de
procesos con sus respectivas primitivas.
Indicar cual será la secuencia de ejecución, ¿puede haber mas de una?, ¿Cuántas veces se ejecuta la
secuencia?

A B C D
P(X) P(Z) P(Y) P(X)
P(Y) P(X) P(Z) P(Y)
P(Z) P(Y) P(X) P(Z)
- - - -
- - - -
- - - -
V(X) V(Z) V(X) V(Y)
V(Y) V(X) V(Z) V(X)

Solución:
No llega a ejecutarse ninguna secuencia

3) Dados los siguientes semáforos con sus respectivos valores (W=2, X=1, Y=1, Z=1) Determine el uso de las
primitivas P( ) y V(), que deberán hacer los procesos A, B y C, para que la secuencia de ejecución sea: A B C
A B C (dos veces cada proceso).

Solución:

A B C
P(W) P(Y) P(Z)
P(X) P(Y) P(Z)
- - -
- - -
- - -
V(Y) V(Y) V(Z)
V(Z) V(X)
4) Dados los siguientes semáforos con sus respectivos valores (R=1, S=1, T=0). Determine el uso de las
primitivas P( ) y V(), que deberán hacer los procesos A, B y C, para que la secuencia de ejecución sea: B A B
C (solo una vez).

Solución:

A B C
P(S) P(R) P(T)
P(S) - P(T)
- - -
- - -
V(R) V(S)
V(T)

5)Dados los siguientes semáforos con sus respectivos valores (X=1, Y=3, Z=1, W=0) y el siguiente esquema
de procesos con sus respectivas primitivas.
Se completa alguna secuencia de ejecución? puede haber mas de una? Si es así indique al menos dos. Cuántas
veces se ejecuta la/s secuencia/s?

A B C D
P(X) P(Y) P(W) P(Z)
P(Y) P(W) P(X) P(Z)
P(Y) P(Y)
- - - -
V(Z) V(X) V(Y) V(W)
V(Y) V(X) V(Z) V(W)

Solución:
La secuencia que se ejecuta es: ADBC
5) Dados los siguientes semáforos (W, X, Y, Z) Determine su valor inicial y el uso de las primitivas P( ) y
V(), que deberán hacer los procesos A, B y C, para que la secuencia de ejecución sea: A B C B A

Solución:

A B C
P(X) P(W) P(Z)
P(X) P(Y) P(Z)
- - P(W)
- - -
- - -
V(Y) V(X) V(Y)
V(Z) V(Z)

Valores iniciales:

W: 3
X: 2
Y: 0
Z: 0
6) Tenemos un sistema con 2 procesos productores P1 y P2 y un proceso consumidor C1. Los procesos
productores pueden depositar mensajes en el buffer en cualquier orden, mientras haya lugar, y el proceso
consumidor puede consumir en cualquier momento siempre y cuando haya mensajes en el buffer. El buffer
tiene una capacidad máxima de 3 mensajes. Solo puede acceder al buffer un proceso a la vez.
Determine los semáforos, sus valores iniciales y las primitivas necesarias para que el sistema funcione
correctamente.

P1 P2 C1
P(E) P(E) P(D)
P(M) P(M) P(M)
- - -
- - -
- - -
V(M) V(M) V(M)
V(D) V(D) V(E)

Valores iniciales
M=1
E=3
D=0

7) Tenemos un sistema con 1 proceso productor P1 y 2 procesos consumidores C1 y C2. El proceso productor
puede depositar mensajes en el bufer en cualquier momento, mientras haya lugar, y los procesos
consumidores deben consumir manteniendo una alternancia estricta (siempre y cuando haya mensajes en el
bufer). El bufer tiene una capacidad máxima de 3 mensajes. Solo puede acceder al bufer un proceso a la vez.
Determine los semáforos, sus valores iniciales y las primitivas necesarias para que el sistema funcione
correctamente.

P1 C1 C2
P(E) P(A1) P(A2)
P(M) P(D) P(D)
- P(M) P(M)
- - -
- - -
- - -
V(M) V(M) V(M)
V(D) V(E) V(E)
V(A2) V(A1)

Valores iniciales
M=1
E=3
D=0
A1=1
A2=0
8) Determine los semáforos, sus valores iniciales y las primitivas necesarias para que los procesos A, B y C
repitan en un ciclo infinito la secuencia ABABC

A B C
P(X) P(Y) P(Z)
P(X) P(Z)
- - -
- - -
- - -
V(Y) V(X) V(X)
V(Z) V(X)

Valores iniciales:

X: 3
Y: 0
Z: 0

9) Dado un sistema con 2 procesos productores P1 y P2 y 2 procesos consumidores C1 y C2. Los procesos
productores pueden depositar mensajes en el bufer en cualquier orden, mientras haya lugar, y los procesos
consumidores puede consumir en cualquier momento siempre y cuando haya mensajes en el bufer. El bufer
tiene una capacidad máxima de 3 mensajes. Solo puede acceder al bufer un proceso a la vez.
Determine los semáforos, sus valores iniciales y las primitivas necesarias para que el sistema funcione
correctamente.

P1 P2 C1 C2
P(E) P(E) P(D) P(D)
P(M) P(M) P(M) P(M)
- - - -
- - - -
- - - -
V(M) V(M) V(M) V(M)
V(D) V(D) V(E) V(E)

Valores iniciales
M=1
E=3
D=0

10) Se tienen 3 procesos P1, CP y C2, y 2 Bufers (A y B). EL proceso P1 produce y deposita mensajes en el
bufer A en cualquier momento, mientras haya lugar. El proceso CP consume los mensajes del bufer A (puede
consumir en cualquier momento siempre y cuando haya mensajes en el bufer A) y por cada mensaje que
consume del bufer A, genera y deposita un mensaje en el bufer B (debe verificar que haya espacio en el bufer
B). El proceso C2 consume los mensajes del bufer B, puede consumir en cualquier momento siempre y
cuando haya mensajes en el bufer B. Ambos bufers tienen una capacidad máxima de 3 mensajes (cada uno).
Solo puede acceder a cada bufer un proceso a la vez.
Determine los semáforos, sus valores iniciales y las primitivas necesarias para que el sistema funcione
correctamente.

P1 CP C2
P(EA) P(DA) P(DB)
P(MA) P(EB) P(MB)
- P(MA) -
- P(MB) -
- - -
V(MA) V(MA) V(MB)
V(DA) V(MB) V(EB)
V(EA)
V(DB)

Valores iniciales
MA, MB=1
EA, EB=3
DA, DB=0

11) Una cochera subterránea inteligente cuenta con capacidad para 10 autos, y un montacargas que sube y
baja los autos. Dicho montacargas solo puede ser utilizado por un auto a la vez, ya sea para subir o para bajar.
Determine los semáforos necesarios con sus primitivas para sincronizar dicha cochera.
Utilice las funciones: salir_de_la_cochera() y entrar_a_la_cochera()

Solución:

P(cochera) P(coches)
P(montacargas) P(montacargas)
entrar_a_la_cochera() salir_de_la_cochera()
V(montacargas) V(montacargas)
V (coches) V(cochera)

Semáforos Valor inicial


Cochera 10 (suponiendo que la cochera está vacía)
Coches 0 (suponiendo que la cochera está vacía)
Montacargas 1 (mutex)

12) Una cochera subterránea inteligente ubicada en el segundo subsuelo cuenta con capacidad para 10 autos.
Posee 2 montacargas, uno que sube y baja los autos entre la Pb y el 1° subsuelo y otro que sube y baja los
autos entre el 1° subsuelo y el 2° subsuelo. Dichos montacargas solo pueden ser utilizados por un auto a la
vez, ya sea para subir o para bajar. En el 1° subsuelo solo hay capacidad para 2 autos en forma transitoria,
para pasar de un monta cargas al otro, debe haber un espacio disponible.

Determine los semáforos necesarios con sus primitivas para sincronizar dicha cochera.
Utilice las funciones: bajar_al_primer_subsuelo()
bajar_al_segundo_subsuelo()
subir_al_primer_subsuelo()
subir_a_la_Planta_baja()

Solución:

P(cochera) P(coches)
P(primer_subsuelo) P(primer_subsuelo)
P(montacargas_1) P(montacargas_2)
bajar_al_primer_subsuelo() subir_al_primer_subsuelo()
V(montacargas_1) V(montacargas_2)
P(montacargas_2) P(montacargas_1)
bajar_al_segundo_subsuelo() subir_a_planta_baja ()
V(primer_subsuelo) V(primer_subsuelo)
V(montacargas_2) V(montacargas_1)
V(coches) V(cochera)

Semáforo Valor inicial


Cochera 10 (suponiendo que la cochera está vacía)
Coches 0 (suponiendo que la cochera está vacía)
Montacargas_1 1 (mutex)
Montacargas_2 1 (mutex)
Primer_subsuelo 2
13) En un sistema de comunicaciones se posee dos procesos que envían mensajes a dos procesos receptores
(que sólo trabajan de routers de los datos hacia el proceso consumidor). Cada proceso receptor comparte un
único buffer de entrada de 15 posiciones. El trabajo de los receptores es el de formar un único mensaje y
enviarlo al proceso consumidor. Un mensaje está formado por un mensaje recibido por el proceso receptor
uno y otro mensaje recibido por el proceso receptor dos (se descarta del ejercicio la complejidad de que las
posiciones de los buffers deberían ser la misma). El proceso consumidor sólo puede leer la información y
consumirla si los dos receptores recibieron un mensaje, y entre estos dos tipos de procesos hay un buffer de
una sola posición. Debajo se encuentra el gráfico de los procesos y los elementos que los comunican.

E Buffer 15 posiciones R
1 realice el esquema de secuencias de los
Se pide que 1 semáforos por proceso, indicando los valores iniciales de
los semáforos y el tipo de cada uno. B. 1 poos
C
E R
E1 2 E2Buffer 15 posiciones
R1 2 R2 C
P(EBE1) P(EBE2) P(MBE1) P(MBE2) P(MB2RX)
P(ME1) P(ME2) P(EB2R1) P(EB2R2) P(MB2RX)
P(ME1) P(ME2)
P(MB2) P(MB2)
ENVIAR() ENVIAR() CyP() CyP() CONSUMIR()
V(ME1) V(ME2) V(ME1) V(ME2) V(EB2R1)
V(MBE1) V(MBE2) V(MB2) V(MB2) V(EB2R2)
V(MB2RX) V(MB2RX)
V(EBE1) V(EBE2)

Semáforos:
EBE1 = 15 (Espacio en buffer E1)
EBE2 = 15 (Espacio en buffer E2)
ME1 = 1 (Mutex buffer E1)
ME2 = 1 (Mutex buffer E2)
MBE1 = 0 (Mensajes en buffer E1)
MBE2 = 0 (Mensajes en buffer E2)
EB2R1 = 1 (Espacio en el buffer 2 para R1)
EB2R2 = 1 (Espacio en el buffer 2 para R2)
MB2 = 1 (Mutex buffer 2)
MB2RX = 0 (Mensajes en buffer 2)

14) Una peluquería de un pequeño pueblo se encarga de cortarle el cabello a todos sus habitantes, para tal fin
cuenta con tres sectores claramente diferenciados. Uno para caballeros, uno para damas, cada uno con un
único sillón (es decir que solo un hombre por vez y solo una mujer por vez pueden ser atendidos) y un sector
para niños con dos sillones (dos niños pueden ser atendidos simultáneamente). A su vez cuenta con una sala
de espera común a los 3 sectores con capacidad para 10 personas. Una persona que desee cortarse el cabello
deberá en primer lugar ingresar a la peluquería, para lo cual debe haber espacio en la sala de espera, en caso
contrario debe esperar afuera. Una vez en la sala de espera, para ser atendido debe estar libre el sillón (o uno
de ellos en el caso de los niños) correspondiente. Si una persona llega a la peluquería y la sala de espera está
llena debe esperar afuera aunque el sillón que le corresponde esté libre.
Defina los semáforos necesarios con sus valores iniciales correspondientes y las primitivas P y V que deberan
utilizarse para sincronizar este problema de concurrencia.

Solución:

Semáforos:
Espera = 10
SillónH = 1
SillónM = 1
SillónN = 2

P(Espera) P(Espera) P(Espera)


P(SillónH) P(SillónM) P(SillónN)
V(Espera) V(Espera) V(Espera)
CortarHombre() CortarMujer() CortarNiño()
V(SillónH) V(SillónM) V(SillónN)

15) Un aeropuerto internacional cuenta con 3 pistas de aterrizaje y 10 hangares para guardar aviones. El
trayecto que une los hangares con las pistas solo permite el paso de un avión por vez. Un avión que desea
despegar debe verificar que haya una pista disponible, salir del hangar hacia dicha pista y luego despegar. Un
avión que desea aterrizar debe verificar que haya una pista libre y aterrizar, luego verificar la disponibilidad
de un hangar y desplazarse hacia el. Si un avión aterriza y no hay hangares disponibles debe quedarse
ocupando la pista mientras espera que un hangar se libere.

a. Se pide que determine los semáforos con sus valores iniciales y las primitivas necesarias para sincronizar el
aeropuerto.
b. Si las 3 pistas fueran ocupadas por aviones en espera de hangares y todos los hangares estuviesen
ocupados, se produciría un deadlock ? Justifique su respuesta.
Resultaría conveniente arbitrar los medios necesarios para evitar que esto ocurra.

Tip:
Los procesos a utlizar son:
Despegar()
Aterrizar()
Salir_del_hangar()
Entrar_al_hangar()

Resolución:
Solución simple (sin tener en cuenta el punto b)

Semáforos:

PISTA = 3
HANGAR = 10 (suponemos los hangares vacíos al inicio)
MUTEX = 1 (Mutex para sincronizar el uso del trayecto entre la pista y los hangares)

P(PISTA) P(PISTA)
ATERRIZAR() P(MUTEX)
P(HANGAR) SALIR_DEL_HANGAR()
P(MUTEX) V(MUTEX)
ENTRAR_AL_HANGAR() V(HAGAR)
V(MUTEX) DESPEGAR()
V(PISTA) V(PISTA)

Está solución obviamente no es optima, ya que respondiendo al punto b, SI se produce deadlock.

Solución correcta:
(Las diferencias en rojo)

Semáforos:
PISTA = 3
HANGAR = 10 (suponemos los hangares vacíos al inicio)
MUTEX = 1 (Mutex para sincronizar el uso del trayecto entre la pista y los hangares)
ESPERA = 2 (este semáforo es para evitar el deadlock del punto b)
AVIONES = 0 (cuenta la cantidad de aviones en los angares)

P(ESPERA) P(AVIONES)
P(PISTA) P(PISTA)
ATERRIZAR() P(MUTEX)
P(HANGAR) SALIR_DEL_HANGAR()
P(MUTEX) V(MUTEX)
ENTRAR_AL_HANGAR() V(HAGAR)
V(MUTEX) DESPEGAR()
V(ESPERA) V(PISTA)
V(PISTA)
V(AVIONES)

16) Tres hermanas, trabajan en un taller de ropa artesanal. Una de ellas se dedica a cortar e hilvanar las
prendas, la 2ª a realizar la costura definitiva y la tercera realiza los bordados. Cuentan con una única máquina
de coser en la cual cada una realiza su respectiva labor. Dado que el trabajo es artesanal, le brindan la mayor
dedicación a cada prenda por lo cual entre las tres chequean la calidad de cada etapa del proceso, sin empezar
a trabajar en una nueva etapa hasta no chequear la anterior.
Definir los semáforos necesarios con sus valores iniciales correspondientes y las primitivas P y V que deberán
utilizarse para sincronizar este problema de concurrencia.

P( CH ) P(C) P(B) P(V)


P(M) P(M) P(M)

Cortar_Hilvanar () Coser() Bordar() VerificarH1()


VerificarH2()
VerificarH3()

V (V) V(V) V(V)


V (C) V(B) V (CH ) V (M)

Semaforos
CortarHilvanar CH 1
Coser C 0
Bordar B 0
Mutex M 1
Verificar V 0

17) Un supermercado chino cuenta con 5 cajas, cada una de las cuales puede realizar cualquiera de los
procesos de cobro disponibles que son: cobro en pesos, cobro en dólares y cobro en yenes. Tanto el proceso
de cobro en pesos como el de cobro en dólares pueden ser utilizados hasta por 3 cajas simultáneamente cada
uno, mientras que el proceso de cobro en yenes solo puede ser utilizado por 2 cajas a la vez.
El proceso de cobro realiza varias funcione. La primera es realizar la suma de los productos comprados.
Después de realizar la suma debe realizarse la conversión a dólares o yenes (si fuera necesario) ya que los
precios de los productos están en pesos. La función que realiza la conversión es la misma para ambas
monedas y solo puede ser utilizada por una caja a la vez.
Una vez que el proceso realiza la suma y la conversión, debe realizarse una verificación de los billetes. La
función que realiza la verificación de pesos y dólares puede ser utilizada en forma concurrente por cualquier
cantidad de cajas, pero la verificación de yenes la realiza otra función que corre en forma exclusiva.
Determine los semáforos con sus valores iniciales y las primitivas necesarias para sincronizar este
supermercado.

Cobro en Pesos Cobro en U$S Cobro en Yenes

P(CP) P(CD) P(CY)


SUMA() SUMA() SUMA()
VERIF() P(CONV) P(CONV)
V(CP) CONV() CONV()
V(CONV) V(CONV)
VERIF() P(VY)
C(CD) VERIFY()
V(VY)
V(CY)

CP = 3 cobro en pesos
CD = 3 cobro en dólares
CY = 2 cobro en yenes
CONV = 1 conversión
VY = 1 verificación yenes
18) La penitenciaría estatal esta formada por 3 pabellones en los cuales residen los internos. Cada uno de
estos pabellones está comunicado con un patio propio al cual se accede a través de una puerta de seguridad. A
su vez, los patios de los tres pabellones se comunican mediante otra puerta al pasillo central que lleva hacia el
patio principal, al cual se accede también a través de otra puerta. Una vez en el patio principal, un interno
puede llegar a la enfermería pasando a través de una sala de inmunización.
En el patio de cada pabellón, no puede haber más de tres internos simultáneamente. Solo un interno por vez
puede transitar por el pasillo central. En el patio principal, pueden encontrarse hasta 5 internos, pero no más
de 2 de cada pabellón. Por la sala de inmunización, solo puede pasar una persona por vez. Inmediatamente
después de pasar a la sala de inmunización, pasan a la enfermería sin importar la gente que haya en la misma.
Sincronice mediante el uso de semáforos, el traslado de un interno desde un pabellón hasta la enfermería.

Semáforos:

P1 = 3 Patio Pabellón 1
P2 = 3 Patio Pabellón 2
P3 = 3 Patio Pabellón 3
PC = 1 Pasillo Central (Mutex)
PP = 5 Patio Principal
PPP1 = 2 Patio Principal Pabellón 1
PPP2 = 2 Patio Principal Pabellón 2
PPP3 = 2 Patio Principal Pabellón 3
SI = 1 Sala de inmunización

P (P1) P (P2) P (P3)


Salir_al_patio () Salir_al_patio () Salir_al_patio ()
P (PPP1) P (PPP2) P (PPP3)
P (PP) P (PP) P (PP)
P (PC) P (PC) P (PC)
Pasar_al_patio_principal () Pasar_al_patio_principal () Pasar_al_patio_principal ()
V (PC) V (PC) V (PC)
V (P1) V (P2) V (P3)
P (SI) P (SI) P (SI)
Entrar_a_la_SI () Entrar_a_la_SI () Entrar_a_la_SI ()
V (PP) V (PP) V (PP)
V (PPP1) V (PPP2) V (PPP3)
Entrar_a_la_enfermería () Entrar_a_la_enfermería () Entrar_a_la_enfermería ()
V (SI) V (SI) V (SI)

19) Dado el siguiente grafo de precedencias, determine los semáforos, sus valores iniciales y las primitivas
necesarias para que los procesos se ejecuten respetando el orden indicado por dicho grafo.
Solución:

P1 P2 P3 P4 P5 P6 P7
P(A) P(B) P(C) P(D) P(E) P(F) P(H)
P(G) P(H)
----- ----- ----- ----- ----- ----- -----
----- ----- ----- ----- ----- ----- -----
V(B) V(C) V(H) P(F) V(G) V(H)
V(D)
V(E)

20) Dados los siguientes semáforos con sus respectivos valores (X=0, Y=2, Z=3, V=1, P=0) y el siguiente
esquema de procesos con sus respectivas primitivas.
Indicar:
a. Existe alguna secuencia posible de ejecución ? cual ? Cuántas veces se ejecuta la secuencia? puede haber
mas de una? (mensione al menos 2)
b. La ejecución de la/s secuencia/s es segura ? o puede producirse deadlock ?

A B C D
P(X) P(P) P(Z) P(V)
P(X) P(X) P(Y) P(Y)
P(Z) P(Y) P(P) P(Z)
- - - -
- - - -
V(P) V(Z) V(X) V(X)
V(Y) V(X) V(P) V(X)

Solución:

a. La única posible secuencia de ejecución es D-A-C-B y solo se ejecuta una vez

b. La ejecución no es segura. Si después de ejecutarse A, intentara ejecutarse B, tomaría el smáforo P y se


produciría un deadlock. También si después de ejecutarse C, intentara ejecutarse nuevamente A, tomaría el
semáforo X y se produciría deadlock

21) En cierta ciudad, existe una red de 30 cajeros automáticos, que permite operar a quienes posean una
tarjeta de débito de alguno de los tres bancos que existen en dicha ciudad. Los cajeros son independientes de
los bancos, es decir que en cualquier cajero se pueden realizar operaciones de cualquier banco. Las posibles
operaciones son: depósito, extracción o consulta.
Todos los cajeros están conectados a una base de datos central que posee información de todas las tarjetas de
débito de todos los bancos. La operatoria es la siguiente:
Una persona ingresa su tarjeta al cajero automático e ingresa una clave. La base de datos central debe validar
estos datos y determinar a que banco corresponde esta tarjeta. Si los datos ingresados son correctos, permite el
ingreso y conecta al cliente con su banco. Luego el cliente puede seleccionar la operación que desea realizar.
Los 30 cajeros pueden funcionar en forma simultanea, pero existen las siguientes restricciones:
La base de datos central solo puede realizar hasta 20 validaciones en forma simultánea
El banco 1 y banco 2 pueden realizar hasta 10 operaciones en forma simultanea, mientras que el banco 3
puede realizar 15 operaciones simultáneas. Pero cada banco solo puede realizar una extracción por vez y
además no pueden realizarse mas de 2 extracciones simultáneas en toda la red de cajeros.
Se pide realizar la sincronización indicando cuántos y cuáles semáforos son necesarios, sus valores iniciales y
las primitivas P y V que utilizará cada uno de los procesos existentes

Val = 20 Validación
Bco1 = 10 Banco 1 simultaneo
Bco2 = 10 Banco 2 simultaneo
Bco3 = 15 Banco 3 simultaneo
EB1 = 1 Extracciones en Bco 1
EB2 = 1 Extracciones en Bco2
EB3 = 1 Extracciones en Bco 3
ES = 2 Extracciones simultaneas

Validación()

P(Val)
Validar()
V(Val)

ConsultaBco1() ConsultaBco2() ConsultaBco3()

P(Bco1) P(Bco2) P(Bco3)


Consultar() Consultar() Consultar()
V(Bco1) V(Bco2) V(Bco3)

DepositoBco1() DepositoBco2() DepositoBco3()

P(Bco1) P(Bco2) P(Bco3)


Depositar() Depositar() Depositar()
V(Bco1) V(Bco2) V(Bco3)

ExtraccionBco1() ExtraccionBco2() ExtraccionBco3()

P(EB1) P(EB2) P(EB3)


P(Bco1) P(Bco2) P(Bco3)
P(ES) P(ES) P(ES)
Extraer() Extraer() Extraer()
V(ES) V(ES) V(ES)
V(Bco1) V(Bco2) V(Bco3)
V(EB1) V(EB2) V(EB3)
22) Cinco pensadores chinos se sientan alrededor de una mesa y pasan su vida comiendo y pensando. Cada
pensador tiene un plato de arroz y un palillo a la izquierda de su plato. Para comer el arroz son necesarios dos
palillos y cada filósofo sólo puede tomar los que están a su izquierda y derecha. Cuando un pensador quiere
comer, toma primero su palillo (el de la izquierda) Si el otro palillo está ocupado, se quedará esperando, con
el palillo en la mano, hasta que pueda tomar el otro palillo, para luego empezar a comer.
Se pide que difina los semáforos, sus valores iniciales y las primitivas necesarias para sincronizar a los
pensadores, evitando que se produzca un deadlook.

Semáforos:
C=4 (Cantidad de comenzales concurrentes)
T1 = T2 = T3 = T4 = T5 = 1 (Tenedores)

COMENZAL 1 COMENZAL 2 COMENZAL 3 COMENZAL 4 COMENZAL 5

P(C) P(C) P(C) P(C) P(C)


P(T2) P(T3) P(T4) P(T5) P(T1)
P(T1) P(T2) P(T3) P(T4) P(T5)

Comer (com1) Comer (com2) Comer (com3) Comer (com4) Comer (com5)

V(T2) V(T3) V(T4) V(T5) V(T1)


V(T1) V(T2) V(T3) V(T4) V(T5)
V(C) V(C) V(C) V(C) V(C)

23) Un sistema cuenta con tres buffers (Z, P y Q). Z y P tienen capacidad para 3 mensajes cada uno y Q para
4. Además existen 5 procesos (A, B, C, D y E ). El proceso A produce y deposita en el buffer Z , el proceso B
produce y deposita en el buffer P. El proceso C consume un mensaje de cada uno de los buffers antes
mencionados (Z y P), y los procesa para generar dos mensajes iguales y depositarlos en el buffer Q desde
donde serán consumidos por los procesos D y E (un mensaje por cada proceso). Se pide que defina los
semáforos, sus valores iniciales y el uso de las primitivas necesarias para sincronizar dicho sistema. La
sincronización entre los procesos C, D y E debe ser realizada mediante mensajes.

Semáforos
EZ = 3 espacio en Z
EP = 3 espacio en P
EQ = 4 espacio en Q
MEZ = 0 mensajes en Z
MEP = 0 mensajes en P
MUZ= 1 Mutex Z
MUP = 1 Mutex P
MUQ = 1 Mutex Q

A B C D E

P(EZ) P(EP) P(MEZ) Receive (C) Receive(C)


P(MUZ) P(MUP) P(MEP) P(MUQ)P(MUQ)
P(EQ)
P(EQ) Consumir(Q) Consumir(Q)
P(MUZ)
ProdDep(Z) ProdDep(P) P(MUP) V(MUQ) V(MUQ)
P(MUQ) V(EQ) V(EQ)
V(MUZ) V(MUP)
V(MEZ) V(MEP) ProdDep(ZP-Q)

V(MUZ)
V(MUP)
V(MUQ)
V(EZ)
V(EP)
Send (D)
Send (E)

24) La famosa fábrica de pastas “Los ravioles de la nona” fabrica en la actualidad tres productos
diferentes: Fetuccini, Sorrentinos y los clásicos Ravioles. La fábrica cuenta con 4 líneas de
producción en las cuales puede fabricarse cualquiera de los productos. Cuando se desea
comenzar un proceso de producción, se selecciona una de las líneas que esté disponible
(cualquiera de ellas) y se comienza el proceso. Por razones netamente comerciales, sus
dueños decidieron que la producción de los Fetuccini y los sorrentinos, no pueden ocupar más
de dos líneas de producción cada uno en forma simultánea mientras que la producción de
ravioles puede llegar a ocupar hasta 3 líneas de producción en forma simultánea.
Antes de comenzar la elaboración del producto, el proceso debe validar la existencia de la
materia prima necesaria. Las materias primas utilizadas son dos: Harina y relleno. Para una
producción de fetuccini se utilizan 2 bolsas de harina, para una de sorrentinos 1 bolsa de harina
y 1 olla de relleno y para los ravioles, 1 bolsa de Harina y 2 ollas de relleno.
Al comienzo del día el sistema de producción es provisto con 10 bolsas de harina y 10 ollas de
relleno (su capacidad máxima). Cuando esta disponibilidad baja a la mitad, debe correrse un
proceso que reponga materia prima cargando 5 unidades del producto correspondiente (bolsa
de harina u ollas de relleno).

Determine los semáforos necesarios, sus valores iniciales y el uso de las primitivas P() y V()
necesarias para sincronizar el correcto funcionamiento del sistema. Le reposición de relleno
debe sincronizarse mediante la utilización de mensajes.
Tip: los procesos son:
PrepararFetuccini()
PrepararSorrentinos()
PrepararRavioles()
ReponerHarina()
ReponerRelleno()

Semáforos:
LP = 4
LS = 2
LF = 2
LR = 3
H = 10
R = 10
RH = 0

PrepararFetuccini() PrepararSorrentinos() PrepararRavioles()

P(LF) P(LS) P(LR)


P(LP) P(LP) P(LP)
P(H) P(H) P(H)
P(H) P(R) P(R)
P(R)
Producir() Producir() Producir()

V(LP) V(LP) V(LP)


V(LF) V(LS) V(LR)
V(RH) Send(R) No. Bloq. Send(R)
V(RH) V(RH) Send(R)
V(RH)

ReponerHarina() ReponerRelleno()

P(RH) Receive(R) Bloq.


P(RH) Receive(R)
P(RH) Receive(R)
P(RH) Receive(R)
P(RH) Receive(R)

Reponer(H) Reponer(R)

V(H) V(R)
V(H) V(R)
V(H) V(R)
V(H) V(R)
V(H) V(R)

25) La frutería y verdulería La Banana Loca, ha decidido implementar un sistema


informatizado para el autoservicio de sus clientes y lo contrató a ud., para realizar la
sincronización del mismo mediante el uso de semáforos.
El sistema está compuesto por una serie de balanzas electrónicas donde se pesan los
productos y un servidor central que realiza los cálculos y la facturación. Las balanzas
realizan los pesajes de las distintas mercaderías y los almacenan de forma local. Al finalizar
todos sus pesajes, el cliente lo informa mediante un botón en la balanza, y la balanza envía
la información al sistema centralizado a través de la red. Si bien el local cuenta con 12
balanzas electrónicas, por una cuestión de congestión en la red, solo 8 de ellas pueden
enviar información en forma simultánea. Las balanzas se sincronizan con el servidor central
mediante el envío de mensajes. Una vez enviada la información al sistema central, la
balanza ya está en condiciones de volver a utilizarse.
El proceso centralizado se ejecuta cuando una balanza le envía información, y puede tener
hasta 10 instancias simultáneas. Al recibir la info de una balanza, el sistema lanza la
ejecución de los procesos de cálculo. Los procesos de cálculo son 3. Uno para las frutas,
otra para las hortalizas y el tercero para el resto de las verduras. El sistema centralizado
utiliza la función realizar_calculos() que automáticamente define, en base a la información
recibida, cuál de los 3 procesos ejecutar. Podría ser uno, dos o los tres, pero ud. debe
desentenderse de esa decisión ya que la toma el proceso de forma automática. El proceso de
cálculo para las frutas no puede ejecutarse más de 5 veces simultáneas, mientras que los
otros dos, solo 4 veces en simultáneo cada uno. A su vez, no puede haber más de 9
procesos de cálculo ejecutándose al mismo tiempo. Una vez finalizados los cálculos, el
sistema debe imprimir el ticket correspondiente. Dado que el sistema cuenta con tres
impresoras fiscales, no pueden realizarse más de 3 tickets en forma simultánea.
Se pide que determine los semáforos necesarios, sus valores iniciales y las primitivas P() y
V() que deberán utilizarse, como así también las primitivas de envío y recepción de
mensajes indicando en cada caso si deben ser bloqueantes o no bloqueantes.
Los procesos ya fueron definidos y son los siguientes:

En las balanzas:
Enviar_info ()

En el servidor:
Proceso_central ()
Calcular_fruta ()
Calcular_hortalizas ()
Calcular_verduras ()

Si necesita crear algún proceso más para manejar la concurrencia o la sincronización, puede
realizarlo.

En la balanza
Enviar_info ()

Send (validación) No bloq.


Receive (Ok) Bloq.
Send (Información) Bloq.
Send (fin_envío) No bloq.

En el servidor
Co = 8 (Concurrencia)
PC = 10 (Proceso central)
CF = 5 (Cálculos Fruta)
CH = 4 (Cálculos Hortalizas)
CV = 4 (Cálculos Verduras)
CG = 9 (Cálculos Generales)
CI = 3 (Cantidad impresoras)

Validar_concurrencia () Liberar_concurrencia ()

Receive (Validación) Receive (fin_envío)


P(Co) V(Co)
Send (Ok)

Proceso_central () Calcular_fruta () Calcular_hortalizas () Calcular_verduras()

Receive (Información) P(CF) P(CH) P(CV)


P(PC) P(CG) P(CG) P(CG)
Realizar_calculos () Calcular () Calcular () Calcular ()
P(CI) V(CG) V(CG) V(CG)
Imprimir_ticket () V(CF) V(CH) V(CV)
V(CI)
V(PC)

También podría gustarte