Compatibilità codice binario - Binary-code compatibility
La compatibilità del codice binario ( compatibile con il codice binario o compatibile con il codice oggetto) è una proprietà dei sistemi informatici, il che significa che possono eseguire lo stesso codice eseguibile , in genere codice macchina per una CPU di computer generica . La compatibilità del codice sorgente , d'altra parte, significa che è necessaria la ricompilazione o l' interpretazione prima che il programma possa essere eseguito.
Per un programma compilato su un sistema operativo generale, la compatibilità binaria implica spesso che non solo le CPU ( set di istruzioni ) dei due computer siano compatibili a livello binario, ma anche che le interfacce e i comportamenti del sistema operativo e delle API e gli ABI corrispondenti a quelli Le API, sono sufficientemente uguali, cioè "compatibili".
Un termine come compatibile con le versioni precedenti di solito implica la compatibilità del codice oggetto. Ciò significa che l'hardware e/o il software del computer più recente ha (praticamente) tutte le funzionalità del vecchio, oltre a funzionalità o prestazioni aggiuntive. Il codice eseguibile precedente verrà quindi eseguito invariato sul prodotto più recente. Per un programma compilato in esecuzione direttamente su una CPU in un sistema operativo, un "sistema operativo compatibile binario" significa principalmente compatibilità dell'interfaccia binaria dell'applicazione (ABI) con un altro sistema. Tuttavia, spesso implica anche che le API da cui l'applicazione dipende, direttamente o indirettamente (come l' API di Windows , ad esempio), siano sufficientemente simili. Anche l'hardware (oltre alla CPU, ad esempio per la grafica) e le periferiche a cui accede un'applicazione possono essere un fattore di piena compatibilità, sebbene molte differenze hardware siano nascoste dalle moderne API (spesso in parte fornite dal sistema operativo stesso e in parte da driver di dispositivo specifici ) .
In altri casi, è necessario utilizzare un porting generale del software per far funzionare programmi non compatibili con il binario.
La compatibilità binaria è un grande vantaggio quando si sviluppano programmi per computer che devono essere eseguiti su più sistemi operativi. Diversi sistemi operativi basati su Unix , come FreeBSD o NetBSD , offrono compatibilità binaria con sistemi operativi più popolari, come quelli derivati da Linux , poiché la maggior parte degli eseguibili binari non sono comunemente distribuiti per tali sistemi operativi.
La maggior parte dei sistemi operativi fornisce compatibilità binaria, in ogni versione del sistema operativo, per la maggior parte dei file binari creati per essere eseguiti su versioni precedenti del sistema operativo. Ad esempio, molti eseguibili compilati per Windows 3.1 , Windows 95 o Windows 2000 possono essere eseguiti anche su Windows XP o Windows 7 e molte applicazioni per DOS sono state eseguite su versioni molto più recenti di Windows fino a Windows 10 finché NTVDM è stato supportato .
Hardware compatibile binario
Per un processore digitale implementato nell'hardware, la compatibilità binaria significa che (un ampio sottoinsieme di) codice macchina prodotto per un altro processore può essere eseguito correttamente e ha (molto) lo stesso effetto dell'altro processore. Questo è abbastanza comune tra molte famiglie di processori, sebbene sia piuttosto raro tra gli onnipresenti piccoli sistemi embedded costruiti attorno a tali processori. La piena compatibilità del codice macchina implicherebbe qui esattamente lo stesso layout di routine di servizio di interrupt , porte I/O, registri hardware , contatori/timer, interfacce esterne e così via. Per un sistema embedded più complesso che utilizza più livelli di astrazione (a volte al confine con un computer generico, come un telefono cellulare), questo potrebbe essere diverso.
Sistemi operativi compatibili con i binari
I sistemi operativi compatibili con i binari sono sistemi operativi che mirano a implementare la compatibilità binaria con un altro sistema operativo o un'altra variante della stessa marca. Ciò significa che sono compatibili con ABI (per l' interfaccia binaria dell'applicazione ). Poiché il compito di un sistema operativo è eseguire programmi, le architetture del set di istruzioni che eseguono i sistemi operativi devono essere le stesse o compatibili. Altrimenti, i programmi possono essere impiegati all'interno di un emulatore di CPU o di un meccanismo di traduzione dinamica più veloce per renderli compatibili.
Ad esempio, il kernel Linux non è compatibile con Windows. Ciò non significa che Linux non possa essere compatibile binario con le applicazioni Windows. È disponibile un software aggiuntivo, Wine , che lo fa in una certa misura. Il ReactOS sforzo di sviluppo mira a creare un open-source , il software libero sistema operativo che è compatibile a livello binario con Microsoft Windows NT famiglia di sistemi operativi che utilizzano vino per la compatibilità delle applicazioni e reimplementare il kernel di Windows per ulteriori compatibilità, come per i conducenti, mentre Linux userebbero driver Linux non Driver di Windows. FreeBSD e altri membri della famiglia BSD hanno compatibilità binaria con il kernel Linux in modalità utente traducendo le chiamate di sistema Linux in quelle BSD. Ciò consente all'applicazione e al codice delle librerie che vengono eseguiti su sistemi operativi basati su Linux di essere eseguiti anche su BSD.
Si noti che un sistema operativo compatibile binario è diverso dall'esecuzione di un sistema operativo alternativo tramite virtualizzazione o emulazione , che viene eseguita per eseguire software all'interno del sistema operativo alternativo nel caso in cui il sistema operativo host non sia compatibile. A volte la virtualizzazione viene fornita con il sistema operativo host (o è possibile ottenere tale software), il che rende effettivamente il sistema operativo host compatibile con i programmi. Ad esempio, la modalità Windows XP per Windows 7 consente agli utenti di eseguire una versione a 64 bit di Windows 7 e consente al software precedente di funzionare ancora in una macchina virtuale a 32 bit che esegue Windows XP ; VMware Workstation / VMware Fusion , Parallels Workstation e Windows Virtual PC consentono l'esecuzione di altri sistemi operativi su Windows, Linux e macOS.
Per fare un altro esempio, Mac OS X su PowerPC aveva la capacità di eseguire Mac OS 9 e il software applicativo precedente tramite Classic, ma questo non rendeva Mac OS X un sistema operativo binario compatibile con Mac OS 9. Invece, l'ambiente Classic era effettivamente in esecuzione Mac OS 9.1 in una macchina virtuale , in esecuzione come un normale processo all'interno di Mac OS X.
Guarda anche
- Retrocompatibilità
- Interfaccia binaria dell'applicazione (ABI)
- Compatibilità con il computer
- Compatibilità bug
- Remake di videogiochi
Riferimenti
link esterno
- KDE Techbase Policies – un compendio di regole pratiche di sviluppo C++ (con alcuni esempi ) per non violare la compatibilità binaria tra le versioni di una libreria.
- Strumenti di analisi ABI : un insieme di strumenti open source per l'analisi di ABI e compatibilità binaria all'indietro che implementano le politiche di KDE Techbase