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ågor och 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äsaren Throsby är nyfiken på vad det innebär att driva programvara inhemskt. Han skriver:
Jag har funderat på vad det betyder 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 i 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 var avsedd att köras på den plattformen.
En plattform hänvisar vanligen till ett operativsystem, men det kan också tillämpas på enheter som Nintendo Game Boy.
Med hjälp av Game Boy som ett exempel får den sin programvara från patroner. Dessa patroner innehåller kod som körs natively på spel pojken.
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.
en kompatibilitetsskiktet är typ av 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)
, varx86
betyder "32-bit".Kompatibilitetsskikt tenderar att vara mer intima med det ursprungliga systemet än emulatorer är. VirtualBoxemulerar hårdvara för operativsystem *, och de system som det emulerar har inte så mycket direkt interaktion med värdsystemet. WoW64 är en kompatibilitetsskiktet genom att det låter 32-bitars program köras på 64-bitars Windows på ett mer integrerat sätt. WoW64 hjälper till att göra program kompatibel hellre änemulera dem i en isolerad miljö.
en översättning bibliotek är en komponent i kompatibilitetsskikt. 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-räknarna eftersom vissa samtal som var förnuftiga i TI-83s arkitektur kanske inte längre är giltiga i TI-83/84 +. Ett översättningsbibliotek (antagligen inkluderat i skal som MirageOS) säkerställer att samtal till TI-83 går till de nya, uppdaterade platserna i TI-83/84 + -räknarna.
Plattformsoberoende kod är skrivet på ett språk som är tolkas av något som vanligtvis löper nationellt. PHP är till exempel ett programmeringsspråk som tolkas och exekveras av det installerade PHP-binäret, som redan har sammanställts natively för Windows, Mac och Unix-baserade operativsystem. PHP-koden 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.