Kompatibilita binárních kódů - Binary-code compatibility

Kompatibilita binárních kódů (binárně kompatibilní nebo kompatibilní s objektovými kódy ) je vlastnost počítačových systémů, což znamená, že mohou spouštět stejný spustitelný kód , obvykle strojový kód pro univerzální počítačový CPU . Kompatibilita zdrojového kódu na druhé straně znamená, že před spuštěním programu je nutná rekompilace nebo interpretace .

U kompilovaného programu na obecném operačním systému binární kompatibilita často znamená, že nejen CPU ( sady instrukcí ) těchto dvou počítačů jsou binárně kompatibilní, ale také že rozhraní a chování operačního systému a API a ABI odpovídající těmto API, jsou dostatečně rovnocenné, tj. „Kompatibilní“.

Termín jako zpětně kompatibilní obvykle znamená kompatibilitu s objektovým kódem. To znamená, že novější počítačový hardware a/nebo software má (prakticky) všechny funkce starého plus další možnosti nebo výkon. Starší spustitelný kód tedy poběží beze změny na novějším produktu. Pro kompilovaný program běžící přímo na CPU pod OS znamená „binární kompatibilní operační systém“ především kompatibilitu aplikačního binárního rozhraní (ABI) s jiným systémem. Často to však znamená, že API, na kterých aplikace přímo nebo nepřímo závisí (například Windows API ), jsou dostatečně podobná. Hardware (kromě CPU, například pro grafiku) a periferie, ke kterým aplikace přistupuje, mohou být také faktorem plné kompatibility, i když mnoho hardwarových rozdílů skrývá moderní API (často částečně dodává samotný OS a částečně konkrétní ovladače zařízení ) .

V ostatních případech je nutné použít obecné přenesení softwaru, aby programy, které nejsou binárně kompatibilní, fungovaly.

Binární kompatibilita je hlavní výhodou při vývoji počítačových programů, které mají být spuštěny na více operačních systémech. Několik operačních systémů založených na Unixu , jako je FreeBSD nebo NetBSD , nabízí binární kompatibilitu s populárnějšími operačními systémy, jako jsou ty odvozené od Linuxu , protože většina binárních spustitelných souborů není pro takové OS běžně distribuována.

Většina operačních systémů poskytuje binární kompatibilitu v každé verzi operačního systému pro většinu binárních souborů vytvořených pro spuštění na dřívějších verzích operačního systému. Například mnoho spustitelných souborů zkompilovaných pro Windows 3.1 , Windows 95 nebo Windows 2000 lze spustit také na Windows XP nebo Windows 7 a mnoho aplikací pro DOS běželo na mnohem novějších verzích Windows až Windows 10, pokud byla podporována NTVDM .

Binární kompatibilní hardware

U digitálního procesoru implementovaného v hardwaru binární kompatibilita znamená, že (velká podmnožina) strojového kódu vytvořeného pro jiný procesor může být správně provedena a má (hodně) stejný účinek jako na jiném procesoru. To je zcela běžné u mnoha procesorových rodin, i když u všudypřítomných malých vestavěných systémů postavených na takovýchto procesorech je to spíše neobvyklé . Plná kompatibilita strojového kódu by zde znamenala přesně stejné rozložení rutin služeb přerušení , I/O portů, hardwarových registrů , čítačů/časovačů, externích rozhraní atd. U složitějšího vestavěného systému využívajícího více vrstev abstrakce (někdy na hranici obecného počítače, například mobilního telefonu) to může být jiné.

Binární kompatibilní operační systémy

Binární kompatibilní operační systémy jsou OS, jejichž cílem je implementovat binární kompatibilitu s jiným OS nebo jinou variantou stejné značky. To znamená, že jsou kompatibilní s ABI (pro binární rozhraní aplikace ). Protože úkolem OS je spouštět programy, architektury instrukčních sad, na nichž běží OS, musí být stejné nebo kompatibilní. Jinak mohou být programy použity v emulátoru CPU nebo v mechanismu rychlejšího dynamického překladu, aby byly kompatibilní.

Například jádro Linuxu není kompatibilní s Windows. To neznamená, že Linux nemůže být binárně kompatibilní s aplikacemi Windows. K dispozici je další software Wine , který to do určité míry dělá. Snahou ReactOS je vytvořit OS s otevřeným zdrojovým kódem a svobodným softwarem, který je binárně kompatibilní s řadou operačních systémů Microsoft Windows NT využívajících Wine pro kompatibilitu aplikací a opětovnou implementaci jádra Windows pro další kompatibilitu, například pro ovladače, zatímco Linux by používal ovladače Linuxu nikoli Ovladače Windows. FreeBSD a další členové BSD rodiny mají binární kompatibilitu s linuxovým jádrem v uživatelského módu , která překládá systémových volání Linux do těch BSD. Díky tomu lze kód aplikace a knihoven, které běží na operačních systémech založených na Linuxu , spouštět také na BSD.

Všimněte si toho, že binární kompatibilní operační systém se liší od spouštění alternativního operačního systému prostřednictvím virtualizace nebo emulace , což se provádí pro spuštění softwaru v alternativním operačním systému v případě, že hostitelský operační systém není kompatibilní. Někdy je virtualizace poskytována s hostitelským operačním systémem (nebo lze získat takový software), což ve skutečnosti činí hostitelský operační systém kompatibilní s programy. Například režim Windows XP pro Windows 7 umožňuje uživatelům spustit 64bitovou verzi systému Windows 7 a povolit, aby starý software stále fungoval na 32bitovém virtuálním počítači se systémem Windows XP ; Pracovní stanice VMware / VMware Fusion , Parallels Workstation a Windows Virtual PC umožňují provozování jiných operačních systémů ve Windows, Linuxu a macOS.

Jiným příkladem je, že Mac OS X na PowerPC měl možnost spouštět Mac OS 9 a starší aplikační software prostřednictvím Classic - ale to z Mac OS X neudělalo binární kompatibilní OS s Mac OS 9. Místo toho bylo ve skutečnosti spuštěno klasické prostředí Mac OS 9.1 ve virtuálním počítači , běžící jako normální proces uvnitř Mac OS X.

Viz také

Reference

externí odkazy

  • Zásady KDE Techbase - přehled základních pravidel vývoje C ++ (s některými příklady ), které nenarušují binární kompatibilitu mezi vydáním knihovny.
  • ABI Analysis Tools  -sada open-source nástrojů pro analýzu ABI a zpětné binární kompatibility implementující zásady KDE Techbase