/ / Vad betyder det att programvara körs nativt?

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

När människor hänvisar till att köra inbyggd programvara, emulering och programvarukompatibilitet, vad refererar de egentligen till? Läs vidare när vi fördjupar begreppet inbyggd programvara.

Dagens fråga & svar session kommer till oss med tillstånd av SuperUser - en underavdelning av Stack Exchange, en samhällsstyrd gruppering av frågor och svar på webbplatser.

Frågan

SuperUser-läsaren Throsby är nyfiken på vad det innebär att köra programvara naturligt. Han skriver:

Jag har undrat vad det betyder för programvara att görakör nativt. Vad exakt är sådan programvara och hur skiljer den sig från programvara som inte körs infödda? Hur kan jag veta om en viss programvara kommer att köras på min dator? Kanske det finns mjukvara redan på min dator som körs infödda?

Läs vidare för en utmärkt analogi som förklarar exakt vad det betyder att vara infödda på ett givet system.

Svaret

SuperUser-bidragsgivaren Deltik erbjuder en fantastisk analogi som belyser vad det betyder för programvara att vara infödda och vilken typ av annan programvara man kan hitta på ett givet system:

En mjukvara är inhemsk till en plattform om den var utformad för att köras på den plattformen.

En plattform hänvisar vanligtvis 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å Game Boy.

emulatorer är ett lager som tillåter programvara designad för enplattform som ska köras på en annan. Till exempel finns det emulatorer som kan köra bilder av Game Boy-patroner och låta dig spela Game Boy-spel på din dator eller till och med din mobiltelefon.

EN kompatibilitetslager är typ av en emulator. När 64-bitars datorer och operativsystem blev mainstream, behövde de vara kompatibla med befintlig 32-bitars teknik. Eftersom 64-bitars och 32-bitarsarkitekturer är mycket olika, behövs ofta ett kompatibilitetslager för att köra 32-bitars programvara på 64-bitars maskiner. För 64-bitarsutgåvor av Microsoft Windows behövde Microsoft skriva ett kompatibilitetslager så att 32-bitarsprogram fortfarande skulle fungera på det nya 64-bitarssystemet. Det är därför som vissa program ofta installeras i en mapp som heter Program Files (x86), var x86 betyder "32-bit".

Kompatibilitetslager tenderar att vara mer intima med det ursprungliga systemet än emulatorer är. VirtualBoxemulerar hårdvara för operativsystem *, och de system som den emulerar har inte mycket direkt interaktion med värdsystemet. WoW64 är en kompatibilitetslager genom att det låter 32-bitarsprogram köras på 64-bitars Windows på ett mer integrerat sätt. WoW64 hjälper till att skapa program kompatibel hellre änemulera dem i en isolerad miljö.

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

Plattformoberoende kod är skriven på ett språk som är tolkas av något som vanligtvis körs infödda. Till exempel är PHP ett programmeringsspråk som tolkas och körs av den installerade PHP-binären, som redan har sammanställts natively för Windows-, Mac- och Unix-baserad driftsystem. PHP-koden som webbskriptare skriver är oberoende av plattformen, vilket gör att koden kan fungera på flera operativsystem så länge PHP är installerat för dessa operativsystem.


Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniska kunniga Stack Exchange-användare? Kolla in hela diskussionstråden här.