9Aug

Vad betyder det för programvara att köra inhemskt?

När folk hänvisar till att köra inbyggd programvara, emulering och programkompatibilitet, vad exakt refererar de till? Läs vidare när vi gräver in begreppet inbyggd programvara.

Dagens fråga &Svarssession kommer till oss med artighet av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Frågan

SuperUser-läsare Throsby är nyfiken på vad det innebär att driva programvara inhemskt. Han skriver:

Jag har funderat på vad det innebär för programvara att köra inhemskt. Vad exakt är sådan programvara och hur skiljer det sig från programvara som inte körs inhemskt? Hur kan jag säga om en viss mjukvara kommer att köras indivilt på min dator? Finns det sannolikt att programvara finns redan på min dator som körs inhemskt?

Läs vidare för en utmärkt analogi som förklarar exakt vad det innebär att vara inbyggd på ett visst system.

Svaret

SuperUser-bidragsgivare Deltik erbjuder en fantastisk analogi som framhäver vad det innebär att programvara ska vara inbyggd och vilken typ av annan programvara man kan hitta på ett visst system:

En programvara är inbyggd på en plattform om den utformades för att fortsättaden plattformen.

En plattform hänvisar vanligtvis till ett operativsystem, men det kan också användas på enheter som Nintendo Game Boy.

Med hjälp av Game Boy som exempel får den sin programvara från patroner. Dessa patroner innehåller kod som kör native på Game Boy.

-emulatorer är ett lager som tillåter programvara avsedd för en plattform att köras på en annan. Det finns till exempel emulatorer som kan utföra bilder av Game Boy-patroner och låta dig spela Game Boy-spel på din dator eller till och med din mobiltelefon.

A -kompatibilitetsskiktet är typiskt som en emulator. När 64-bitars datorer och operativsystem blev vanliga behövde de vara kompatibla med den befintliga 32-bitars teknologin. Eftersom 64-bitars och 32-bitars arkitekturer är väldigt olika behövs ofta ett kompatibilitetslager för att köra 32-bitars programvara på 64-bitars maskiner. För 64-bitarsversioner av Microsoft Windows behövde Microsoft skriva ett kompatibilitetslager så att 32-bitarsprogram fortfarande skulle fungera på det nya 64-bitarssystemet. Därför installeras vissa program ofta i en mapp som heter Programfiler( x86), där x86 betyder "32-bit".

Kompatibilitetsskikt tenderar att vara mer intima med det ursprungliga systemet än emulatorer är. VirtualBox emulerar -hårdvara för operativsystem *, och de system som det emulerar har inte så mycket direkt interaktion med värdsystemet. WoW64 är ett -kompatibilitetslager genom att det låter 32-bitarsprogram springa på 64-bitars Windows på ett mer integrerat sätt. WoW64 hjälper till att göra program -kompatibla snarare än som emulerar dem i en isolerad miljö.

A översättningsbibliotek är en komponent i kompatibilitetslager. När binär kod körs icke-native, hjälper ett översättningsbibliotek till omdirigering av utländska, icke-inhemska samtal till inbyggda samtal som systemet kan förstå.Monteringsprogram som är skrivna för den ursprungliga TI-83 kanske inte är kompatibel med de nyare TI-83/84 Plus-kalkylatorerna, eftersom vissa samtal som var förnuftiga i TI-83s arkitektur inte längre är giltiga i TI-83/84 +.Ett översättningsbibliotek( förmodligen inkluderat i skal som MirageOS) säkerställer att samtal för TI-83 går till de nya, uppdaterade platserna i TI-83/84 + -räknarna.

Plattformsoberoende kod är skrivet på ett språk som tolkas av något som vanligen körs inhemskt. PHP är till exempel ett programmeringsspråk som tolkas och exekveras av det installerade PHP-binära, vilket redan har sammanställts native för Windows, Mac och Unix-baserade operativsystem. Den PHP-kod som webbskriptor skriver är oberoende av plattformen, så att koden fungerar på flera operativsystem så länge som PHP är installerat för de operativsystemen.

Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.