Interfaces Gráficas


[ratings]ventana2.jpg
En este articulo voy a tratar un tema recurrente. Las interfaces gráficas.

Un poco de Historia
La gran mayoría cree que el inventor de la interfaz gráfica en la pc es Bill Gates. En realidad el inventor fue Xerox con su NextStep. Luego a principio de los 80 apareció la primera interfaz X window para *nix Xfree, hasta que en febrero del 2004 por motivos de cambio de licencia surge el fork Xorg tal cual la conocemos en la actualidad.

El sistema gráfico utilizado en Linux es X-Window, independientemente de la implementación sea Xfree o Xorg, este sistema asume que las aplicaciones actúan como un cliente (x-client) de un servidor X-Window (x-server). El x-server se encarga de lograr la interacción entre el usuario y la aplicación, se encarga de mostrar la imagen en pantalla, y recibir los eventos de teclado, mouse y otros dispositivos.

Características:
Client/server: con lo cual podemos tener corriendo aplicaciones en un server y ser accedidas a través de clientes.
Modular: se pueden deshabilitar o habilitar características a través de parámetros o editando el archivo xorg.conf.
Multiplataforma: no solamente corre en arquitectura X86, sino que también podemos encontrar ports para Compaq Alpha, Intel IA64, SPARC and PowerPC entre otros. Entre las plataformas de software Linux,FreeBSD, NetBSD and OpenBSD. Sistemas UNIX comerciales como Solaris (x86) y UnixWare también están soportados. Otros sitemas como LynxOS, y GNU Hurd. Darwin y Mac OS X estan soportados con XDarwin X server. Win32/Cygwin es tambien soportado a través de XWin X server.
Soporta conexiones del tipo: Local o tcp/ip a través del puerto 6000 +n donde n es el nro. de display.

Componentes:
Un servidor X por si solo es inútil y si hacemos la prueba de arrancar X desde la linea de comandos, obtendremos una pantalla blanca con la flecha del mouse en el medio.

Window Manager:
Es el encargado de decidir como van a verse las aplicaciones y las ventanas.
Algunos de los window managers mas conocidos son:
TWM, IceWM, Afterstep, Blackbox, Fluxbox, Enlightenment, Kwin, Metacity, FVWM, FVWM95, WindowMaker.

Desktop Manager:
Ya aquí estamos hablando de un nivel más alto en materia de interfaz gráfica. Son verdaderos entornos operativos. Donde hay aplicaciones integradas e incluyen window managers como por ejemplo Gnome o Kde.
Gnome utiliza Metacity que es un windows manager como KDE Kwin por poner un ejemplo.

Display Manger:
Un Display Manager nos permite tener un arranque gráfico de un sistema *nix, tener diferentes perfiles y controlar logins locales o remotos a través del protocolo XDMCP.
Los mas conocidos son: XDM, KDM, WDM y GDM.

Composite Manager:
Composición es el modo en que se va a dibujar la aplicación en pantalla. Hasta hace muy poco el sistema de composición tanto en windows como en *nix era igual. Cada rectángulo representa una ventana donde se dibuja la aplicación. Cuando una ventana se superpone a otra no es necesario dibujar la parte no visible. En cambio cuando se mueve la aplicación es la encargada de redibujar la nueva parte visible. La desventaja es que la aplicación es la que esta constantemente redibujando con el consiguiente desperdicio de CPU, RAM y baja performance.
Para salvar este problema surgieron los composites managers que se encargan de dibujar off-screen los rectángulos, liberando de esta función a la aplicación.
El primer composite manger fue xcompmgr que lograba algunos efectos y transparencias sobre las ventanas pero las únicas placas de video que eran medianamente compatibles eran las Nvidia. De todas maneras no aceleraba mucho y suponía un consumo importante de CPU. Otra aproximación fue Luminocity que no es mas que una modificaciones de Metacity de Gnome.

XGL
Novell tuvo una visión diferente del problema y comenzó a investigar hasta liberar a principios del 2006 un nuevo server basado en las extensiones OpenGL. Entonces si levantamos un server Xorg+XGL obtendremos un servidor con capacidades gráficas aceleradas a través de la extensión Xglx.
Para poder aprovechar estas características surgió el composite manager Compiz que a la vez es un window manager. Lo bueno de compiz es que por su tipo de diseño se puede extender hasta lo inimaginable a través de plug-ins. Por poner un ejemplo algunos plug-ins a la fecha son:
* Reflection: Da un efecto de reflejo a través de las transparecencias.
* Neg (negative): Permite invertir los colores en el escritorio, tanto de la pantalla completa como de una ventana.
* Bs (brightness – saturation): Permite aumentar o disminuir la oscuridad y el tinte de color de una ventana.
* Xwinwrap:permite poner un protector de pantalla o un video como fondo de escritorio.
* Bench (benchmark): Una herramienta para medir el rendimiento de Compiz.
* State: Fija un “estado” por defecto para ciertas aplicaciones, y con ello puedes definir la opacidad y el lugar donde se abrirá una aplicación. Ej: abrir el amsn en el escritorio 3 con 50% opacidad.
* Crashhandler: Permite diagnosticar los errores inesperados de Compiz.

Aixgl (accelerated indirect GL X)
Otra visión diferente del problema lo tuvo Redhat. simplemente programaron una extensión para el server actual Xorg en vez de programar uno nuevo.
El composite manager que utiliza es Xair que es una modificación de Luminocity.
Actualmente el server xorg R7.1 soporta Aixgl pero las únicas placas que pueden aprovechar mejor esta extensión son las ATI y no las de otra marca.

Xegl
XEGL es una mejor aproximación a las anteriores porque XGL se basa en tener un servidor X independiente aparte, mientras que XEGL se construye como una interfaz sobre X y DRI que dibuja directamente sobre el framebuffer, lo cual le da cierta independencia tecnológica.
XEGL esta basado en el EGL de Khronos. Khronos Group esta formado por un conjunto de empresas como 3Dlabs, ATI, Discreet, Evans & Sutherland, Intel, Nvidia, SGI y Sun Microsystems. Este grupo fue creado en el 2000 y el fin es crear un standard API para autoría y reproducción de multimedia en variedad de plataformas y dispositivos. Entre las API’s justamente se encuentran las OpenGL.
Para más información consulten en su pagina principal: http://www.khronos.org/about/.

Estado de las otras plataformas:
AERO (Authentic, Energetic, Reflective and Open) de Microsoft:
Windows Vista utiliza un sistema de composición basado XAML y DirectX. Para ello, se utilizaría una nueva API, llamada Windows Presentation Foundation, cuyo nombre en código es Avalon, que requeriría una tarjeta gráfica con aceleración 3D compatible con DirectX.
El gran problema es que el sistema de composición no funciona bien debido a que las placas actuales no están preparadas para el futuro directx 10. Segun Steve Pronovost, miembro del directx team, el Windows Display Driver Model (WDDM) tiene un gran problema debido a que realiza un task scheduling muy rudimentario a nivel GPU. Por lo tanto si hay una aplicación en primer plano utilizando la GPU las otras aplicaciones se detienen hasta que esta termine de utilizarlo. Hablando mal y pronto es un multitasking rudimentario a nivel GPU. De ahí la gran utilización de recursos para poder hacer ni la cuarta parte de lo que realizan los otros composites managers expuestos anteriormente.

Quartz Extreme de Apple:
Antes de ver que es Quartz Extreme veamos los componentes:

Quartz 2D:
Es una librería 2D que acepta dibujos de figuras (círculos, rectángulos, etc) y transforma su salida en los siguientes formatos posibles: Bitmaps, Poscript y PDF.

Quick Draw:
Librería antigua que se encarga de llamar a la librería Quartz 2D para que dibuje el objeto.

OpenGL: de la que ya hablamos.

Quicktime:
Librería para producir videos.

Quartz Compositor:
Se encarga de manejar los datos en forma de bitmaps de Quartz 2D, Quick Draw, OpenGl y Quick Time. Es un servidor de ventanas que también se encarga de gestionar los movimientos del mouse y las pulsasiones de los botones y de enviar dichos eventos a la aplicación.
Este modelo tradicional tiene un gran problema ya que a medida que se abren ventanas se va consumiendo más memoria. Entonces la primera solución fue solicitar a la aplicación que redibuje cada vez que sea necesario. Si bien consume menos memoria es mas lenta.
Para evitar el redibujo lento se utilizó la técnica de doble buffer que consiste en dibujar la ventana en memoria convencional y luego volcarla a memoria de video.

Con la llegada de Quartz extreme se logra mover tanto el buffer como el compositor a la memoria de video dejando libre la memoria convencional y la cpu. Quartz Extreme es un servidor basado en OpenGl.

Y así concluye el pantallazo de las diferentes tecnologías, espero que con esta reseña puedan ver las diferencias y elegir la mas óptima a sus necesidades.

Cordialmente
Sebastian Balza
Linux User Group Zona Norte

Fuentes:
http://es.wikipedia.org
http://www.novell.com
http://www.khronos.org
http://www.redhat.com
http://www.neowin.net/index.php?act=view&id=33407
http://www.macprogramadores.org

ESTE TEXTO SE PUBLICA BAJO LICENCIA CREATIVE COMMONS BY-NC-SA 2.5 AR.

Por lo tanto, usted es libre de: 1) Copiarlo, distribuirlo y exhibirlo. 2) Hacer obras derivadas. Bajo las siguientes condiciones: 1) Debe dar atribución mencionando el nombre del autor y del LUG Zona Norte. En caso de las notas que no llevan firma, mencionar sólo el nombre del LUG.
2) Usted no puede usar esta obra con fines comerciales. 3) Si usted altera, transforma, o crea sobre este texto, sólo podrá distribuir la obra derivada resultante bajo una licencia idéntica a ésta.

Más detalles y texto legal de la licencia en: http://creativecommons.org/licenses/by-nc-sa/2.5/ar


  1. #1 by El Rengo on 25/10/2006 - 0:15

    Muy buena nota!!!

    =D

(will not be published)
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 9 + 11 ?
Please leave these two fields as-is: