Está en la página 1de 50

ING.

 SANDRA RODRIGUEZ AVILA
CONTENIDO
• INTRODUCCION
• MODELO DEL SISTEMA
• PRINCIPIOS DE BLOQUEO MUTUO
• GRAFO DE ASIGNACIÓN DE RECURSOS
• MÉTODOS PARA MANEJAR BLOQUEOS MUTUOS
• PREVENCIÓN DE BLOQUEOS MUTUOS
• EVITACIÓN DE BLOQUEOS MUTUOS
• DETECCIÓN DE BLOQUEOS MUTUOS
• RECUPERACIÓN DE UN ESTADO DE BLOQUEO MUTUO
Ing. Sandra Rodríguez Avila ‐ SISTEMAS ‐ UNC 2
INTRODUCCION

• Multiprogramación: varios procesos pueden 
competir por un número finito de recursos.
• Un proceso solicita recursos y si no están 
disponibles, el proceso entra en espera.
• Si los procesos en espera nunca cambian de 
estado es porque los recursos que se solicitan 
están en poder de otros procesos, también en 
espera.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
MODELO DEL SISTEMA
• Un sistema se compone de un número finito de 
recursos que se distribuyen entre varios 
procesos.
• Los recursos se dividen en varios tipos. Cada uno 
de  los tipos tiene uno o varios ejemplares. Ejm: 
el recurso CPU tiene 2 ejemplares, el recurso 
impresora tiene 1 ejemplar.
• Tipos: recursos físicos y recursos lógicos.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
MODELO DEL SISTEMA
• Otra clasificación:
Expropiable: se puede quitar a un proceso sin 
haber efectos adversos. Ejm: la memoria
No expropiable: no se puede quitar sin hacer 
que se produzcan fallas. Ejm: la impresora
• Generalmente, en los bloqueos mutuos 
intervienen recursos no expropiables.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
MODELO DEL SISTEMA
• Si un proceso solicita un ejemplar de cierto tipo de 
recurso, se le atenderá con cualquier ejemplar 
disponible.
• Un proceso debe solicitar un recurso antes de 
usarlo y liberarlo al terminar su uso.
• Un proceso puede solicitar la cantidad de recursos 
que requiera, sin embargo en número no debe 
exceder del total de recusos disponibles.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
MODELO DEL SISTEMA

• En una operación normal, un proceso sólo puede 
utilizar un recurso en la secuencia siguiente:
1. Solicitud: Si no se puede atender de inmediato, 
entonces el proceso solicitante debe esperar 
hasta que pueda adquirir el recurso.
2. Utilización: El proceso puede trabajar con el 
recurso.
3. Liberación: El proceso libera el recurso.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
MODELO DEL SISTEMA
• La solicitud y liberación de recursos son llamadas al 
sistema.
• La solicitud y liberación de algunos recursos 
también pueden utilizarse a través de las 
operaciones: espera (wait) y señal (signal).
• En cada utilización , el S.O. verifica que el proceso 
que dispone del recurso, lo haya solicitado y se le 
haya asignado previamente.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
MODELO DEL SISTEMA
• Tabla del sistema: registra si cada uno de los 
recursos está libre o asignado, y de estar asignado 
a que proceso.
• Si el recurso está ocupado, el proceso es añadido 
en la cola de procesos que esperan tal dispositivo.

P1 S P1

P2
R P2
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
PRINCIPIOS DE BLOQUEO MUTUO
• Un conjunto de procesos está en bloqueo mutuo si 
cada proceso del conjunto está esperando un evento 
que sólo otro proceso del conjunto puede causar.
Condiciones para el bloqueo mutuo: 
1. Exclusión mutua: Cada recurso está asignado 
únicamente a un solo proceso o esta disponible.
2. Retención y espera: Debe haber un proceso que 
retenga por lo menos un recurso y espere

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
PRINCIPIOS DE BLOQUEO MUTUO
3. No expropiación: Los recursos no se pueden 
quitar, es decir un recurso sólo puede ser 
liberado voluntariamente por el proceso que lo 
retiene.
4. Espera circular: Debe haber una cadena circular 
de dos o más procesos, cada uno de los cuales 
está esperando un recurso retenido por el 
siguiente miembro de la cadena.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
GRAFO DE ASIGNACIÓN DE RECURSOS
R1 R3 P={P1, P2, P3}
• • R={R1,R2,R3,R4}
E={P1R1,
P2  R3, R1  P2,
P1 P2 P3 R2  P2, R2  P1,
R3  P3}

• •
• •
R2 •
Ing. Sandra Rodríguez Avila
R4
SISTEMAS OPERATIVOS
GRAFO DE ASIGNACIÓN DE RECURSOS
• Si el grafo no contiene ciclos, entonces ningún 
proceso del sistema está en bloqueo mutuo.
• Si contiene un ciclo, puede haber un bloqueo 
mutuo, si cada tipo de recurso sólo tiene un 
ejemplar.
• Ejemplo: para el gráfico anterior suponga que el 
proceso P3 solicita un  ejemplar del tipo recurso 
R2 el cual no está disponible, generándose 2 
ciclos.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
GRAFO DE  R1 R3
• •
ASIGNACIÓN 
DE RECURSOS
P1 P2 P3

.
. .
• .
R2
R4
P1  R1  P2  R3  P3  R2  P1
P2  R3  P3  R2  P2 
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
GRAFO DE  • En el grafo siguiente, hay un ciclo, 
pero no existe bloqueo mutuo ya que 
ASIGNACIÓN  P4 puede liberar al  ejemplar de R2, 
DE RECURSOS siendo posible la asignación a P3.
P2
R1

• P3

P1 R2

• P4
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
GRAFO DE  • En el grafo siguiente, hay un ciclo, 
pero no existe bloqueo mutuo ya que 
ASIGNACIÓN  P4 puede liberar al  ejemplar de R2, 
DE RECURSOS siendo posible la asignación a P3.

R1


Secuencia segura de ejecución:
P2 – P1 – P4 – P3 
R2 P4‐P2‐P1‐P3
• P4‐P3 – P2 – P1

Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
GRAFO DE  • En el grafo siguiente, hay un ciclo, 
pero no existe bloqueo mutuo ya que 
ASIGNACIÓN  P4 puede liberar al  ejemplar de R2, 
DE RECURSOS siendo posible la asignación a P3.

R1

• P2 – P1 – P4 – P3 
P4 – P2 ‐

R2


Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
GRAFO DE  • En el grafo siguiente, hay un ciclo, 
pero no existe bloqueo mutuo ya que 
ASIGNACIÓN  P4 puede liberar al  ejemplar de R2, 
DE RECURSOS siendo posible la asignación a P3.

R1

• Secuencia de terminación de ejecución:
SECUENCIA SEGURA
P2‐ P4 – P1 – P3
R2 P4 ‐ P2 ‐ P3 ‐ P1


Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
MÉTODOS PARA MANEJAR BLOQUEOS 
MUTUOS
• Dos métodos principales: 

1. Protocolo para asegurar que el sistema  nunca 
entre en un estado de bloqueo mutuo.
2. Permitir que el sistema entre en un bloqueo 
mutuo y luego se recupere.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
PREVENCIÓN DE BLOQUEOS MUTUOS
1. Exclusión mutua: Está condición debe conservarse 
para recursos no compartibles. Un proceso nunca 
necesita esperar un recurso compartible.
2. Retención y espera: Cuando un proceso solicita un 
recurso , se debe garantizar que no retenga otros. 
Alternativas:
• Protocolo1: cada proceso debe solicitar todos sus 
recursos los que le deben ser asignados antes que 
comience su ejecución.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
PREVENCIÓN DE BLOQUEOS MUTUOS
• Protocolo2: un proceso solicita recursos  sólo cuando no 
tiene ninguno.
Desventajas:
• La utilización de recursos puede ser muy baja, pues 
puede ser que se asignen varios recursos que no 
empleen durante un tiempo prolongado.
• Bloqueo indefinido
3. No apropiación:
• Asegurar que no se presente una apropiación de los 
recursos.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
PREVENCIÓN DE BLOQUEOS MUTUOS
• Protocolo1: si un proceso que retiene algún recurso  
solicita otro que no se le puede asignar de 
inmediato, entonces todos los recursos que retiene 
se le expropian. El proceso se reiniciará únicamente 
cuando pueda recuperar todos sus viejos recursos 
además de los nuevos.
• Protocolo2: si un proceso solicita algunos recursos, 
primero comprobamos que estén disponibles. Si lo 
están se les asigna, sino se comprueba si están 
asignados a otro
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
PREVENCIÓN DE BLOQUEOS MUTUOS
proceso que espera más recursos, en cuyo caso se 
expropia los recursos deseados del proceso en espera  
y se les asigna al proceso solicitante. Si los recursos no 
están disponibles ni retenidos por un proceso en 
espera, el proceso solicitante debe esperar.
4. Espera circular: imponer una ordenación total de 
todos los tipos de recursos y requerir que cada 
proceso solicite los recursos siguiendo un orden de 
numeración ascendente.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
PREVENCIÓN DE BLOQUEOS MUTUOS

• Sean R={R1, R2, ..., Rm}, conjunto de tipos de recursos
• Se define una función inyectiva:
F: R  N, N es el conjunto de números naturales
F(unidad cinta)=1
F(unidad disco)=5
F(impresora) =12

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
PREVENCIÓN DE BLOQUEOS MUTUOS
• Protocolo: cada proceso puede solicitar recursos 
únicamente en orden ascendente, si se requieren 
varios ejemplares deben solicitarse todos de una sola 
vez. Se solicita Rj si F(Rj)>F(Ri).
• Protocolo: para que un proceso solicite un ejemplar de 
un tipo de recurso Rj, debe haber liberado antes 
cualquier recurso Ri, 
donde F(Ri)>=F(Rj), que retenga.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS

• Requerir  información adicional acerca de  como se 
solicitarán y liberarán los recursos. Cada solicitud 
requiere que el sistema considere los recursos 
disponibles en ese momento, los actualmente 
asignados a cada proceso y las futuras solicitudes y 
liberaciones de cada proceso, para decidir si puede 
satisfacer  la solicitud presente o debe esperar  para 
evitar un posible B.M.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
Algoritmo sencillo: Cada proceso debe declarar el 
número máximo de recursos de cada tipo que pueda 
necesitar.
• Un algoritmo de evitación de B.M. examina 
dinámicamente el estado de asignación de recursos 
para evitar la espera circular
• El estado de asignación de recursos: número de 
recursos disponibles y asignados, y por la demanda 
máxima de los procesos.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
• Un estado es seguro si el sistema puede asignar 
recursos a  cada proceso hasta el máximo siguiendo 
un orden o secuencia segura.
• Una secuencia <P1, P2,...,Pn> es segura para el 
estado actual de asignaciones, si para cada Pi, los 
recursos que aún pueda solicitar Pi pueden 
satisfacerse con los recursos retenidos por todos los 
Pj, donde j<i; de lo contrario Pi debe esperar hasta 

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
que terminen los procesos todos los procesos 
Pj. Pi puede obtener los recursos que necesite y 
luego liberarlos para que continúe Pi+1, etc.
• Si no existe una secuencia se dice que el estado 
del sistema es inseguro.
BLOQUEO INSEGURO
MUTUO

SEGURO

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
A. Varios ejemplares de un tipo de recurso
Algoritmo de Seguridad
• Cuando un nuevo proceso entra al sistema debe 
declarar el número máximo de ejemplares de cada tipo 
de recursos que pueda necesitar.
• El sistema debe determinar si la asignación de éstos 
dejará al sistema en un estado seguro. Si es así, los 
recursos se asignan, de lo contrario tendrá que esperar 
hasta que otro libere suficientes recursos.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
• Estructuras:
a. Disponible: vector de long. m, número de recursos 
disponibles de cada tipo.
Disponible[j] = k
b. Máx: matriz nxm, demanda máxima de cada proceso 
por cada clase de recurso.
Max[i,j] = k
c. Asignación: matriz nxm, número de recursos cada 
tipo asignados en ese momento a cada proceso.
Asignación[i,j] = k
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
d. Necesidad: matriz nxm, recursos que le hacen falta 
a cada proceso.
Necesidad[i,j]=Max[i,j]‐Asignación[i,j]
• Se puede tratar cada fila de las matrices Asignación y 
Necesidad como vectores: Asignacióni y Necesidadi
Algoritmo del Banquero: Procedimiento
Si Solicitudi [j]=k, se realiza lo siguiente:
1. Si Solicitudi <=Necesidadi, continua con paso 2, 
sino error.
2. Si Solicitudi <=Disponiblei, continua con paso 3,
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
de lo contrario, Pi debe esperar, no hay disponibilidad.
3. El sistema simula haber asignado todos los recursos 
solicitados al proceso Pi, modificando el estado:
Disponible=Disponible‐Solicitudi
Asignacióni=Asignacióni+Solicitudi
Necesidadi=Necesidadi‐Solicitudi

• Si el estado de asignación es seguro se efectúa la 
transacción y los recursos se asignan a Pi, sino Pi debe 
esperar.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
Algoritmo de Seguridad: Procedimiento
1. Sean Trabajo y Fin, vectores de longitud m y n.
Trabajo=Disponible y Fin[i]=falso para todo i.
2. Encontrar un i tal que se cumplan con:
a. Fin[i]=falso
b. Necesidadi<=Trabajo
Si no existe i, continuar con paso 4.
3. Trabajo = Trabajo +Asignacióni.
Fin[i]=verdadero, continuar con paso 2
4. Si Fin[i]=verdadero, el sistema está en estado seguro.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
Ejemplo del algoritmo de Seguridad
• 5 procesos P0  hasta P4 y 3 tipos de recursos:
A (10ejemplares),  B (5ejemplares), and C (7 ejemplares).
• Situación en el instante T0:
ASIGNACION MAX DISPONIBLE
A B C A B C  A B C
P0 0 1 0 7 5 3  3 3 2
P1 2 0 0  3 2 2  
P2 3 0 2  9 0 2
P3 2 1 1  2 2 2
P4 0 0 2 4 3 3  
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
• Necesidad: Max – Asignación.
Necesidad
A B C
P0 7 4 3 
P1 1 2 2 
P2 6 0 0 
P3 0 1 1
P4 4 3 1 
El Sistema se encuentra en estado seguro y la 
secuencia segura es  < P1, P3, P4, P2, P0>. 

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
• Check that Request  Available (that is, (1,0,2)  (3,3,2)  true.
Allocation Need Available
A B C A B C A B C 
P0 0 1 0  7 4 3  2 3 0
P1 3 0 2 0 2 0 
P2 3 0 1  6 0 0 
P3 2 1 1  0 1 1
P4 0 0 2  4 3 1 
• Executing safety algorithm shows that sequence < P1, P3, P4, P0, P2> satisfies safety 
requirement. 
• Can request for (3,3,0) by P4 be granted?
• Can request for (0,2,0) by P0 be granted?

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
EVITACIÓN DE BLOQUEOS MUTUOS
B. Un ejemplar único de cada tipo de recurso
• El algoritmo del banquero requiere mxn2 operaciones 
para decidir si un estado es seguro o no.
• Si se trata de un solo recurso, se emplea un algoritmo 
que es más eficiente.
• Se añade un arista de reserva (línea discontinua); 
Pi  Rj, 
que indica que en el futuro el proceso Pi puede solicitar 
el recurso Rj.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
• Si no se emplea ningún algoritmo para la prevención 
y/o evitación de bloqueos mutuos, entonces puede 
ocurrir una situación de bloqueo mutuo.
• Un algoritmo que examine el estado del sistema para 
determinar si ha ocurrido bloqueo mutuo.
• Un algoritmo para recuperarse del bloqueo mutuo.

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
A. Un solo ejemplar para cada tipo de recurso
• Se puede utilizar una gráfica de espera.
• De la gráfica de asignación de recursos se eliminan los 
nodos de tipos de recursos y las aristas 
correspondientes.
• Una arista de Pi  Pj implica que Pi está esperando a 
que el proceso Pj libere un recurso que Pi necesita.
• gráfica. 

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
A. Un solo ejemplar para cada tipo de recurso
• Existe un bloqueo mutuo si la gráfica de espera 
contiene un ciclo.
• Se debe invocar periódicamente un algoritmo que 
busque  un ciclo en la gráfica. 
• Un algoritmo para detectar un ciclo en una gráfica 
requiere un orden n2 operaciones, donde n es el 
número de vértices de la gráfica. 

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
B. Varios ejemplares para cada tipo de recurso
• Disponible: vector de long. m, número de recursos 
disponibles de cada tipo.
Disponible[j] = k
• Asignación: matriz nxm, número de recursos cada 
tipo asignados en ese momento a cada proceso.
Asignación[i,j] = k
• Solicitud: matriz nxm, solicitud actual de cada.
solicitud[i,j] = k
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
Algoritmo de Detección
1. Sean Trabajo y Fin, vectores de longitud m y 
n.
Trabajo=Disponible y Fin[i]=falso para 
todo i, si Asignacióni <>0, de lo contrario 
Fin[i]=verdadero
2. Encontrar un i tal que se cumplan con:
• Fin[i]=falso
• Solicitudi<=Trabajo
• Si no existe i, continuar con paso 4.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
Algoritmo de Detección
3. Trabajo = Trabajo +Asignacióni.
Fin[i]=verdadero, continuar con paso 2

4. Si Fin[i]=falso, para algún i, 1<=i<=n, 
entonces el sistema esta en estado de 
bloqueo mutuo. Si Fin[i]=falso, entonces el 
proceso i está bloqueado

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
DETECCIÓN DE BLOQUEO MUTUO
• Cinco procesos P0 hasta P4; tres tipos de recursos 
A (7 ejemplares), B (2 ejemplares), y C (6 ejemplares).
• Situación en el instante T0:
Asignación Solicitud   Disponible
A B C  A B C A B C
P0 0 1 0  0 0 0  0 0 0
P1 2 0 0  2 0 2
P2 3 0 3 0 0 0 
P3 2 1 1  1 0 0 
P4 0 0 2  0 0 2
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
Secuencia <         >
DETECCIÓN DE BLOQUEO MUTUO
• Si P2 solicita un ejemplar adicional  del tipo C.

Solicitud
A B C
P0 0 0 0
P1 2 0 1
P2 0 0 1
P3 1 0 0 
P4 0 0 2
• ¿Cual es el estado del sistema?

Ing. Sandra Rodríguez Avila


SISTEMAS OPERATIVOS
RECUPERACIÓN DE UN ESTADO DE 
BLOQUEO MUTUO
Terminación
• Abortar todos los procesos en un estado de BM.
• Abortar un proceso a la vez hasta que se elimina el 
ciclo del bloqueo mutuo.
• ¿En que orden o que proceso debe terminarse en un 
intento de romper el bloqueo mutuo?
 Prioridad del proceso.
 Cuánto tiempo el proceso ha estado ejecutándose y 
que tanto mas falta para terminar.
 Cuantos y tipos de recursos que el proceso ha 
utilizado.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
RECUPERACIÓN DE UN ESTADO DE 
BLOQUEO MUTUO
Terminación
 Cuantos recursos mas necesita el proceso a fin de 
completarse,
 Cuantos procesos necesitan terminarse
 Si el proceso es interactivo o por lotes
Apropiación de recursos
• Selección de una víctima ‐ reducir al mínimo el costo
• Retroceso ‐ volver a un cierto estado seguro, 
proceso del recomenzar para ese estado.
• Inanición ‐ el mismo proceso puede ser elegido 
siempre como víctima.
Ing. Sandra Rodríguez Avila
SISTEMAS OPERATIVOS
BIBLIOGRAFÍA
• SILBERSCHATZ, A.  Peterson J.L. & Galvin P.B. Fundamentos de 
Sistemas Operativos.  Séptima Edición. 2006. España. Editorial Mc 
Graw‐Hill/Interamericana.
• SILBERSCHATZ, A.  Peterson J.L. & Galvin P.B. Operating System
Concepts.  Ninth Edition. 2013. United States of America. John 
Wiley & Sons.
• TANEMBAUM, Andrew S. Sistemas Operativos Modernos. 2009. 
México. Editorial Pearson Educación.
• CANDELA S., GARCIA C., QUESADA A., SANTANA F., SANTOS J. 
Fundamentos de Sistemas Operativos. 2007. Madrid. Thomson 
Editores Spain Paraninfo S.A.
Ing. Sandra Rodríguez Avila ‐ SISTEMAS ‐ UNC 50

También podría gustarte