stringtranslate.com

Sistema de ventanas

Elementos típicos de una ventana . La decoración de la ventana la dibuja el encargado de la ventana o el cliente. El diseño del contenido es tarea del cliente.

En informática , un sistema de ventanas (o sistema de ventanas ) es un paquete de software que administra por separado diferentes partes de las pantallas de visualización . [1] Es un tipo de interfaz gráfica de usuario (GUI) que implementa el paradigma WIMP ( ventanas , iconos , menús , puntero ) para una interfaz de usuario .

A cada aplicación que se esté ejecutando se le asigna una superficie de la pantalla, normalmente redimensionable y rectangular, para presentar su interfaz gráfica de usuario al usuario; estas ventanas pueden superponerse entre sí, a diferencia de una interfaz en mosaico donde no se permite que se superpongan. Por lo general, se dibuja una decoración de ventana alrededor de cada ventana. La programación tanto de la decoración de la ventana como de los widgets disponibles dentro de la ventana, que son elementos gráficos para la interacción directa del usuario, como controles deslizantes, botones, etc., se facilita y simplifica mediante el uso de kits de herramientas de widgets .

Detalles técnicos

El componente principal de cualquier sistema de ventanas suele denominarse servidor de visualización , aunque también se utilizan denominaciones alternativas como servidor de ventanas o compositor. Cualquier aplicación que se ejecuta y presenta su GUI en una ventana, es un cliente del servidor de visualización. El servidor de visualización y sus clientes se comunican entre sí a través de una interfaz de programación de aplicaciones (API) o un protocolo de comunicaciones , que suele denominarse protocolo de servidor de visualización, siendo el servidor de visualización el mediador entre los clientes y el usuario. Recibe toda la entrada del núcleo , que éste recibe de todos los dispositivos de entrada adjuntos , como teclado , dispositivos señaladores o pantalla táctil y la transmite al cliente correcto. El servidor de visualización también es responsable de la salida de los clientes al monitor del ordenador . La salida de sonido no suele gestionarla el servidor de visualización, sino que el volumen del sonido suele gestionarse a través de applets de la GUI y es el servidor de visualización quien decide qué aplicaciones están encima. Un sistema de ventanas permite al usuario del ordenador trabajar con varios programas al mismo tiempo. Cada programa presenta su GUI en su propia ventana, que generalmente es un área rectangular de la pantalla. [ cita requerida ]

Desde el punto de vista de un programador , un sistema de ventanas implementa primitivas gráficas. Por ejemplo: la representación de fuentes o el dibujo de una línea en la pantalla. Proporciona una abstracción del hardware gráfico para su uso por parte de elementos de nivel superior de la interfaz gráfica, como un gestor de ventanas. [ cita requerida ]

Un protocolo de servidor de pantalla puede ser compatible con redes o incluso transparente , lo que facilita la implementación de clientes ligeros . [ cita requerida ]

Servidor de visualización

Los componentes básicos de una GUI : El servidor de visualización implementa el sistema de ventanas. Un gestor de ventanas simple simplemente dibuja las decoraciones de las ventanas , pero los gestores de ventanas de composición hacen más.

Un servidor de visualización o servidor de ventanas es un programa cuya tarea principal es coordinar la entrada y salida de sus clientes hacia y desde el resto del sistema operativo, el hardware y entre sí. El servidor de visualización se comunica con sus clientes a través del protocolo de servidor de visualización, un protocolo de comunicaciones que puede ser transparente a la red o simplemente apto para redes.

El servidor de visualización es un componente clave en cualquier interfaz gráfica de usuario , específicamente en el sistema de ventanas.

La relación servidor/cliente de un servidor de visualización independiente es un tanto contraintuitiva, ya que un "servidor" suele considerarse una gran máquina remota, mientras que un "servidor de visualización" independiente es un pequeño sistema local, en el que la mayoría de los clientes se ejecutan en una máquina central más grande. La explicación es que un servidor de visualización proporciona los servicios de una pantalla y de dispositivos de entrada.

Protocolos de comunicación del servidor de visualización

X11

El servidor X.Org se comunica con sus clientes, por ejemplo Amarok , a través del protocolo X11.
Logotipo del sistema X Window
Logotipo del sistema X Window

Un ejemplo de un servidor de visualización es el servidor X.Org , que se ejecuta sobre el núcleo (normalmente un núcleo similar a Unix , como Linux o BSD ). Recibe datos de entrada del usuario (por ejemplo, de evdev en Linux) y los pasa a uno de sus clientes. El servidor de visualización también recibe datos de sus clientes; procesa los datos, realiza la composición y, en Linux, pasa los datos a uno de los tres componentes del núcleo: DRM , gem o controlador KMS . El componente escribe los datos en el framebuffer y el contenido del framebuffer se transmite a la pantalla conectada y se muestra. X se basa en GLX .

Una de las implementaciones del concepto de servidor de visualización es el sistema X Window , en particular su versión más utilizada: X.Org Server y las bibliotecas cliente Xlib y XCB . X.Org Server es un servidor de visualización, pero en su implementación actual se basa en un segundo programa, el gestor de ventanas de composición , para realizar la composición. Algunos ejemplos son Mutter o KWin .

Ejemplos notables de servidores de visualización que implementan el protocolo de servidor de visualización X11 son X.Org Server , XFree86 , XQuartz y Cygwin/X , mientras que las bibliotecas cliente que implementan el protocolo de servidor de visualización X11 son Xlib y XCB .

Wayland

El protocolo del servidor de visualización Wayland
Logotipo de Wayland
Logotipo de Wayland

Los servidores de visualización que implementan el protocolo de servidor de visualización Wayland se denominan compositores Wayland . Como cualquier servidor de visualización, un compositor Wayland es responsable de gestionar la entrada y la salida para sus clientes y, a diferencia de X11, también de la composición . Algunos ejemplos son Weston , Mutter , KWin o Enlightenment .

Los compositores Wayland se comunican con los clientes Wayland a través del protocolo de servidor de visualización Wayland . Este protocolo define que los clientes pueden escribir datos directamente en el búfer de cuadros mediante la API de renderización EGL . El servidor de visualización sigue decidiendo qué ventana está en la parte superior y, por lo tanto, es visible para el usuario, y también sigue siendo responsable de pasar datos relacionados con los dispositivos de entrada desde evdev a sus clientes.

Wayland se utiliza hasta cierto punto en algunas distribuciones de escritorio Linux, como Fedora . También es muy adecuado para la informática móvil y ha sido adoptado, por ejemplo, por los proyectos centrados en teléfonos inteligentes y tabletas Tizen , Sailfish OS y AsteroidOS .

Una implementación de Wayland está disponible bajo la Licencia MIT , las bibliotecas libwayland-client y libwayland-server.

Hay un esfuerzo en curso para agregar soporte de Wayland a ChromeOS . [2]

Mir

El servidor de visualización Mir viene con su propio protocolo de servidor de visualización Mir, que es diferente de los utilizados por X11 y Wayland. Mir, además, es compatible con el protocolo X11. Fue desarrollado por Canonical y estaba destinado a ser el servidor de visualización de elección para Ubuntu . A partir de 2017, ha sido reemplazado por el servidor de visualización Wayland para las ediciones de escritorio de Ubuntu.

Hay implementaciones del servidor de visualización Mir y de las bibliotecas libmir-server y libmir-client disponibles bajo la GPLv3 .

Sistemas de ventanas con API

SuperficieFlinger

Google desarrolló un servidor de visualización llamado SurfaceFlinger [3] para Android :

Todo en Android se representa en una "superficie"; las "superficies" son producidas por aplicaciones y colocadas en una cola administrada por SurfaceFlinger. [4] [5]

Otra solución específica para Android es "Gralloc". Gralloc se encarga de la memoria del dispositivo, es decir, realiza la asignación, el arbitraje y la sincronización a través de descriptores de archivos de Android/Linux. Gralloc compite con otras soluciones, como por ejemplo, Generic Buffer Management (GBM) de Mesa o EGLStreams de Nvidia. La capa de abstracción de hardware (HAL) de Gralloc se utiliza para asignar los buffers que subyacen a las "superficies".

Para realizar la composición en Android, las superficies se envían a SurfaceFlinger, que utiliza OpenGL ES para realizar la composición.

Hardware Composer HAL (HWC) se introdujo en Android 3.0 y ha evolucionado de forma constante a lo largo de los años. Su objetivo principal es determinar la forma más eficiente de combinar búferes con el hardware disponible. Como HAL, su implementación es específica del dispositivo y, por lo general, la realiza el OEM del hardware de la pantalla.

Compositor de cuarzo

Para la familia de sistemas operativos macOS de Apple , Quartz Compositor cumple las tareas de un servidor de visualización y de un administrador de ventanas en el sistema de ventanas.

Administrador de ventanas de escritorio

Para Microsoft Windows , a partir de Windows Vista , Desktop Window Manager permite el uso de aceleración de hardware para renderizar la interfaz gráfica de usuario. Originalmente, se creó para habilitar partes de la nueva experiencia de usuario "Windows Aero", que permitía efectos como transparencia, cambio de ventanas en 3D y más. También se incluye con Windows Server 2008, pero requiere la función "Desktop Experience" y la instalación de controladores gráficos compatibles. A partir de Windows 8, DWM no se puede deshabilitar y se renderiza mediante software si no se instala una tarjeta gráfica adecuada.

Lista de sistemas de ventanas

ParaSimilar a Unixsistemas operativos

ParaFamilia Windows NTsistemas operativos

Websistemas de ventanas

Otro

Algunos sistemas como Microsoft Windows ( XP , 9x y anteriores), el clásico Mac OS (versión 9 y anteriores) y Palm OS , contienen un sistema de ventanas que está integrado con el sistema operativo. [ cita requerida ]

Véase también

Referencias

  1. ^ Kent, Allen; Williams, James G. (11 de octubre de 1996). Enciclopedia de microcomputadoras: volumen 19: sistemas de mantenimiento de la verdad para la calidad de la visualización. CRC Press. pág. 227. ISBN 9780824727178. Recuperado el 8 de junio de 2017 .
  2. ^ "Descripción general del ozono" . Consultado el 20 de agosto de 2017 .
  3. ^ "Arquitectura del sistema Android" (PDF) . Archivado desde el original (PDF) el 8 de abril de 2016.
  4. ^ "Desarrollador de Android: Surface".
  5. ^ "Desarrollador de Android: SurfaceFlinger y Hardware Composer".
  6. ^ "Manual del usuario de HP Windows/9000" (PDF) . Hewlett Packard. Abril de 1988 . Consultado el 26 de octubre de 2021 .
  7. ^ "Andrew: Un entorno informático personal distribuido" (PDF) . Comunicaciones de la ACM . 29 (3). Marzo de 1986.
  8. ^ Myers, Brad (diciembre de 1984). "La interfaz de usuario para Sapphire" (PDF) . IEEE Computer Graphics and Applications . 4 (12): 13–23. doi :10.1109/MCG.1984.6429376. S2CID  11138733.
  9. ^ "Chilton::INF::Window Management". www.chilton-computing.org.uk . Consultado el 11 de abril de 2023 .