La compatibilidad de código binario (o compatibilidad de código objeto ) es una propiedad de un sistema informático que significa que puede ejecutar el mismo código ejecutable , generalmente código máquina para una unidad central de procesamiento (CPU) de propósito general , que otro sistema informático puede ejecutar. Por otro lado, la compatibilidad de código fuente significa que es necesaria la recompilación o interpretación antes de que el programa pueda ejecutarse en el sistema compatible.
Para un programa compilado en un sistema operativo general, la compatibilidad binaria a menudo implica que no solo las CPU ( conjuntos de instrucciones ) de las dos computadoras son compatibles binariamente, sino también que las interfaces y los comportamientos del sistema operativo (SO) y las interfaces de programación de aplicaciones (API), y las interfaces binarias de aplicación (ABI) correspondientes a esas API, son suficientemente iguales, es decir, "compatibles".
Un término como retrocompatible generalmente implica compatibilidad de código objeto. Esto significa que el hardware y/o software más reciente tiene (prácticamente) todas las características del antiguo, además de capacidades o rendimiento adicionales. Por lo tanto, el código ejecutable antiguo se ejecutará sin cambios en el producto más reciente. Para un programa compilado que se ejecuta directamente en una CPU bajo un sistema operativo, un "sistema operativo compatible binariamente" significa principalmente compatibilidad de la interfaz binaria de la aplicación (ABI) con otro sistema. Sin embargo, también suele implicar que las API de las que depende la aplicación, directa o indirectamente (como la API de Windows , por ejemplo), son suficientemente similares. El hardware (además de la CPU, como para gráficos) y los periféricos a los que accede una aplicación también pueden ser un factor para la compatibilidad total, aunque muchas diferencias de hardware están ocultas por las API modernas (a menudo proporcionadas en parte por el propio sistema operativo y en parte por controladores de dispositivos específicos ).
En otros casos, es necesario utilizar una adaptación general del software para que funcionen los programas que no son compatibles a nivel binario.
La compatibilidad binaria es una gran ventaja al desarrollar programas informáticos que se ejecutarán en múltiples sistemas operativos. Varios sistemas operativos basados en Unix , como FreeBSD o NetBSD , ofrecen compatibilidad binaria con sistemas operativos más populares, como los derivados de Linux , ya que la mayoría de los ejecutables binarios no se distribuyen habitualmente para dichos sistemas operativos.
La mayoría de los sistemas operativos ofrecen compatibilidad binaria, en cada versión del sistema operativo, para la mayoría de los binarios creados para ejecutarse en versiones anteriores del sistema operativo. Por ejemplo, muchos ejecutables compilados para Windows 3.1 , Windows 95 o Windows 2000 también se pueden ejecutar en Windows XP o Windows 7 , y muchas aplicaciones para DOS se ejecutaron en versiones mucho más recientes de Windows, hasta Windows 10, mientras se admitió el NTVDM .
Hardware compatible a nivel binario
Para un procesador digital implementado en hardware, la compatibilidad binaria significa que (un subconjunto considerable de) código máquina producido para otro procesador puede ejecutarse correctamente y tiene (en gran medida) el mismo efecto que en dicho procesador. Esto es bastante común entre muchas familias de procesadores, aunque es poco frecuente en los omnipresentes sistemas embebidos pequeños construidos alrededor de estos procesadores. La compatibilidad total del código máquina implicaría, en este caso, la misma disposición exacta de las rutinas de servicio de interrupción , los puertos de E/S, los registros de hardware , los contadores/temporizadores, las interfaces externas, etc. Para un sistema embebido más complejo que utiliza más capas de abstracción (a veces en la frontera con un ordenador general, como un teléfono móvil), esto puede ser diferente.
Sistemas operativos compatibles a nivel binario
Los sistemas operativos compatibles a nivel binario son aquellos que buscan implementar la compatibilidad binaria con otro sistema operativo o con otra variante de la misma marca. Esto significa que son compatibles a nivel de interfaz binaria de aplicación (ABI ). Dado que la función de un sistema operativo es ejecutar programas, las arquitecturas de conjuntos de instrucciones que lo ejecutan deben ser idénticas o compatibles. De lo contrario, los programas pueden utilizarse en un emulador de CPU o mediante un mecanismo de traducción dinámica más rápido para lograr la compatibilidad.
Por ejemplo, el kernel de Linux no es compatible con Windows. Esto no significa que Linux no pueda ser compatible binariamente con las aplicaciones de Windows. Existe software adicional, Wine , que lo logra hasta cierto punto. El proyecto de desarrollo de ReactOS busca crear un sistema operativo de software libre y de código abierto que sea compatible binariamente con la familia de sistemas operativos Windows NT de Microsoft, utilizando Wine para la compatibilidad de aplicaciones y reimplementando el kernel de Windows para una compatibilidad adicional, como la de los controladores, mientras que Linux usaría controladores de Linux, no de Windows. FreeBSD y otros miembros de la familia BSD tienen compatibilidad binaria con el kernel de Linux en modo usuario , traduciendo las llamadas al sistema de Linux a llamadas de BSD. Esto permite que el código de las aplicaciones y bibliotecas que se ejecutan en sistemas operativos basados en Linux también se ejecute en BSD.
Cabe destacar que un sistema operativo compatible a nivel binario es diferente de ejecutar un sistema operativo alternativo mediante virtualización o emulación , lo cual se realiza para ejecutar software dentro del sistema operativo alternativo cuando el sistema operativo anfitrión no es compatible. En ocasiones, la virtualización viene incluida con el sistema operativo anfitrión (o se puede obtener dicho software), lo que efectivamente hace que el sistema operativo anfitrión sea compatible con los programas. Por ejemplo, el Modo Windows XP para Windows 7 permite a los usuarios ejecutar una versión de 64 bits de Windows 7 y habilitar el software antiguo para que siga funcionando en una máquina virtual de 32 bits con Windows XP ; VMware Workstation / VMware Fusion , Parallels Workstation y Windows Virtual PC permiten ejecutar otros sistemas operativos en Windows, Linux y macOS.
Por ejemplo, Mac OS X en PowerPC tenía la capacidad de ejecutar software de Mac OS 9 y versiones anteriores a través de Classic , pero esto no convertía a Mac OS X en un sistema operativo compatible a nivel binario con Mac OS 9. En realidad, el entorno Classic ejecutaba Mac OS 9.1 en una máquina virtual , como un proceso normal dentro de Mac OS X. [ 1 ] [ 2 ]
Véase también
Referencias
- ↑ "Arquitectura del sistema Mac OS X" . 2002. Archivado del original el 2 de agosto de 2002.
- ↑ Singh, Amit (29 de junio de 2006). Mac OS X Internals: A Systems Approach . Addison-Wesley . Sección 2.11.8: Classic. ISBN 0-321-27854-2Classic Startup es una aplicación Mach-O que ejecuta Mac OS 9 dentro de su espacio de direcciones. Proporciona una capa de abstracción de hardware entre Mac OS 9 y Mac OS X mediante la virtualización de trampas
, llamadas al sistema e interrupciones. Se ejecuta en un entorno de memoria protegida, con múltiples procesos de Mac OS 9 superpuestos a un único proceso BSD de Mac OS X.
Enlaces externos
- Políticas de KDE Techbase : un compendio de reglas generales de desarrollo en C++ (con algunos ejemplos ) para no romper la compatibilidad binaria entre versiones de una biblioteca.
- Herramientas de análisis ABI : un conjunto de herramientas de código abierto para el análisis de ABI y la compatibilidad binaria retroactiva que implementan las políticas de KDE Techbase.
- Compatibilidad con versiones anteriores
- Terminología informática