Hvad betyder det for software at køre indfødt?
Når folk refererer til at køre indbygget software, emulering og softwarekompatibilitet, hvad henvises der til? Læs videre som vi dykker ind i begrebet native software.
Dagens Spørgsmål og Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.
Spørgsmålet
SuperUser læser Throsby er nysgerrig om, hvad det betyder at køre software indbygget. Han skriver:
Jeg har spekuleret på, hvad det betyder for software at køre indfødt. Hvad er netop sådan software, og hvordan adskiller den sig fra software, der ikke kører indfødt? Hvordan kan jeg vide, om et bestemt stykke software vil køre indbygget på min computer? Er der sandsynligvis software allerede på min computer, der kører indbygget?
Læs videre for en fremragende analogi, der forklarer præcis, hvad det betyder at være hjemmehørende på et givet system.
Svaret
SuperUser bidragyder Deltik tilbyder en fantastisk analogi, der fremhæver hvad det betyder for software at være hjemmehørende og hvilken anden software man kan finde på et givet system:
En software er indbygget i en platform, hvis den blev designet til at køre på den platform.
En platform refererer normalt til et operativsystem, men det kan også anvendes til enheder som Nintendo Game Boy.
Brug af Game Boy som et eksempel, det får sin software fra patroner. Disse patroner indeholder kode, der kører indbygget på Game Boy.
Emulatorer er et lag, der tillader software designet til en platform at blive kørt på en anden. For eksempel er der emulatorer, der kan udføre billeder af Game Boy-patroner og give dig mulighed for at spille Game Boy-spil på din computer eller endda din mobiltelefon.
EN kompatibilitetslag er lidt som en emulator. Når 64-bit computere og operativsystemer blev almindelige, skulle de være kompatible med de eksisterende 32-bit teknologier. Da 64-bit og 32-bit arkitekturer er meget forskellige, er der ofte brug for et kompatibilitetslag til at køre 32-bit software på 64-bit-maskiner. For 64-bit udgaver af Microsoft Windows havde Microsoft brug for at skrive et kompatibilitetslag, så 32-bit-programmer stadig ville arbejde på det nye 64-bit-system. Derfor installeres nogle programmer ofte i en mappe, der hedder
Programfiler (x86)
, hvorx86
betyder "32-bit".Kompatibilitetslag tendens til at være mere intimt med det native system end emulatorer er. VirtualBoxemulerer hardware til operativsystemer *, og de systemer, som det emulerer, har ikke meget direkte interaktion med værtssystemet. WoW64 er en kompatibilitetslag ved at det lader 32-bit programmer køre på 64-bit windows på en mere integreret måde. WoW64 hjælper med at lave programmer kompatibel hellere endefterligne dem i et isoleret miljø.
EN oversættelsesbibliotek er en komponent af kompatibilitetslag. Når binær kode kører ikke-indbygget, hjælper et oversættelsesbibliotek med at omdirigere udenlandske, ikke-oprindelige opkald til indgående opkald, som systemet kan forstå. Monteringsprogrammer, der er skrevet til den oprindelige TI-83, er muligvis ikke kompatible med de nyere TI-83/84 Plus-regnemaskiner, fordi nogle opkald, der har betydning i TI-83s arkitektur, ikke længere er gyldige i TI-83/84 +. Et oversættelsesbibliotek (sandsynligvis inkluderet i skaller som MirageOS) sikrer, at opkald til TI-83 går til de nye, opdaterede steder i TI-83/84 + -regnemaskinerne.
Platform-uafhængig kode er skrevet på et sprog, der er fortolket af noget der normalt kører indfødt. For eksempel er PHP et programmeringssprog, der tolkes og udføres af det installerede PHP-binære, som allerede er udarbejdet indbygget til Windows, Mac og Unix-baserede operativsystemer. PHP-koden, som webscripters skriver, er uafhængige af platformen, så koden kan fungere på flere operativsystemer, så længe PHP er installeret til disse operativsystemer.
Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.