stringtranslate.com

sistema de ventanas

Elementos típicos de una ventana . La decoración de la ventana la dibuja el administrador de ventanas o el cliente. El dibujo del contenido es tarea del cliente.

En informática , un sistema de ventanas (o sistema de ventanas ) es un paquete de software que gestiona 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 actualmente en ejecución se le asigna una superficie de la pantalla generalmente redimensionable y generalmente rectangular para presentar su GUI 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 ejecute y presente 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 generalmente se denomina protocolo del servidor de visualización, siendo el servidor de visualización el mediador entre los clientes y el usuario. Recibe toda la entrada del kernel , que el kernel recibe de todos los dispositivos de entrada conectados , 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 de la computadora . La salida de sonido generalmente no la administra el servidor de visualización, pero el volumen del sonido generalmente se maneja a través de subprogramas GUI y es el servidor de visualización quien decide qué aplicaciones están en la parte superior. Un sistema de ventanas permite al usuario de la computadora 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 necesaria ]

Desde el punto de vista de un programador , un sistema de ventanas implementa primitivas gráficas. Por ejemplo: renderizar fuentes o dibujar una línea en la pantalla. Proporciona una abstracción del hardware de gráficos para que la utilicen elementos de nivel superior de la interfaz gráfica, como un administrador de ventanas. [ cita necesaria ]

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

Servidor de visualización

Los componentes básicos de una GUI : el servidor de visualización implementa el sistema de ventanas. Un administrador de ventanas simple simplemente dibuja las decoraciones de la ventana , pero los administradores de ventanas compuestos 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 del servidor de visualización, un protocolo de comunicación que puede ser transparente para la red o simplemente compatible con la red.

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

La relación servidor/cliente de un servidor de visualización independiente es algo contradictoria en el sentido de que normalmente se piensa que un "servidor" es una máquina grande y 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 un máquina central más grande. La explicación es que un servidor de visualización proporciona los servicios de una visualización y dispositivos de entrada.

Mostrar protocolos de comunicaciones del servidor

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 servidor de visualización es el servidor X.Org , que se ejecuta sobre el núcleo (normalmente un núcleo tipo 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 kernel: 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 X Window System , en particular su versión realmente utilizada: X.Org Server y las bibliotecas cliente Xlib y XCB . El servidor X.Org es un servidor de visualización, pero en su implementación actual depende de un segundo programa, el administrador 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 del 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 salida de sus clientes y, a diferencia de X11, también de la composición . Algunos ejemplos son Weston , Mutter , KWin o Enlightenment .

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

Wayland se utiliza hasta cierto punto en algunas distribuciones de escritorio de 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 continuo para agregar compatibilidad con 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 también es compatible con el protocolo X11. Fue desarrollado por Canonical y estaba destinado a ser el servidor de visualización elegido para Ubuntu . A partir de 2017, fue reemplazado por el servidor de visualización Wayland para las ediciones de escritorio de Ubuntu.

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

Sistemas de ventanas con API

SuperficieFlinger

Google desarrolló un servidor de visualización llamado SurfaceFlinger [3] para Android (otro sistema operativo basado en el kernel de Linux principalmente para dispositivos móviles):

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 de Android es "Gralloc". Gralloc maneja la memoria del dispositivo, es decir, asigna, arbitra y maneja la sincronización a través de descriptores de archivos de valla 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 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 manera constante a lo largo de los años. Su objetivo principal es determinar la forma más eficiente de componer buffers con el hardware disponible. Como HAL, su implementación es específica del dispositivo y generalmente la realiza el OEM del hardware de 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 , desde Windows Vista en adelante, Desktop Window Manager permite el uso de aceleración de hardware para representar la interfaz gráfica de usuario. Fue creado originalmente para habilitar partes de la nueva experiencia de usuario "Windows Aero", que permitía efectos como transparencia, cambio de ventana 3D y más. También se incluye con Windows Server 2008, pero requiere la instalación de la función "Experiencia de escritorio" y controladores de gráficos compatibles. A partir de Windows 8, DWM no se puede desactivar y se procesa mediante software si no se instala una tarjeta gráfica adecuada.

Lista de sistemas de ventanas

Para sistemas operativos tipo Unix

Para sistemas operativos de la familia Windows NT

sistemas de ventanas web

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 necesaria ]

Ver 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 pantalla visual. Prensa CRC. pag. 227.ISBN _ 9780824727178. Consultado 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: Superficie".
  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 de Sapphire" (PDF) . Aplicaciones y gráficos por computadora IEEE . 4 (12): 13–23. doi :10.1109/MCG.1984.6429376. S2CID  11138733.
  9. ^ "Chilton::INF::Gestión de ventanas". www.chilton-computing.org.uk . Consultado el 11 de abril de 2023 .