Archivo

Archive for the ‘Sistemas Operativos’ Category

El escritorio multimedia en Linux – Drivers de Video

20 mayo 2010 Los comentarios están cerrados

En los últimos años, el ecosistema Linux ha abarcado rápidamente equipos personales como PCs, netbook’s, smartphones, etc. Estas tecnologías abiertas han permitido a empresas como Canonical y Google ofrecer excelentes productos como Ubuntu 10.04 y Android respectivamente. Pero ¿Hasta donde ha llegado el escritorio Linux? ¿Ya es posible tener una experiencia multimedia completa? ¿Qué más falta por hacer?.

Durante algún tiempo Linux fue desarrollado principalmente pensando en grandes equipos de cómputo como servidores y supercomputadoras, además de pequeños sistemas embebidos como routers, electrodomésticos, etc. Y aunque hoy en día Linux domina todos estos mercados, existe un componente que no es necesario para ninguna de estas aplicaciones y que durante mucho tiempo no fue relevante para Linux: el entorno gráfico.

Cuando usas una computadora personal o un teléfono celular, la pantalla gráfica es uno de los componentes más importantes para obtener información de tu equipo. Las interfaces gráficas actuales son sumamente amigables, utilizando una serie de elementos como botones, menús, ventanas etc., así como la presencia de imágenes, audio, video y entornos 3D interactivos, han enriquecido enormemente la funcionalidad de estos sistemas.

Durante muchos años, el entorno gráfico y el sistema de audio han sido los puntos débiles de los sistemas Linux. Anteriormente era común ver a los usuarios correr despavoridos al ver que el sistema fallaba al iniciar el modo gráfico, el audio no se escuchaba, o su laptop se calentaba demasiado. Y aunque hoy en día estos problemas se han logrado resolver en su mayoría, aún se llegan a presentar.

Estos problemas están asociados con tres componentes: los drivers de video, el servidor X y el sistema de audio.

Drivers de video

Linux vs. drivers propietarios

La naturaleza abierta del kernel de Linux (GPL) – la cual lo ha impulsado enormemente –  solo permite que drivers de software libre sean integrados y distribuidos junto con éste. Esto significa que aquellos que son propietarios no pueden ser incluidos en las distribuciones de Linux y deben ser instalados y configurados por el usuario final. Afortunadamente, algunas distribuciones como Ubuntu ofrecen una forma fácil y sencilla de instalarlos.

Actualmente Nvidia, ATI (AMD), S3 (VIA) (e Intel en ocasiones) ofrecen drivers propietarios para Linux, mientras algunas de estas empresas ofrecen también drivers open-source, Nvidia y S3 únicamente proveen drivers propietarios. Finalmente estos drivers en ocasiones no pueden aprovechar los últimos avances que se dan en el kernel (como KMS) o en el servidor X, debido a su naturaleza propietaria.

Drivers propietarios

Debido a que muy pocos clientes usaban Linux en sistemas de escritorio, los fabricantes de tarjetas de video ofrecían un soporte muy pobre (o ninguno) de drivers para Linux, al mismo tiempo que no proveían información del hardware o de sus drivers que permitiera a los programadores arreglar o desarrollar drivers alternativos. En ocasiones usar el driver propietario era la única opción  y muy frecuentemente se encontraban en un estado muy pobre. Para los dueños de estas tarjetas de video usar Linux simplemente no era una opción.

Afortunadamente en los últimos años el soporte de drivers propietarios a mejorado considerablemente, aquellos provistos por Nvidia son considerablemente buenos, ofreciendo un gran soporte para lo último en tecnología de gráficos en Linux. El soporte de ATI ha ido mejorando lentamente, aunque aún falta un buen camino por recorrer. En general los drivers propietarios en Linux son casi tan buenos como los de otros sistemas operativos.

Drivers de código abierto.

El kernel de Linux no fué diseñado originalmente para trabajar con entornos gráficos avanzados, sin embargo ha ido evolucionando poco a poco en esta dirección, algunos de los eventos más importantes han sido:

  • Diciembre 2008, con la versión 2.6.28 comienza una lenta integración de componentes para ofrecer un mejor soporte de gráficos (KMS, GEM), los chips de video de Intel son los primeros en tomar ventaja de estas tecnologías.
  • Diciembre 2008, ATI comienza la liberación de documentación que permitirá el desarrollo de drivers open-source con aceleración 2D y 3D para sus tarjetas de video.
  • Septiembre 2009, en el kernel 2.6.31 se integra soporte inicial para algunos chips de video de ATI.
  • Diciembre 2009, kernel 2.6.32, se agrega soporte de aceleración 2D y 3D para todos los chips de ATI.
  • Febrero 2010, con el kernel 2.6.33 se integran drivers open-source con soporte 2D y 3D para tarjetas de video Nvidia desarrollados por el proyecto nouveau.

Hoy en día Intel y ATI son los mayores fabricantes de chips de video que ofrecen documentación sobre estos, permitiendo el rápido desarrollo de drivers open-source. Actualmente el kernel de Linux integra drivers para la mayoría de las tarjetas de video disponibles en el mercado, en su mayoría ofreciendo soporte de aceleración 2D y 3D.

Apesar de estos grandes avances, los drivers de código abierto aún no pueden competir con drivers propietarios en algunas áreas como aceleración 3D y aceleración de codecs de video. Aún carecen de soporte de APIs relativamente nuevos como OpenGL 3.0, 3.2 o 4.0. Pero tal vez la mayor limitación actual en drivers open-source, sea el alto consumo de energía que presentan algunos de estos, afectando principalmente equipos portátiles, en muchos casos por la falta de una administración de energía o la falta de aceleración de códecs de video. Se espera que la administración de energía de los chips de Intel y ATI mejore en las versiones 2.6.34 y 2.6.35 del kernel.

Gallium3D y el futuro de los drivers de video en Linux

Las tarjetas de video actuales ofrecen una gran cantidad de funcionalidades:

  • Aceleración 2D (EXA, Textured Xv)
  • Aceleración 3D (OpenGL)
  • Aceleración general (OpenCL)
  • Aceleración de códecs de video (XvMC, VDPAU, VA-API)
  • Administración de consumo de energía (ACPI,..)

Desarrollar un driver por cada chip de video que cubra todas estas necesidades/especificaciones es realmente un arduo trabajo, incluso los fabricantes de hardware mantienen un driver común para toda una familia de chips. Esta gran cantidad de trabajo también se ve reflejada en el  retraso de los drivers open-source. Sería muy bueno encontrar una forma de hacer más eficiente el trabajo para cada uno de los equipos que desarrollan drivers para el kernel.

Gallium3D es la mayor apuesta de la comunidad de software libre para lograr drivers open-source competitivos. Uno de sus principales objetivos es permitir que programadores de drivers compartan la mayor cantidad de software posible, reduciendo la necesitdad de programar una y otra vez la misma funcionalidad por cada driver. Pero ¿Cómo funciona Gallium3D? La arquitectura base se puede ver en el siguiente diagrama:

Básicamente se puede pensar en Gallium3D como una capa intermedia entre el API y el driver de video. Cada implementación de un API sobre Gallium3D es llamada state tracker, Los state trackers pueden ser APIs 3D como OpenGL o incluso Direct3D, pero también es posible tener otro tipo de API’s por ejemplo API’s de aceleración 2D como OpenVG o aceleración GPGPU como OpenCL. Una vez que el state tracker esta listo, todos los drivers desarrollados para Gallium3D (que cubran ciertos requisitos) pueden tomar ventaja de este. De esta forma se puede reducir el tiempo de programación para cada driver, acelerando el desarrollo de los mismos.

La versión 7.5 de Mesa3D (Julio 2009) fué la primera en incluir Gallium3D, en Mayo 2009 se incluyó el state tracker OpenVG, permitiendo aceleración de SVG y Flash. Actualmente programadores de drivers de Intel, ATI y nouveau están enfocando sus esfuerzos en Gallium3D. Se han hecho diversas propuestas para la creacion de state trackers en Gallium3d, incluyendo OpenGL 3.2 y Cairo (usado en gtk+).

Los drivers de video juegan un papel muy importante en equipos de computo personal, tanto en tareas comunes como navegar en Internet, editar textos o ver videos, así como en el uso de aplicaciones avanzadas para edición, animación, ingenieria, videojuegos, etc. Linux no podrá competir con otros sistemas operativos en este mercado sino cuenta con los drivers de video adecuados.

Puedes seguir los avances de Gallium3D y los drivers de video en Linux en los siguientes links:

GalliumStatus

Radeon Feature Matrix (drivers para chips ATI)

Nouveau Feature Matrix (drivers para chips Nvidia)

En la siguiente sección revisaré el Servidor X y el sistema de sonido en Linux.

Anuncios

Lo mejor del mes de Noviembre 2009

27 noviembre 2009 Los comentarios están cerrados

Symbian ya es Open-Source

23 octubre 2009 Los comentarios están cerrados

Ya fue liberado el código fuente del Kernel del Sistema Operativo más utilizado en teléfonos celulares

Symbian es un Sistema Operativo micro-kernel para la arquitectura ARM, cuenta con soporte de Symmetric multiprocessing, Preemptive multitasking y protección de memoria. Actualmente acumula aproximadamente el 50% del mercado de Smartphones. Fue adquirido por Nokia en el 2008 y actualmente es manejado por la Fundación Symbian quien prometió liberar por completo el código fuente de Symbian para Junio del 2010.

A nueve meses de la fecha prometida la Fundación Symbian anuncia la liberación del código fuente del Kernel (EKA2) bajo la licencia Eclipse Public License junto con el Kernel Taster Kit (un simulador ARM) y el hardware de desarrollo de bajo costo BeagleBoard.

En los últimos meses Nokia a mostrado un fuerte interés por el Sistema Operativo Maemo basado en Linux, pero esto no significa que Nokia se esté apartando de Symbian, de acuerdo a Nokia, Maemo esta orientado hacia el segmento de dispositivos móviles de alto desempeño.

Categorías:Sistemas Operativos Etiquetas: , ,

KolibriOS un Sistema Operativo en Ensamblador

1 septiembre 2009 Los comentarios están cerrados

KolibriOS es un fork de MenuetOS, este último fué originalmente liberado como GPL, sin embargo hoy en dia se distribuye como freeware sin código fuente. Debido a esta situación se creó el equipo KolibriOS cuyo objetivo es dar continuidad a la versión software libre del proyecto.

KolibriOS es un sistema operativo increiblemente pequeño cabe en un disquete de 1.44MB y solo requiere 8 MB en RAM. Sin embargo ya que esta escrito en ensamblador por el momento solo funciona en equipos con procesador x86 de 32bits. Cuenta con una interfaz gráfica, soporte de audio y cuenta con varios sistemas de archivos. Puedes ver más características del sistema en su Wiki.

Recientemente distrowatch realizó una reseña de este sistema que puedes ver aquí.

Linux: Una de las comunidades de software libre más exitosas

19 agosto 2009 Los comentarios están cerrados

Linux es uno de los proyectos de software más trascendentes de la historia, no solo ha creado un modelo a seguir para el desarrollo de software, también fue uno de los principales impulsores del Internet y de las tecnologías libres.

Hoy en día Linux sigue jugando un papel muy importante en el desarrollo de tecnologías a nivel mundial y sigue creciendo; la Fundación de Linux entregó un reporte estadístico sobre la actividad que se ha dado recientemente en el desarrollo del Kernel de Linux. Algunos puntos muy destacables del último año (desde Abril 2008) son:

  • El número de desarrolladores se ha incrementado en un 10%, alcanzando 1150 en la última versión.
  • La actividad, que se ha medido en: cambios por hora, cambios por versión, lineas de código, modificadas, agregadas y borradas, casi se ha triplicado.
  • El número de lineas código del Kernel, prácticamente se ha duplicado.
  • Más del 70% de los desarrolladores trabajan para compañías como Red Hat, IBM, Novell, Intel, Oracle, Fujitsu, etc.

Todas estas estadísticas muestran un proyecto exitoso y en crecimiento, a pesar de la crisis económica mundial y la existencia de monopolios en el mercado.

Algunas de sus características importantes como son: desempeño, seguridad, portabilidad, y capacidad para ver y modificar su código, le han permitido tener una gran aceptación en el mundo:

  • Es el Sistema Operativo más popular en cómputo embebido y supercómputo desde el año 2004.
  • Ha jugado desde hace tiempo un papel importante en la infraestructura del Internet: servidores, enrutadores.
  • Cada día tiene una presencia más importante en los equipos celulares: Android, WebOS, LiMo
  • Su uso en computadoras de escritorio, portables, corporativas y del hogar sigue creciendo gracias a distribuciones de Linux como Ubuntu y se espera que esto continúe, mediante proyectos como Moblin y Chrome OS.

Pienso que Linux es un gran ejemplo de lo que puede lograr la comunidad y éste seguirá inspirando a muchas otros proyectos, no solamente de software sino también de hardware, ingeniería, ciencia, arte, etc.

seL4: Primer Sistema Operativo Formalmente Probado?

13 agosto 2009 Los comentarios están cerrados

La tecnología de la información ha permeado todos los sectores de nuestra sociedad, economía, transporte, comunicaciones, salud, etc. Sin embargo toda nueva tecnología conlleva nuevos riesgos. Y en la industria del software todavía hay muchos problemas por resolver.

Hasta hoy en día nadie sabe como crear un programa que no contenga errores o agujeros de seguridad.

Esto significa que al implementar una solución de software debemos ser cuidadosos y estar bien preparados para esperar lo peor. Es decir debemos de manejar los riesgos.

Pero ¿que pasaría si pudiéramos crear software sin errores, sin agujeros de seguridad, que realice exactamente aquello para lo que fue programado? Tal vez esto pueda ser una utopía pero al menos el equipo NICTA ha logrado un gran avance en la dirección de la verificación del software.

NICTA ha logrado probar matemáticamente que su sistema operativo seL4 es correcto. Es decir que no contiene errores, agujeros de seguridad o comportamientos indeseados.

Para lograr esto tuvieron que realizar una demostración automática, mediante el software Isabelle, de más de 10 mil teoremas, lo que lo convierte en una de las demostraciones computarizadas más largas que se han realizado.

A pesar de este gran logro, la demostración tiene sus limitaciones, pues al parecer no es una demostración directa, sobre el lenguaje C de la implementación final, sino sobre el lenguaje Haskell, el cual esta basado en Calculo Lambda (más información técnica aquí). Por otro lado seL4 es un sistema operativo micro-kernel de alto desempeño de tan solo 7500 lineas de código C que no cuenta con soporte para múltiples procesadores.

Y claro que hay muchos detalles en la demostración, como por ejemplo: ¿como sabes que el compilador, el hardware, el demostrador, etc, etc…  es matemáticamente correcto?.

A pesar de todos los detalles o posibles errores que puedan quedar, seL4 podría ser el sistema operativo más seguro y confiable del mundo. Y por otro lado el equipo NICTA a demostrado que se pueden llevar las herramientas de demostraciones formales al software que utilizamos todos los días.

Seguramente conforme estas herramientas vayan madurando podremos desarrollar software más confiable.