Compatibiliteitslaag
Een compatibiliteitslaag is een software-interface waarmee toepassingen die zijn geschreven en gecompileerd voor één besturingssysteem of hardwarearchitectuur, kunnen worden uitgevoerd op een ander hostsysteem. De laag ontvangt API-aanroepen en andere systeemfuncties die voor één omgeving zijn ontworpen en vertaalt deze naar aanroepen die het hostsysteem kan begrijpen.
Compatibiliteitslagen kunnen een vergelijkbare functie hebben als emulatie en virtualisatie, doordat ze software die voor één omgeving is geschreven bijvoorbeeld (Windows op een x86-processor) kunnen uitvoeren in een ander besturingssysteem op vergelijkbare hardware (Linux op een x86-processor) of in een vergelijkbaar besturingssysteem op een andere hardwarearchitectuur (Windows op een ARM-processor). Dit doen ze door elke systeem-API-aanroep te onderscheppen die het programma naar zijn oorspronkelijke omgeving probeert te sturen en deze om te zetten in de overeenkomstige aanroepen naar de nieuwe hostomgeving.
Het uitvoeren van software in een compatibiliteitslaag gebruikt vaak minder systeembronnen dan het emuleren van een andere omgeving of het uitvoeren van een virtuele machine. Sommige software kan echter fouten vertonen of extra configuratie vereisen om correct te werken bij gebruik van een compatibiliteitslaag.
Vergelijking met emulatie en virtualisatie
Emulators, virtualisatie en compatibiliteitslagen worden allemaal vaak gebruikt om software voor een andere omgeving uit te voeren. Elke methode voert die taak op een andere manier uit.
Een emulator gebruikt software om zowel de hardware als de software van een apparaat opnieuw te creëren en zo de volledige omgeving te emuleren. Omdat het emuleren van hardwareapparaten in software aanzienlijke systeembronnen vereist, moet een hostsysteem aanzienlijk sneller zijn dan de hardware die het emuleert om vergelijkbare prestaties te bereiken. Een compatibiliteitslaag die bedoeld is om tussen twee hardwareplatforms te vertalen, bevat een hardware-emulator en gebruikt die alleen wanneer dat nodig is, in plaats van de volledige omgeving voortdurend te emuleren.
Een virtuele machine simuleert een volledige computer op de hardware van de hostmachine. Deze voert een kopie van een besturingssysteem uit en gebruikt een softwarelaag om gevirtualiseerde hardwareaanroepen te vertalen naar de hardware van de hostmachine. Een compatibiliteitslaag vertaalt alleen de aanroepen die nodig zijn en simuleert daarbij geen hardware- of softwareaanroepen die niet nodig zijn.
Test je kennis