Vous êtes sur la page 1sur 46

Sistemas Operativos

Distribuidos

Presentación
Referencias Básicas
• Distributed Operating Systems
A. S. Tanenbaum
Prentice-Hall, 1995
• Distributed Systems: Concepts and Design
G. Coulouris, J. Dollimore, T. Kindberg
Addison-Wesley, 2001
• Pattern-Oriented Software Architecture:
Patterns for Concurrent and Networked
Objects (Vol 2).
D. Schmidt, M. Stal, H. Rohnert, F. Bruschmann
Wiley, 2000

Sistemas Operativos Distribuidos Fernando Pérez Costoya


2 José María Peña
Referencias Básicas
• Distributed Operating Systems: Concepts &
Practice
D. L. Galli
Prentice-Hall, 2000
• Distributed Operating Systems & Algorithms
R. Chow, T. Johnson
Addison-Wesley, 1997

Traducción al Castellano
• Sistemas Operativos Distribuidos
A. S. Tanenbaum
Prentice-Hall, 1996
Sistemas Operativos Distribuidos Fernando Pérez Costoya
3 José María Peña
Índice del Curso
Índice de Temas
• Introducción y conceptos

Entornos Distribuidos
• Comunicación en sistemas

Casos de Estudio
distribuidos Tecnolo
• Sistemas de ficheros gías
distribuidos y servicios de •CORBA
directorio. •DCOM

y
• Sincronización y
coordinación
•DCE
• Sistemas de memoria •Java:
distribuida •Jini
• Gestión de procesos •RMI
• Seguridad en sistemas •EJB
distribuidos
Sistemas Operativos Distribuidos Fernando Pérez Costoya
4 José María Peña
Objetivos
• Conceptos (Objetivo Principal)
– Diseño de sistemas distribuidos (No sólo sistemas
operativos).
– Problemática de sistemas distribuidos:
• Transacciones y concurrencia.
• Nombrado y organización.
• Seguridad.
• Configuración y optimización.

• Técnicas (Objetivo Secundario)


– Tecnologías y entornos de desarrollo distribuidos.
– Herramientas de desarrollo.
– “Guía de referencias”.
Sistemas Operativos Distribuidos Fernando Pérez Costoya
5 José María Peña
Direcciones de Contacto

Información Actualizada:
• Página de la asignatura:
– http://laurel.datsi.fi.upm.es/~ssoo/SOD/

Profesores Responsables:
• Fernando Pérez Costoya
– <fperez@fi.upm.es>
• José María Peña Sánchez
– <jmpena@fi.upm.es>

Sistemas Operativos Distribuidos Fernando Pérez Costoya


6 José María Peña
Sistemas Operativos
Distribuidos

Introducción y
Conceptos
Contenidos del Tema
• Evolución de los sistemas operativos:
– Definición de sistema centralizado.
– Definición de sistema distribuido.
• Ventajas y desventajas de los sistemas
distribuidos.
• Sistemas operativos distribuidos.
• Sistemas operativos de red.
• Middlewares.
• Objetivos de un sistema distribuido.
• Componentes de un sistema distribuido.
• Notación y formalismos.
Sistemas Operativos Distribuidos Fernando Pérez Costoya
8 José María Peña
Arquitectura de Sistemas
Centralizados
• Único computador (caro y de gran potencia) con
terminales alfanuméricos directamente
conectados.
• Entornos de empresa:
– Soporte multiusuario
– Uso de mainframes o minicomputadores
• Entornos científicos:
– Ejecución eficiente de aplicaciones
– Uso de supercomputadores
• Uso ocasional de la red:
– Transferir ficheros o logins remotos
• Interfaz de usuario poco amigable
– Interfaces gráficas gastan muchos recursos
Sistemas Operativos Distribuidos Fernando Pérez Costoya
9 José María Peña
Arquitectura de Sistemas
Distribuidos
• Conjunto de procesadores conectados por una red
• Cada usuario tiene capacidad de procesamiento local que permite interfaces
de usuario sofisticadas.
• Uso intensivo de la red para compartir recursos:
– dispositivos
– datos
– procesadores (migración de procesos)
• Capacidad global de procesamiento disponible para:
– Servicio a múltiples usuarios
– Ejecución paralela de una aplicación

Sistemas Operativos Distribuidos Fernando Pérez Costoya


10 José María Peña
Nacimiento de los Sistemas
Distribuidos
Causas:
• Tecnología de microprocesadores: relación
potencia/coste.

• Tecnologías de comunicaciones:
– Protocolos de comunicaciones.
– Redes de área local (LAN): Coste y prestaciones.
– Internet

• Factores comerciales:
– Comercio electrónico: e-comerce.
– Información distribuida (WWW).
– Reducción de costes.
Sistemas Operativos Distribuidos Fernando Pérez Costoya
11 José María Peña
Características de un Sistema
Distribuido
Definición: [Tan95]
Un sistema distribuido es una colección de
computadoras independientes que aparece ante los
usuarios del sistema como una única computadora.

★ Recursos distribuidos para un trabajo común.


★ N computadoras ➙ Un “servicio” único a los
usuarios.

Tradicionalmente (1972):
– Clasificación de Flynn: SISD, SIMD, MISD, MIMD

Sistemas Operativos Distribuidos Fernando Pérez Costoya


12 José María Peña
Características de un Sistema
Distribuido
Un sistema distribuido implica las
siguientes consecuencias:
• No existe un reloj común: Afecta a
cualquier aspecto de coordinación y
mensajes.
• Concurrencia global: Los elementos del
sistema se ejecutan realmente en paralelo.
• Fallos independientes: Los modos de fallo
del sistema pueden ser locales a un
subconjunto de sus componentes.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


13 José María Peña
Evolución de los Sistemas
Operativos
• Sistemas Operativos Sistema Objetivos
Centralizados.
Gestión de recursos,
Sistema Operativo
“Máquina extendida”,
Centralizado
• Sistemas Operativos (Virtualidad)
en Red
Sistema Operativo
Compartición de recursos,
en Red (Interoperabilidad)
• Sistemas Operativos
Distribuidos Vista única de varias
Sistema Operativo
computadoras
Distribuido
(Transparencia)
• Sistemas
Cooperativos
Sistema Trabajo cooperativo,
Cooperativa (Autonomía)

Sistemas Operativos Distribuidos Fernando Pérez Costoya


14 José María Peña
Capas de un Sistema Operativo

La visión esquemática de un sistema operativo


comprende los siguientes niveles:

• Hardware.
Usuarios
• Núcleo (kernel).
• Servicios del sistema. Aplicaciones
• Programas de aplicación.
Servicios
• Usuarios.
Kernel

Hardware

Sistemas Operativos Distribuidos Fernando Pérez Costoya


15 José María Peña
Responsabilidades del Kernel

Servicios Kernels Monolíticos:


Muchas funcionalidades dentro del kernel:
Kernel
planificador, gestión de memoria, drivers,...
Computadora

µ −Kernels:
Se sacan funcionalidades del kernel. Servicios
Sólo quedan: (i) comunicación entre µ −Kernel
procesos, (ii) administración de
memoria, (iii) administración y Computadora
planificación de bajo nivel y (iv)
entrada/salida de bajoServicios
nivel Distribuidos:
Servicios Estructura de sistema distribuido. Dependie
del nivel se habla de: Sistema Operativo
µ −Kernel µ −Kernel µ −Kernel
Distribuido, Sistema en Red o (Cooperativo)

Sistemas Operativos Distribuidos Fernando Pérez Costoya


16 José María Peña
Heterogeneidad de un Sistema
Distribuido
Un sistema distribuido puede estar formado por multitud de
elementos conectados por redes LAN o WAN:
– Terminales X y Estaciones Java (Network Computer).
– PCs y estaciones de trabajo.
– Sistemas portátiles (redes móviles: GSM, WAP y ...)
– Minicomputadores.
– Supercomputadores.
– Multiprocesadores con memoria compartida o no.
– Servidores especializados (de almacenamiento, de impresión, ...).
– Sistemas empotrados.
Fomentada por los siguientes factores:
– Extensibilidad de los sistemas distribuidos.
– Especialización de los servidores.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


17 José María Peña
Ventajas de los Sistemas
Distribuidos
• Economía: Buena relación rendimiento/coste
– Ley de Grosch (obsoleta):
Prestaciones = cte x (Precio)2
• Alto rendimiento: Procesamiento paralelo.
• Soporte de aplicaciones inherentemente distribuidas.
– Por ejemplo: empresa distribuida geográficamente
• Capacidad de crecimiento: Escalabilidad.
• Fiabilidad y disponibilidad: Tolerancia a (ciertos) fallos.
• Carácter abierto y heterogéneo:
– Estándares de interoperabilidad.
• Compartir recursos y datos.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


18 José María Peña
Desventajas de los Sistemas
Distribuidos
• Necesidad de un nuevo tipo de software:
– Más complejo.
– No hay todavía un acuerdo sobre cómo debe ser.
• Red de interconexión introduce nuevos
problemas:
– Pérdida de mensajes y saturación.
– Latencia puede provocar que al recibir un dato ya
esté obsoleto.
– La red es un elemento crítico.
• Seguridad y confidencialidad

Sistemas Operativos Distribuidos Fernando Pérez Costoya


19 José María Peña
Aplicaciones de los Sistemas
Distribuidos
• Servicios Internet: correo, noticias, Web, ... nuevos servicios.
• Redes corporativas e intranets.
• Procesamiento paralelo:
– Procesamiento masivo (solución a la eficiencia).
– Topología distribuida (problemas de naturaleza distribuida)
• Sistemas distribuidos de gestión de bases de datos y
explotación de los mismos: e.g. Data Warehousing.
• Aplicaciones multimedia.
• Sistemas industriales distribuidos y aplicaciones de control.
• Sistemas distribuidos de tiempo real.
• ..... < y muchos más >

Sistemas Operativos Distribuidos Fernando Pérez Costoya


20 José María Peña
Distribución de los Sistemas
Operativos
• Sistemas operativos para multiprocesadores
con memoria compartida (SMP):
– Software fuertemente acoplado
– sobre Hardware fuertemente acoplado
• Sistema operativo distribuido (SOD):
– Software fuertemente acoplado
– sobre Hardware débilmente acoplado
• Sistema operativo en red:
– Software débilmente acoplado
– sobre Hardware débilmente acoplado

Sistemas Operativos Distribuidos Fernando Pérez Costoya


21 José María Peña
Sistemas Operativos para SMPs
Arquitecturas de varios procesadores (2 a 8) con memoria
compartida de acceso uniforme (SMP: Simetric Multiprocesors)

Características:
– “Ligeras” variaciones sobre versiones tradicionales.
– Sólo hay una copia del sistema operativo.
– Concurrencia se traduce en paralelismo real (≠ tiempo
compartido).
– Comercialmente aceptados (Linux, WinNT, Solaris, AIX, ...).
– Plantea retos para: la ejecución del núcleo en varios procesadores
(llamadas al sistema concurrentes) , los mecanismos de
sincronización (spin-locks), optimización y planificación (afinidad al
procesador), ...

Sistemas Operativos Distribuidos Fernando Pérez Costoya


22 José María Peña
Sistemas Operativos Distribuidos
(SOD)
Definición: [Gal00]
Un sistema operativo distribuido es un conjunto de
procesadores interconectados por redes que ocultan
dicha característica mostrando una visión al usuario de
“uniprocesador virtual”.

Características:
– Ejecuta sobre un sistema distribuido haciendo creer a los
usuarios que se trata de un sistema centralizado.
– Trasparencia: Debe ocultar factores derivados de la
distribución.
– Es fácil de decir pero no de hacer.
– Cada sistema alcanza hasta cierto punto esta meta.
– Los fracasos pueden generar frustraciones en los usuarios.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


23 José María Peña
Sistemas Operativos Distribuidos
(SOD)
Problemática:
– Cada nodo tiene su copia del sistema operativo: ¿Qué tareas se
realizan localmente y cuáles son globales?
– ¿Cómo lograr exclusión mutua sin memoria compartida?
– ¿Cómo tratar los interbloqueos sin un estado global?
– Planificación de procesos: Cada copia del sistema operativo tiene su
cola de planificación (migración de procesos).
– ¿Cómo crear un árbol de ficheros único?
– Implicaciones de la falta de reloj único, la presencia de fallos o la
heterogeneidad.
Principal aportación:
– Se han desarrollado nuevos conceptos y planteamientos que se han
podido trasladar a los otros modelos de sistemas distribuidos.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


24 José María Peña
Evolución de los SOD
• Primeros SO de red:
– Incluir servicios de red en SO convencional
– Ejemplo: UNIX 4BSD (≈ 1980)
• Paulatina incorporación de más funcionalidad:
– ONC de Sun (≈ 1985): incluye NFS, RPC, NIS
• Primeros SOD:
– Nuevos SO pero basados en arquitecturas
convencionales (monolíticas)
– Ejemplo: Sprite de la Universidad de Berkeley (≈ 1988)
• SOD basados en m-kernel. Ejemplos:
– Mach de CMU (≈ 1986)
– Amoeba diseñado por Tanenbaum (≈ 1984)
– Chorus de INRIA en Francia (≈ 1988)

Sistemas Operativos Distribuidos Fernando Pérez Costoya


25 José María Peña
Sistemas Operativos en Red
Definición: [Cho97]
Red de computadoras débilmente acopladas en las que no
existe un control externo directo sobre el hardware/software de
cada computadora para la compartición de recursos.

Características:
– No dan la visión de uniprocesador virtual (máquinas independientes).
– Cada una ejecuta una copia de sistema operativo (distinto).
– Sistema operativo convencional + utilidades de red.
– Protocolos de comunicación para intercambio de recursos y acceso a
servicios de alto nivel.
– Desde rcp/rlogin hasta Open Network Computing (ONC) de Sun.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


26 José María Peña
Sistemas Cooperativos
Definición: [Cho97]
Sistemas software orientados a servicios de alto nivel que
requieren el soporte de mecanismos de comunicación en
base a los cuales los protocolos de comunicaciones de alto
nivel se construyen.

Características:
– Se mantiene el grado de trasparencia sacrificando la visión de
único sistema. Son sistemas autónomos independientes.
– Se construyen en base a middlewares (CORBA, DCE, DCOM, ...)
– Los sistemas resultan de la integración de múltiples servicios
proporcionados por diferentes elementos de la red.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


27 José María Peña
Middleware
Middleware:
– Capa de software que ejecuta sobre el sistema operativo
local ofreciendo unos servicios distribuidos
estandarizados.
– Sistema abierto independiente del fabricante.
– No depende del hardware y sistema operativo
subyacente.
Ejemplos:
– DCE (Open Group).
– CORBA (OMG).
Middleware
– ...
SO SO SO

Hardware Hardware Hardware

Sistemas Operativos Distribuidos Fernando Pérez Costoya


28 José María Peña
Objetivos de un Sistema
Distribuido
En general el desarrollo de sistemas distribuidos
intenta poner solución a los siguientes
objetivos:
– Transparencia.
– Fiabilidad.
– Rendimiento.
– Capacidad de crecimiento.
– Flexibilidad.
– Seguridad.

Sistemas operativos distribuidos, sistemas en


red y sistemas cooperativos requieren
diferentes facetas de estos objetivos.
Sistemas Operativos Distribuidos Fernando Pérez Costoya
29 José María Peña
Transparencia
Existen varios perfiles de trasparencia:
– Acceso: Manera de acceder a recurso local igual que a remoto.
– Posición: Se accede a los recursos sin conocer su localización.
– Migración: Recursos pueden migrar sin afectar a los usuarios.
– Concurrencia: Acceso concurrente no afecta a los usuarios.
– Replicación: La existencia de réplicas no afecta a los usuarios.
– Fallos: La ocurrencia de fallos no afecta a los usuarios.
– Crecimiento: El crecimiento del sistema no afecta a los usuarios.
– Heterogeneidad:Carácter heterogéneo no afecta a los usuarios.

¿Es buena tanta transparencia?


– A veces el usuario precisa conocer cómo es el sistema subyacente

Sistemas Operativos Distribuidos Fernando Pérez Costoya


30 José María Peña
Fiabilidad

Fiabilidad como disponibilidad:


– Teóricamente: OR-lógico de sus componentes.
– En ciertos casos: AND-lógico de varios
componentes.
– Mecanismos: redundancia y evitar componentes
críticos.
– Tolerancia a fallos: Los componuentes pueden no
caerse pero funcionan de forma errónea.
Fiabilidad como coherencia:
– Se dificulta con la redundancia: inconsistencias

La fiabilidad está relacionada con la seguridad


(otro objetivo).
Sistemas Operativos Distribuidos Fernando Pérez Costoya
31 José María Peña
Rendimiento
Rendimiento para un servicio multiusuario:
– Objetivo: Rendimiento no peor que un sistema centralizado
Rendimiento para la ejecución paralela de aplicaciones:
– Objetivo: Rendimiento proporcional a procesadores empleados

Factores:
– Mayor número de procesadores
– Elementos críticos:
• Especialmente la red: Latencia de la comunicación, uso de caches, ...
– Grano de paralelismo (relación proceso/comunicación).
– Replicación de elementos/tareas.
– Equilibrado de carga.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


32 José María Peña
Capacidad de Crecimiento
Diseño de un sistema distribuido debe evitar “cuellos
de botella”:
– Componentes centralizados
– Tablas centralizadas
– Algoritmos centralizados

Problemática agravada por el número de elementos:


– Ninguna máquina tiene información completa del estado del
sistema
– Las decisiones se basan sólo en información disponible
localmente
– El fallo de una máquina no debe invalidar el algoritmo
– No debe asumir la existencia de un reloj global

Sistemas Operativos Distribuidos Fernando Pérez Costoya


33 José María Peña
Flexibilidad

Capacidad para ampliarlo o extenderlo con


nuevas funcionalidades de forma sencilla.

Definición de responsabilidades:
– Sistemas con µ -kernel:
• Comunicación entre procesos.
• Cierta administración de memoria.
• Administración y planificación de procesos (limitada
y de bajo nivel).
• Entrada/salida de bajo nivel.

– El resto, servicios a nivel de usuario.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


34 José María Peña
Flexibilidad
Un elemento fundamental de la flexibilidad son
los sistemas abiertos.

El desarrollo de estos sistemas requiere:


– Sus interfaces y protocolos deberían ser públicos.
– Contrario a ”tecnología propietaria”.
– Uso de estándares siempre que sea posible.
– Disponibilidad de su código fuente (libremente o
no).
– Regulación por parte de un colectivo (usuarios u
organizaciones) y no por particulares (fabricantes).

Sistemas Operativos Distribuidos Fernando Pérez Costoya


35 José María Peña
Componentes de un Sistema
Distribuido
El desarrollo de un sistema distribuido complejo
requiere el uso de las siguientes funciones y
servicios:
– Servicios de comunicación.
– Sistemas de ficheros y nombrado distribuido.
– Servicios de sincronización y coordinación.
– Memoria compartida distribuida.
– Gestión de procesos.
– Servicio de seguridad.

Estas funcionalidades se plasman en elementos


concretos del sistema: componentes, protocolos,
algoritmos, soporte hardware/software, ...
Sistemas Operativos Distribuidos Fernando Pérez Costoya
36 José María Peña
Servicios de Comunicación
• Modelos de interacción:
– Cliente/servidor: (2-niveles, 3-niveles o n-niveles)
– Peer-to-peer: Equilibrio de roles.
– Intermediarios: Proxy, Dispacher, Caches, ...
– Unicast vs Multicast
– Fiabilidad.
– Síncronos vs Asíncronos

• Tecnologías de comunicación:
– Paso de mensajes: Berkeley sockets.
– Llamada a procedimientos remotos: RPC.
– Tecnologías de objetos distribuidos: CORBA, DCOM,
EJB
– Código móvil: Entornos de agentes.
Sistemas Operativos Distribuidos Fernando Pérez Costoya
37 José María Peña
Sistemas de Ficheros Distribuidos
Identificación, localización y acceso a elementos
del entorno distribuido.

Comprende:
– Sistemas de ficheros distribuidos (SFD): NFS, AFS.
– Servicios de nombres: DNS, COS-Naming (CORBA).
– Servicios de directorio: X.500, LDAP, JNDI.

Cuestiones:
– Arquitectura de los servicios.
– Almacenamiento intermedio: caching.
– Replicación y coherencia.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


38 José María Peña
Servicios de Sincronización y
Coordinación
Comprende los conceptos de:
– Tiempo en entornos distribuidos: Sincronización de relojes y
relojes lógicos.
– Concurrencia y Paralelismo: Exclusión mutua e interbloqueos.
– Algoritmos distribuidos: Elección de líder, coordinación, ...
– Transacciones: Propiedades ACID, modelos de commit/rollback.

Afecta a otros servicios:


– Nombrado e identificación.
– Seguridad y fiabilidad.
– Comunicaciones.
– ...

Sistemas Operativos Distribuidos Fernando Pérez Costoya


39 José María Peña
Memoria Compartida Distribuida
(DSM)
Hardware:
– Memoria físicamente compartida.
– Memoria distribuida (lógicamente compartida).
– Acceso uniforme vs acceso no uniforme.

Distributed Shared Memory:


– Basada en páginas.
– Basada en variables compartidas.
– Basada en objetos.

Modelos de consistencia

Sistemas Operativos Distribuidos Fernando Pérez Costoya


40 José María Peña
Gestión de Procesos
• Taxonomía de los procesos:
– Niveles de granularidad.
– Congelación de procesos (persistencia).
– Migración de procesos (estado/código).

• Planificación de procesos:
– Planificación interna: Procesos y threads.
– Planificación global.
– Migración y equilibrado de carga.
– Aprovechamiento de máquinas inactivas.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


41 José María Peña
Servicio de Seguridad

Tipología de los ataques:


– Privacidad y confidencialidad.
– Autenticación (spoofing).
– Denegación de servicio.

Modelos y herramientas de seguridad:


– Cifrado: clave pública (RSA) y privada (DES).
– Protocolos de seguridad: IPsec, SSL.
– Certificados y firmas digitales: X.509.
– Elementos de seguridad: Firewalls.

Entornos seguros: e.g. Kerberos.


Sistemas Operativos Distribuidos Fernando Pérez Costoya
42 José María Peña
Notación
La asignatura tiene dos partes:
– Parte de la asignatura dependiente de “ciertas“
tecnologías:
• API de sockets.
• RPCs.
• CORBA.
• DCOM.
• Java: RMI, EJB y Jini.
– Parte de la asignatura independiente de
tecnologías:
• Conceptos.
• Técnicas.
• Algoritmos.
• Estrategias de diseño.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


43 José María Peña
Notación y Formalismos
• Objetivo de la notación: No atar ninguna solución a una
tecnología concreta.

• Notaciones y formalismos usados:


– Pseudocódigo: Algoritmos y ejemplos.
– Objetos: Escenarios de interacción, patrones distribuidos.
– Formalismos matemáticos: Seguridad, sincronización.
– Metodologías y arquitecturas: Nomenclatura y semántica.

• Se optará por el más apropiado en cada caso.


• No debe ser un impedimento para entender el concepto.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


44 José María Peña
Wrapper Facade
Patrón de diseño que encapsula los factores y
características dependientes de las APIs de desarrollo
del sistema operativo o tecnología usada. [SSR00]

Escenario:
Wrapper Facade llamadas
API FunciónA
llamadas Datos llamadas
Aplicación API FunciónB
llamadas
API FunciónC
método1(){ método1()
método1(){
funciónA();
funciónA();
... métodoN(){
métodoN(){
funciónB();
funciónB(); metodoN() funciónC();
funciónC();
}} }}

Sistemas Operativos Distribuidos Fernando Pérez Costoya


45 José María Peña
Wrapper Facade

Ejemplo:
– Semáforo
genérico. Protege class Thread_Mutex
un región de {
exclusión mútua public:
– acquire():
entrada en la Thread_Mutex();
región. Thread_Mutex();
– release(): salida
void acquire();
de la región.
void release();
– Implementación: };
Depende del SO.

Sistemas Operativos Distribuidos Fernando Pérez Costoya


46 José María Peña

Vous aimerez peut-être aussi