stringtranslate.com

Compatibilidad con código binario

La compatibilidad con código binario (compatible con binario o compatible con código objeto ) es una propiedad de un sistema informático , lo que significa que puede ejecutar el mismo código ejecutable , normalmente código de máquina para una unidad central de procesamiento (CPU) de una computadora de uso general , que otra computadora. el sistema puede ejecutarse. La compatibilidad del código fuente , por otro lado, 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 aplicaciones (ABI) correspondientes a esas API, son suficientemente iguales, es decir, "compatibles".

Un término como compatible con versiones anteriores suele implicar compatibilidad con código objeto. Esto significa que el hardware y/o software más nuevo tiene (prácticamente) todas las características del antiguo, además de capacidades o rendimiento adicionales. Por lo tanto, el código ejecutable más antiguo se ejecutará sin cambios en el producto más nuevo. Para un programa compilado que se ejecuta directamente en una CPU bajo un sistema operativo, un "sistema operativo compatible con binarios" significa principalmente compatibilidad de interfaz binaria de aplicaciones (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 los 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 quedan 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, se debe utilizar una portabilidad general del software para que funcionen los programas no compatibles con binarios.

La compatibilidad binaria es una ventaja importante a la hora de desarrollar programas informáticos que se ejecutarán en varios 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 comúnmente para dichos sistemas operativos.

La mayoría de los sistemas operativos brindan compatibilidad binaria, en cada versión del sistema operativo, para la mayoría de los archivos 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 nuevas de Windows hasta Windows 10 mientras NTVDM fue compatible. .

Hardware compatible con binarios

Para un procesador digital implementado en hardware, la compatibilidad binaria significa que (un gran subconjunto de) código de máquina producido para otro procesador puede ejecutarse correctamente y tiene (prácticamente) el mismo efecto que en el otro procesador. Esto es bastante común entre muchas familias de procesadores, aunque es bastante poco común entre los pequeños sistemas integrados omnipresentes construidos alrededor de dichos procesadores. La compatibilidad total con el código de máquina implicaría aquí exactamente el mismo diseño de rutinas de servicio de interrupción , puertos de E/S, registros de hardware , contadores/temporizadores, interfaces externas, etc. Para un sistema integrado más complejo que utiliza más capas de abstracción (a veces en el límite de una computadora general, como un teléfono móvil), esto puede ser diferente.

Sistemas operativos compatibles con binarios

Los sistemas operativos compatibles con binarios son sistemas operativos que tienen como objetivo implementar compatibilidad binaria con otro sistema operativo u otra variante de la misma marca. Esto significa que son compatibles con ABI (para interfaz binaria de aplicaciones ). Como el trabajo de un sistema operativo es ejecutar programas, las arquitecturas del conjunto de instrucciones que ejecutan los sistemas operativos deben ser iguales o compatibles. De lo contrario, se pueden emplear programas dentro de un emulador de CPU o un mecanismo de traducción dinámica más rápido para hacerlos compatibles.

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. Hay disponible un software adicional, Wine , que hace eso hasta cierto punto. El esfuerzo 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 usando Wine para compatibilidad de aplicaciones y reimplementando el kernel de Windows para compatibilidad adicional, como controladores, mientras que Linux usaría controladores de Linux. no controladores de Windows. FreeBSD y otros miembros de la familia BSD tienen compatibilidad binaria con el kernel de Linux en modo de usuario al traducir las llamadas del sistema Linux a BSD. Esto permite que el código de aplicaciones y bibliotecas que se ejecutan en sistemas operativos basados ​​en Linux también se ejecuten en BSD.

Tenga en cuenta que un sistema operativo binario compatible es diferente de ejecutar un sistema operativo alternativo mediante virtualización o emulación , que se realiza para ejecutar software dentro del sistema operativo alternativo en el caso de que el sistema operativo host no sea compatible. A veces, la virtualización se proporciona con el sistema operativo host (o se puede obtener dicho software), lo que efectivamente hace que el sistema operativo host 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 permitir que el software antiguo siga funcionando en una máquina virtual de 32 bits que ejecuta Windows XP ; VMware Workstation / VMware Fusion , Parallels Workstation y Windows Virtual PC permiten ejecutar otros sistemas operativos en Windows, Linux y macOS.

Para poner otro ejemplo, Mac OS X en PowerPC tenía la capacidad de ejecutar Mac OS 9 y software de aplicación anterior a través de Classic , pero esto no convertía a Mac OS X en un sistema operativo binario compatible con Mac OS 9. En cambio, el entorno Classic en realidad estaba ejecutando Mac OS 9.1 en una máquina virtual , ejecutándose como un proceso normal dentro de Mac OS X. [1] [2]

Ver también

Referencias

  1. ^ "Arquitectura del sistema Mac OS X". 2002. Archivado desde el original el 2 de agosto de 2002.
  2. ^ Singh, Amit (29 de junio de 2006). Componentes internos de Mac OS X: un enfoque de sistemas . Addison-Wesley . Sección 2.11.8: Clásico. ISBN 0-321-27854-2. Classic 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 protegido, con múltiples procesos de Mac OS 9 superpuestos a un único proceso BSD de Mac OS X.

enlaces externos