
Familias de sistemas operativos populares
- ¿por qué no puedo ejecutar cualquier programa en cualquier sistema operativo?
- ¿por qué algunos programas existen para múltiples sistemas operativos y otros no?
- ¿por qué algunos programas funcionan en cualquier sistema operativo?
¡qué de preguntas! Y todo tiene respuesta, pero primero hay que entender cómo se ejecutan los programas en una computadora. Tranquilos, voy a tratar de ser bien claro y cortito.
Un programa es una secuencia de pasos que un programador escribe en un lenguaje de programación, y que le indica a la computadora que debe hacer. Pero el lenguaje de programación que utiliza el programador humano no es entendible por la computadora, con lo cual es necesaria una transformación desde el código fuente a un código ejecutable (se le llama código objeto) que la computadora sí puede entender. A esto le llamamos compilación (o interpretación en algunos casos). Los compiladores generan código binario para una determinada familia de sistemas operativos; podemos tener un programa escrito en C y generar un ejecutable para Windows y un .sh para Linux, compilándolo en cada caso con el compilador apropiado.
Este código binario compilado posee muchísimas invocaciones al sistema, o sea solicitudes que el programa realiza al sistema operativo subyacente para realizar determinadas operaciones que solo el sistema operativo puede hacer, como por ejemplo escribir en disco, liberar o solicitar memoria adicional, etcétera. Y aquí es donde comienzan nuestros problemas: cada sistema operativo (o cada familia de sistemas operativos) tiene su manera particular de proveer estas operaciones. Nombres distintos, distintos parámetros, distintos tipos,… El punto es que el código ejecutable de un programa para Windows es muy distinto del de un programa para Linux y muy distinto del de un programa para Mac. Uno podría decir: y bueno, pongo código ejecutable para cualquier sistema operativo y listo. Obviamente, esto no es solución: los ejecutables serían enormes, y si sale un nuevo sistema operativo habrá que modificar todos los compiladores para que puedan generar código compatible para este nuevo sistema; no da ni ahí.
Ahora que tenems estos conceptos más claros, podemos comenzar a responder las preguntas:
¿por qué no puedo ejecutar cualquier programa en cualquier sistema operativo?
Bueno, esta es obvia. Es simplemente porque los códigos binarios son incompatibles. Salvo que haya algo en el medio que transforme las invocaciones al sistema desde un sistema operativo hacia otro (por ejemplo, Wine).
¿por qué algunos programas existen para múltiples sistemas operativos y otros no?
Porque los desarrolladores se encargan de generar versiones compiladas para cada sistema operativo. Un claro ejemplo de este es el Mozilla Firefox, tenemos versiones para cualquier distro de Linux, de 32 y de 64 bits, para Windows, para Mac, para Solaris… y también nos dan el código fuente, por si queremos compilarlo nosotros mismos (o modificarlo
)
¿por qué algunos programas funcionan en cualquier sistema operativo?
Existen algunos programas que funcionan sobre cualquier sistema operativo, como por ejemplo las aplicaciones Java. ¿cómo hacen esto? En Java, el código fuente se compila en un código intermedio, que se llama bytecode; este código no es ejecutable aún, es una mezcla entre código fuente y codigo objeto, no es ni uno ni el otro. Pero es igual para cualquier sistema.
El Sistema Operativo subyacente deberá tener la JRE (Java Runtime Environment, antes conocida como JVM o Java Virtual Machine), que es básicamente un entorno de ejecución que permite tomar cualquier programa en bytecode y ejecutarlo. La JRE sí depende del sistema operativo, ya que transforma el bytecode en llamadas al sistema apropiado; y la gente de SUN se han encargado de proveer una JRE para cada sistema operativo moderno (la mayoría de las distros incluyen una y hasta hay una implementación libre de la jre, Windows tiene, Mac tiene, obvio que Sun Solaris también).
Octubre 3, 2008 a las 1:34 pm
[...] public links >> sistemas Sistemas de Numeración Saved by brashman on Thu 02-10-2008 Programas incompatibles entre sistemas operativos (Windows, Linux … Saved by SoraXxXLuver on Wed 01-10-2008 Administração dos Sistemas Linux I Saved by [...]
Febrero 3, 2009 a las 2:03 pm
hahahahah
Junio 22, 2009 a las 3:08 am
pues todos deberian ser amables y poner los programas a disposicion de mas de un sistema operativo que no sean envidiosos
jeje
Junio 22, 2009 a las 11:04 am
jajajaja claro! que lindo que seria el mundo!
Octubre 29, 2009 a las 2:01 pm
de pinta, veda mano
Julio 28, 2009 a las 12:28 am
interesante aunque ya lo sabia, pero que bueno que exista personas que hacen una diferencia tan sencilla, felizidades