Astronomía Biología Ciencias de la Tierra Física Informática Matemáticas Medicina Química Tecnología
Tomar decisiones a lo largo de la vida personal y laboral no es simple. Por esto, los humanos se han valido de la tecnología para mejorar las consecuencias de sus propias acciones. Software privativo y software libre, conoce sus diferencias; ventajas y desventajas; logros y fracasos.
A modo de introducción, vale aclarar que el sistema operativo Linux no es UNIX como se lo suele asociar, es más bien un clon de UNIX, o por lo menos es la manera más fácil de explicar que es. Para comparar con algo más conocido, tanto los sistemas Windows NT como Linux son sistemas operativos monolíticos (monolithic). Los usuarios más entusiastas de Linux argumentan que este núcleo está escrito desde cero, sin haber sido copiado de ninguna parte. No obstante, en el proceso de reescritura mucha de la forma y método de UNIX se ha transferido, del mismo modo en que se transmiten los genes a parientes no tan cercanos. Los comandos de UNIX se han transferido sin mayores cambios significativos, la esencia misma de UNIX está presente en Linux. Aún así, esta pequeña diferencia se torna importante, como analizaremos más adelante. No haremos una historia interminable de esto, digamos sólo que actualmente el sistema operativo Linux evoluciona en una forma descentralizada, donde no existe una organización que pueda determinar monolíticamente el camino o sentido hacia donde avanzar tecnológicamente con el producto, a diferencia de cómo ocurre en el software privativo, en el que una sola empresa toma las decisiones y no tiene a todo “un mundo” colaborando.
La gratuidad de Linux se basa en modos de licenciamiento que no involucran transferencia monetaria alguna. Sin embargo, esto no significa que sea “tierra de nadie”, existen restricciones, ya que también existe un contrato que limita y especifica las obligaciones de las partes, al igual que una EULA (End User License Agreement) de Microsoft. La restricción más importante es la distribución del código fuente en algunos casos, o bien la prohibición de guardarse las modificaciones para sí, sin darlas a conocer a la comunidad, entre otras. Microsoft, en cierto modo y en ciertos casos, también tiene software gratuito, tal como la Embedded Visual Tools, que se compone de IDE más compiladores, herramientas de depuración, emuladores binarios para los dispositivos móviles y documentación completa, la cual no tiene absolutamente ningún costo monetario. Y aquí cabe aclarar que gratis no es sinónimo de libre, ya que Microsoft no libera ni distribuye el código fuente.
Pasemos a detalles más técnicos, ¿Linux consume menos recursos aún con interfaz gráfica? Lo primero que se ha encontrado es que Linux no es "un sistema operativo liviano que funciona en una 486", como se suele decir por ahí. El kernel (núcleo) puede hacerlo, pero la utilidad entonces es nula para el usuario hogareño. Esto es, el núcleo del sistema funcionara en la PC más prehistórica que puedas hallar, y luego es el usuario quien decide agregar elementos, como una interfaz gráfica, de acuerdo a lo que necesite y al equipo que tenga. He aquí otra diferencia con el competidor privado Microsoft Windows, en el cual un nuevo sistema representa nuevos requisitos, y por ende una nueva PC. En Linux, el sistema avanza y lo hace para todas las PCs, es decir, estarás actualizado así tengas una flamante PC o una tostadora.
¿Es Windows un juguete? Durante mucho tiempo se ha dicho que Windows es un sistema operativo de juguete, y que UNIX y Linux lo son "en serio". El hecho de que Linux está mejor posicionado como servidor que como estación de trabajo, no ha hecho sino establecer más aún esta postura. Lo cierto es que Windows es un sistema operativo más fácil de configurar y de operar que Linux, lo cual plantea un cierto grado de desafío a la gente de IT (Tecnología de la información) que se enfrenta por primera vez a Linux, que ha llevado a muchos a pensar "uso Linux, soy diferente, soy más capaz". Otra forma de explicar esto es que Windows fue más extendido en la comunidad de Gamers (jugadores) que en la comunidad profesional, ya que el 99% de los juegos son exclusivos para Windows y estamos en el auge de los MMORPG (Juego RPG on-line y masivo) que de alguna manera atan al usuario a usar Windows solo para jugar, he aquí la denominación de juguete. En la otra cara, el ámbito profesional, de medianas a grandes empresas, opta por Linux ya que no debe pagar una elevada suma en licencias para cada equipo de su empresa y se garantiza no tener que cambiar esos equipos a cada rato por incompatibilidad, seguridad o inestabilidad.
Volviendo a la comparación, si el utilizar un sistema operativo más "fácil" es un pecado (nótese que no estamos hablando de capacidades técnicas del S.O. sino de facilidad de uso), pues entonces los usuarios de Windows tendrán que vivir con este estigma.
En el pasado no muy distante, en ciertas áreas profesionales, Windows NT no podía compararse con los grandes sistemas operativos UNIX, establecidos hace más de una década y con el suficiente know-how (saber cómo); compañías como The Santa Cruz Operation (SCO) tuvieron manejos de tecnologías de redes mucho antes que Windows y que otros competidores.
Windows NT 4.0 no tenía enrutamiento estático con la facilidad que tiene Windows 2000 y 2003. Incluso en muchos foros se ridiculizaba a Windows NT por ésta y muchas otras razones. Evidentemente, el mercado de servidores todavía estaba dudoso para Microsoft en ese momento, hasta que llegó Windows 2000. Se percibió claramente que con Windows 2000 se había hecho mucho más que un restyling (cambio de estilo) del S.O., existía otra filosofía, otra potencia de software. Como nos confiase un insider de Microsoft en cierta oportunidad: "Con Windows 2000 sentimos que por primera vez teníamos un ganador, un software que podíamos exhibir sin sentir vergüenza".
Linux arrancó con el know-how prestado, en cierta medida. Ya incorporaba todo el acervo y filosofía de UNIX, lo cual lo posicionó, naturalmente, como un candidato para los servidores.
¿Y desde Windows no puedo arrancar Linux? Linux puede proveer arranque dual (dos sistemas) a través de su conocido LILO (Linux Loader) o el GRUB. Sin embargo, Windows siempre puso trabas a esto porque no quieren compartir su lugar con nadie. Aún así, la comunidad libre nunca se rindió y hoy es posible, y muy fácilmente, poder tener Windows y Linux en la misma PC para poder iniciar con el que se necesite, o incluso más allá, iniciar uno y luego iniciar el restante encima del ya iniciado, lo llamado “virtualización”. Linux ya conoce su posición con respecto a Windows, así que ellos mismos proveen la instalación automática del arranque dual si el usuario lo desea, cosa que en Windows no se ve ni pintada.
¿Linux no tiene virus y tiene más seguridad? Se suele argumentar también que la cantidad de virus que existen para Windows es mucho mayor que los que existen para otros sistemas operativos. Si nos detenemos a pensar, es evidente que esto sucede en primer término porque la base instalada de Windows es enorme, es la ley de los grandes números. No obstante, para ser ecuánimes, debe aceptarse al menos que la instalación de servidores NT y 2000 dejaban al sistema operativo funcionando con todos los servicios críticos levantados, listos para ser atacados por gusanos y troyanos y toda clase de engendros digitales que pululan por la Red, he aquí el primer error.
Hablando en términos más generales, Windows fue y es víctima de virus debido a que la mayoría de los hackers van a dedicarse a molestar a aquellos que cobran caro o, mejor dicho, que simplemente cobran por software, siendo Microsoft el blanco principal. Además, como tanta gente lo usa con poco conocimiento sobre prevención, son blancos fáciles para contaminación, reproducción y esparción de los virus. Al ser Linux un S.O. libre hecho y usado por la gente, no serían capaces de perjudicarse a ellos mismos, por eso la existencia de virus y software espía se reduce a cero, dejando al usuario tranquilo y sin necesidad de usar antivirus.
¿El manejo de la seguridad ante amenazas es mejor que Windows? El sistema operativo Windows es ciertamente complejo. Como ya se ha dicho, la gran base instalada hace de él un blanco predilecto de los hackers, y éstos han encontrado gran cantidad de "huecos", desde buffers overflows hasta aspectos de la impersonalización que utilizan ciertas cuentas de Windows para correr servicios esenciales, que se explotan para causar daño de diverso tipo.
Antes de continuar, tengamos en cuenta estos aspectos respecto de las amenazas:
El tema de seguridad no es trivial, ni es de solución mágica.
El administrador de la red siempre lleva las de perder: basta que un hacker tenga un (si, un) sólo triunfo, para que la empresa o usuario tenga algún grado de problemas. En otras palabras: el administrador de la red no puede "no perder" nunca.
La empresa siempre está a la defensiva. Los hackers tienen todo el tiempo del mundo, y recursos ilimitados para estudiar sin apuro las debilidades del sistema operativo.
La respuesta que soluciona los problemas casi siempre llega después de que algún número no determinado de servidores ha sufrido algún tipo de ataque exitoso.
En cierto modo, si bien se puede minimizar en gran parte preventivamente, determinados problemas solo se solucionan de forma correctiva, sobre todo los gusanos y troyanos.
Microsoft, siendo consciente de estos aspectos, y ante el cúmulo de problemas debido a la base instalada de Windows, optó por reforzar significativamente los mecanismos de entrega de los "remedios" para estas "enfermedades". La respuesta vino en la forma de un gran impulso para su sitio Web de Windows Update, para el boletín de seguridad, y por el mantenimiento de una gran base de conocimientos de acceso libre y gratuito. Es muy probable que este conjunto de páginas sea el más grande y el más mantenido a escala global.
De forma simple, lo ha logrado: el soporte está disponible para el sistema operativo Windows con un conjunto de información, de artículos y erratas con soluciones que se han ido acumulando con el pasar de los años, concentrados en un solo punto. Pero lo irónico es que lograron algo digno de aplausos culpa de los ataques que se filtran por sus propios errores.
Los bugs (errores de programación) en software privativo como Windows llevan más tiempo para repararse ya que, nuevamente, es una única empresa la que se encarga de mantenerlo y acumularán los errores más importantes para luego sacar un famoso Service Pack o algún parche para solucionarlo, y nunca solucionarán todos los errores, dejando fuera los más mínimos. Al ser Linux una comunidad libre en la que toda persona en cualquier parte del mundo puede colaborar sin tener que verse la cara, los problemas se solucionan de una forma, podría decirse, instantánea, ya que sin siquiera saber de programación podrás informar de los errores o comunicar ideas para que los entendidos puedan corregirlos o modificarlos y estar disponible para todos en cuestión de segundos. O, si todo anda bien pero hay algo que no te gusta, puedes modificarlo como algo personal y así también volver a ofrecerlo por si hay más interesados. Esto compite con el hecho de que una versión dada de Windows es siempre igual y así será como ellos quieren que sea hasta que saquen otra.
¿Linux administra mejor las redes? Esto es cierto desde muchas miradas. Para explicar con un ejemplo, citemos el muro cortafuegos o firewall. Existen básicamente dos tipos de firewall: los primeros se basan en examinar la cabecera del paquete de información de red solamente y determinar si lo deja pasar o no en función de conocer el par "origen-destino". Los segundos examinan el contenido completo del paquete de información (stateful inspection, término acuñado en 1993), para determinar si lo permite pasar o no. En este segundo caso, el manejo debe ser mucho más complejo que en el primero, y obviamente la carga de procesamiento es más significativa. Generalmente, los firewalls importantes como el ISA (Internet Security and Acceleration, ex Proxy Server) son del segundo tipo, mientras que los primeros son facilidades que suelen incluirse sin cargo, tal como el ICF (Internet Connection Firewall) de Windows Server 2003.
En Linux encontraremos una amplia oferta de firewalls -de ambos tipos- y enrutadores de código abierto, cuya eficacia está altamente comprobada. En este caso, la ventaja de Linux es que existen distribuciones que contienen el kernel más el enrutador y firewall, todo en un solo disquete de 1,44 MB. Sin embargo, para implementar esto uno debe conocer bastante de lo que se está haciendo, y el número de usuarios que se verían favorecidos por esto es marginal, la mayor ganancia la verían gente ya versada en IT.
¿Linux es mejor porque hay más programadores? Como se vino diciendo hasta ahora, ésta es la principal y mejor cualidad. En general, la comunidad de Linux hizo siempre hincapié en que los productos de código abierto son mejores en calidad que los productos comerciales, por la razón de que hay muchos testeadores del producto, y hay muchos más recursos humanos de programación que para Windows y otros softwares privativos.
Aún así, hagamos un poco de retrospectiva. El primer S.O. con interfaz gráfica para computadora personal fue la conocida LISA (Local-Integrated Software Architecture), de Apple. Luego, ésta devino en la Macintosh, que aún subsiste en nuestros días, y para muchos sigue siendo la quintaesencia de la interfaz gráfica. Apple afirmó que se necesitaron más de doscientos años-hombre para programar el sistema operativo, esto es, trabajando continuamente las 24 hs. del día, un programador hubiese estado sentado
delante de su consola más de dos siglos. Asimismo, los que vivieron en esa época recordarán que tanta potencia de cálculo solamente pudo efectivizarse con el procesador MC68000 de Motorola, primera implementación de un chip de 32 bits para consumo comercial masivo.
Suponiendo ahora que Linux tenga el doble de complejidad que Mac (en realidad, es mucho más complejo), si hacemos unos números nos daremos cuenta que para desarrollar el sistema operativo y mantenerlo se debe tener una cantidad muy grande de desarrolladores, trabajando de una manera descentralizada esto se complica bastante. Suponiendo que esto realmente es así, también es cierto que del lado de Windows existe un número de programadores del cual no podemos bajar para mantener y desarrollar el producto del calibre del S.O. Servidor Windows. El número de programadores del team que desarrolla este tipo de productos debe ser necesariamente importante.
No hay números exactos para nombrar, pero la gran diferencia es que en Microsoft los programadores trabajan por un sueldo (además del aspecto de realización personal, etc.) y tienen un director, quien a su vez reporta a otra persona de nivel superior, etc. Es decir, existe una escala de responsabilidades bien definida. En los programadores de código abierto, dispersos por todo el globo, tal cosa no está bien definida, no existe un jefe, todos están en la misma posición y hasta el de menor conocimiento puede ser clave en el desarrollo de un proyecto tan sólo porque se le ocurrió una idea mientras dormía.
¿Linux es más estable que Windows? Es ésta una de las principales curiosidades de los usuarios que quieren iniciarse con Linux y así también es la más difícil de explicar. Lo que añade ese atributo de “más estable” a Linux frente a Windows es que sus componentes principales son servicios separados. Detallando un poco más, en Windows, el núcleo del sistema, el escritorio, el manejador de ventanas, el gestor de archivos, entre otras cosas, están dentro del mismo paquete y muy interrelacionados. Esto hace que el fallo de una de estas divisiones lleve a errores críticos o cuelgues generales. En Linux, todo va por separado, dando la posibilidad de cerrar y reabrir las cosas cuando uno quiera o, es más, abrir más de una vez lo mismo o probar diferentes alternativas.
En Windows se está acostumbrado a que el escritorio será el “escritorio de Windows”, el manejador de ventanas serán las “ventanas de Windows” y que el gestor de archivos será el “explorador de Windows”. Los S.O. Linux ofrecen poder alterar esto eligiendo entre diferentes opciones de acuerdo a lo que uno quiere, por ejemplo, un escritorio simple y gris o un escritorio tridimensional con forma de cubo rotatorio que tenga un nuevo escritorio en cada uno de sus seis lados, con ventanas que se prenden fuego al maximizarse o que puedo estirar como plastilina; o bien instalar todos los anteriores y elegir cual quiero o todos al mismo tiempo.
La conclusión es que se pierde la costumbre de que todo está unificado y no puedo adecuarlo a lo que quiero o según lo que quiero hacer cada día, sino que altero las cosas cuando quiera y como quiera, mejorando la situación por el lado estético y por el lado técnico.
¿Linux es un sistema operativo en “tiempo real”? Definitivamente no. Pero tampoco lo es Windows. Veamos que es un sistema operativo en tiempo real (RTOS): básicamente, es un S.O. que tiene como característica principal el asegurar en todo momento un tiempo de respuesta determinado ante una entrada al sistema.
Una breve introducción primero: convengamos que un evento puede ser visto como un mensaje generado por el sistema. Uno hace un clic en la pantalla, el sistema operativo genera un mensaje asociado a una interrupción. El tiempo en que se procesa esta petición y que uno obtiene lo que desea puede ser muy variable.
Intuitivamente, podemos pensar que depende de la cantidad de carga de procesamiento del sistema completo en ese momento, y estaremos en lo cierto si pensamos así.
La idea con los RTOS es, entonces, que se asegure un tiempo de respuesta independientemente de la cantidad de procesos que esté corriendo el S.O. Para que eso suceda, hay que inter-construir un sistema de mensajería especial en el sistema operativo -mensajería IPC (interprocess communication)- que sea rápida, y cuyos mensajes casi no consuman ciclos de reloj en su preparación, envío, recepción, etc. Normalmente esto se logra estableciendo un protocolo de comunicación sencillo, con mensajes de longitud uniforme. Y en los procesos que corren, lo esencial sería que no haya diferenciación entre procesos de usuario y procesos de sistema, justamente todo lo contrario de lo que ocurre en Windows y en Linux.
Por lo tanto, Windows y Linux son sistemas operativos no determinísticos, es decir, no podemos asegurar el tiempo de respuesta completo (roundtrip) en el 100% del tiempo de operación del sistema en su conjunto. En el control de un proceso, por ejemplo, se requiere que desde que se efectúa una entrada, la salida o respuesta ante esa entrada se de siempre, en todo momento y bajo toda condición, dentro de un tiempo determinado.
Conclusiones finales
Ciertamente no podemos negar la importancia de Linux como opción para servidores. Empresas como IBM han apostado detrás de este S.O. ingentes recursos para ganar terreno en la arena de IT. Evidentemente caeríamos en una necedad inexplicable si negamos su presencia y gravitación en ciertas esferas de nuestra actividad.
Antes que esto, la corona dorada que lleva Linux encima es el ser un fruto de la voluntad y esfuerzo continuo e interminable contra todas las barreras que se cruzan, pasando a ser no solo una opción para grandes empresas, sino también para pymes y usuarios hogareños sin conocimientos previos.
Entonces, ¿Es mejor Windows o Linux?, lamentablemente esta pregunta no tiene respuesta porque todos los humanos somos diferentes y con ideas diferentes en cada cabeza. Uno debe analizar qué es lo que quiere, partiendo de la base que una computadora personal no es más que una herramienta al servicio del/de los usuario/s, que no hará nada si no se le indica y que será tan estúpida como el usuario lo sea.
Con el paso del tiempo, la PC tomó una posición mas omnipotente entre las personas, pero no hubiese sido así si los creadores no hubiesen mejorado, esto nos muestra que la PC será mejor en cuanto nosotros lo seamos, y a su vez ésta nos ayudara a mejorar para volver a mejorarlas y así continuar ese círculo que no termina en 360º sino que aumenta en cada vuelta.
Bibliografía:
Héctor Facundo Arena. Linux a Fondo. Argentina: MP Ediciones, 2004. ISBN 987-526-245-5.
Scott Granneman. Linux vs. Windows Viruses. Estados Unidos: SecurityFocus, 2003.
A. Russell Jones. Linux Vs. Windows: Choise Vs. Usability. Estados Unidos: DevX, 2003.
Glosario:
UNIX: Sistema operativo portable, multitarea y multiusuario, desarrollado conjuntamente por Bell y AT&T en 1969.
Kernel: Etimológicamente, núcleo. Parte fundamental de un sistema operativo. Es el encargado de comunicar el software con el hardware, gestionar los recursos del sistema y establecer prioridades.
EULA: Licencia de software. Autorización concebida por el titular de los derechos de autor.
Embedded Visual Tools: Paquete de software creado por la empresa Microsoft para desarrollo de aplicaciones en diferentes plataformas, incluyendo computadoras de bolsillo y teléfonos móviles.
Código fuente: También llamado Source Code, es un texto plano en donde se encuentran los algoritmos de un programa informático. Los mismos son escritos con diferentes sintaxis dependiendo el lenguaje de programación usado. Entre ellos se destacan: Pascal, Java, C#, C++, Phyton, Ruby, Perl, etc.
MMORPG: Ó Massive Multiplayer Online Role-Playing Games. Juegos de Rol (RPG) estrátegicos jugados en simultaneo por miles de jugadores en diferentes partes del globo. Sus principales características son las de contenido épico y escandinavo y jugabilidad similar al juego de tablero de los 70’ llamado Calabozos y Dragones. Entre estos se destacan: The lost continent of MU, Lineage, Regnum, Final Fantasy XI, Ragnarok, etc.
Enrutamiento estático: Es cuando el administrador de una red asigna manualmente una dirección IP a cada PC. Caso contrario al enrutamiento dinámico, en el que un enrutador o router asigna automáticamente las direcciones a cada PC que se conecte a la red cableada.
Buffers Overflow: Ó desbordamiento de búfer, error infomártico que se produce cuando se intenta copiar una cantidad de datos mayor al área a contenerlos, posibilitando de esta manera excepciones de acceso a la memoria a otras aplicaciones y su consecuente cierre, oportunidad usada por hackers.
Bug: Defecto de software, es el resultado de un error en la semántica del algoritmo formador de un programa. En este caso, no son producidos por terceros sino que son errores humanos del propio programador. Los errores más comunes son la división por el número cero, ciclos cerrados o infinitos (loops), overflow o desbordamiento, acceso a controladores restringidos, etc.
Firewall: Muro cortafuegos, usado para controlar comunicaciones entre pares, permitiéndolas o prohibiéndolas, según las políticas de la red, establecidas por el usuario.