Buscar este blog

viernes, 17 de abril de 2015

UNIX VS GNU/Linux



Hace algún tiempo platicando con una persona me comentaba que se sentía muy a gusto usando Mac Os X dado que se trataba de un UNIX y que no entendía entonces cuál era la diferencia con GNU/Linux.

A menudo escuchamos que GNU/Linux es como Unix, en inglés se dice "Unix-like". ¿Qué significa esto?

La historia de UNIX se remota a 1969. A través de los años ha sido desarrollado y ha evolucionado en muchas versiones y ambientes. Las variantes más modernas de UNIX son versiones licenciadas del código original de una de las versiones originales de UNIX.  Solaris (Sun), HP-UX (Hewlett-Packard) y AIX (IBM) son sabores de UNIX que contienen elementos y fundamentos de ésta licencia. Por ejemplo, Solaris de Sun es un UNIX, pero incorpora muchas herramientas y extensiones diseñadas para funcionar únicamente con las estaciones de trabajo de Sun y sus servidores.

GNU/Linux nació como un deseo de crear una alternativa de software libre  a los ambientes comerciales de UNIX. Su historia se remonta hacia 1983 cuando el proyecto GNU se lanzó como una alternativa para producir un software libre parecido a UNIX. En 1991 se introdujo el core desarrollado por Linus Torvals y de ahí nació Linux o GNU/Linux.

Ambos sistemas tienen una historia y una herencia muy parecidas, pero son muy diferentes. Muchas de sus herramientas, utilerías y software que son estándares en todas las distribuciones GNU/Linux son alternativas libres a sus versiones disponibles en UNIX.

Las diferencias técnicas entre ellos hacen que UNIX tenga un mercado muy específico. Los desarrolladores de aplicaciones UNIX generalmente tienen una muy buena idea de cuales aplicaciones son las más funcionales y a cuales darles todo el soporte y optimización. Los distribuidores comerciales de UNIX tiene que hacer de todo para mantener cierta consistencia entre las diferentes versiones. Para tal motivo han publicado estándares que deben seguir los desarrolladores en beneficio de los clientes.

Por otra parte, el desarrollo para GNU/Linux es más diversificado. Los desarroladores pueden tener diferentes experiencia y opiniones. No existe un estándar en cuanto a las herramientas a utilizar, por tal motivo y para darle cierto nivel de coherencia, se creó la LSB (Linux Standard Base), pero aún no ha demostrado mucha efectividad. Esta relativa falta de estándares existe debido a que el desarrollo de software libre promueve la libre creación de herramientas y no atar a sus desarrolladores. Un ejemplo de esto es la manera en que las distribuciones de GNU/Linux se mantienen actualizadas, por ejemplo Gentoo y RedHat tienen diferentes métodos para enviar los parches y actualizaciones, aún cuando ambas se basan en sí mismas.

En cuanto a la arquitectura de hardware, las versiones comerciales de UNIX están desarrolladas para funcionar con un pequeño puñado de arquitecturas de hardware, es decir, para modelos específicos. HP-UX no puede funcionar en máquinas con procesadores PA-RISC o Ithanium. Solaris solo está disponible para SPARC y x86. AIX solo funciona con ciertos procesadores y así por el estilo. Debido a estas limitaciones, los vendedores de UNIX deben optimizar el código para cada arquitectura. Esto les permite sacar ventaja de cada componente específico. Dado que conocen perfectamente como funciona su hardware, es posible desarrollar excelentes drivers y optimizarlos correctamente.

Por su parte, GNU/Linux ha sido diseñado históricamente para ser tan compatible como sea posible. No solo se encuentra disponible para muchas arquitecturas, sino que el número de dispositivos de entrada/salida y otros externos que soporta puede ser ilimitado. Los desarrolladores no pueden asumir que software específico va a ser instalado, por lo que no pueden optimizarlo exclusivamente. Esto permite que un driver sea usado en varios tipos de equipos y que funcione de una manera genérica. Un ejemplo de esto es el administrador de memoria de GNU/Linux. Desde que se desarrolló en la arquitectura x86 usa el mismo modelo para segmentar la memoria. Se ha adaptado para usar el modo de memoria de paginación, pero ahú mantiene algunos requerimientos mínimos de memoria. Esto ha causado algunos problemas para arquitecturas que no soportan la segmentación de memoria. Esto no pasa en UNIX, ya que sus desarrolladores saben exactamente cuál es el hardware en que se va a usar.

Con respecto al Kernel, éste es el núcleo de cualquier sistema operativo. En ninguna versión de UNIX éste se encuentra disponible libremente, a diferencia de las distribuciones de GNU/Linux. Por esto, los procedimientos para compilar e instalar los parches del kernel y drivers son tan variados. Con GNU/Linux y los demás sistemas abiertos, un parche puede ser liberado en código fuente y los usuarios finales pueden instalarlo, o incluso modificarlo si así lo desean. Generalmente, los parches así modificados tienden a no ser tan probados como los parches de UNIX.

Los vendedores comerciales de UNIX solo liberan los parches en formato binario. Algunas versiones del kernel pueden venir como paquetes monolíticos, mientras que otras tienen que desmantelar el kernel anterior y actualizarlo con un solo módulo. De cualquier manera esto es binario. Si una actualización es requerida, el administrador tiene que esperar a que el vendedor libere el parche en forma binaria; esto puede ser lento, pero seguro. A diferencia, en GNU/Linux los parches son liberados continuamente, pero debido a la inmensa cantidad de versiones y tipos de hardware, el desarrollador solo puede confiar en los usuarios para poder encontrar algún fallo y corregirlo.

Otra diferencia importante es el tamaño de los archivos. Todas las versiones comerciales de UNIX han evolucionado para soportar un kernel modular. Los drivers y algunas características están disponibles como componentes separados y pueden ser cargados o descargados del kernel a necesidad. Sin embargo, ningún kernel es tan flexible como el kernel de GNU/Linux. Sin embargo, esta flexibilidad está en constante cambio. El código base de GNU/Linux constantemente está en cambio en función de la API usada por el desarrollador. Cuando un módulo o driver es escrito para una versión comercial del UNIX, ese código más rápido que el mismo driver escrito para GNU/Linux.

El soporte de archivos es otro tema. Una de las razones por las que GNU/Linux se ha convertido en una herramienta tan importante  es la inmensa compatibilidad con otros sistemas operativos. Una de sus más obvias características es la gran cantidad de sistemas de archivos que soporta. La mayoría de las versiones comerciales de UNIX soportan dos, cuando mucho tres diferentes tipos de sistemas dearchivos. GNU/Linus sin embargo, soporta casi todos los tipos de sistemas de archivos que se encuentran disponibles para los sistemas operativos.

El soporte que se brinda en estos sistemas es muy diferente. Los distribuidores comerciales de UNIX generalmente cobran cantidades exhorbitantes por sus versiones de UNIX y sus optimizaciones. Las distribuciones de GNU/Linux, por otro lado, cuestan poco o nada.

Si se compra una versión comercial de UNIX, el vendedor generalmente proveerá de soporte técnico para asegurarse que el sistema funcione correctamente. Muchos de los usuarios de GNU/Linux no pueden darse el lujo de tener una compañía que esté revisando su sistema por ellos. Dependen de listas de correos, foros y grupos de usuarios GNU/Linux, a menos que se desee pagar por el soporte directamente con el distribuidor.

En términos generales, ambos sistemas son muy similares. Cambiar de un sistema GNU/Linux a un UNIX y viceversa puede traer varias inconsistencias, pero generalmente son pocas. Incluso con la diferencia de sistemas de archivos y kernels, se requiere de cierto nivel de conocimiento para optimizarlo al gusto. Todas las ramas de UNIX y GNU/Linux han evolucionado y muestran diferencias claras.

A fin de cuentas es cuestión de gustos.

Happy Hacking!!!

No hay comentarios:

Publicar un comentario

Tus comentarios son muy importantes. Gracias por tomarte tu tiempo.

Happy Hacking!!!