9Aug
Lorsque les gens se réfèrent à l'exécution de logiciels natifs, à l'émulation et à la compatibilité logicielle, à quoi font-ils exactement référence? Continuez à lire comme nous plonger dans le concept de logiciel natif.
Question d'aujourd'hui &La session de réponse nous vient avec la permission de SuperUser - une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.
La question Lecteur
SuperUser Throsby est curieux de savoir ce que signifie exécuter nativement des logiciels. Il écrit:
Je me demandais ce que cela signifie pour un logiciel de fonctionner en mode natif. Qu'est-ce qu'un tel logiciel et comment est-il différent d'un logiciel qui ne fonctionne pas nativement? Comment puis-je savoir si un logiciel donné fonctionnera nativement sur mon ordinateur? Est-ce qu'il y a probablement un logiciel qui fonctionne déjà sur mon ordinateur fonctionnant en mode natif?
Lisez la suite pour une excellente analogie expliquant exactement ce que signifie être natif sur un système donné.
La réponse
SuperUser contributeur Deltik offre une analogie fantastique qui met en évidence ce que signifie pour un logiciel d'être natif et quel genre d'autres logiciels on pourrait trouver sur un système donné:
Un logiciel est natif à une plate-forme si elle a été conçue pour fonctionnercette plate-forme.
Une plate-forme se réfère généralement à un système d'exploitation, mais elle peut également être appliquée à des appareils tels que le Nintendo Game Boy.
En utilisant le Game Boy comme exemple, il obtient son logiciel à partir de cartouches. Ces cartouches contiennent du code qui exécute nativement sur le Game Boy.
Les émulateurs sont une couche qui permet à un logiciel conçu pour une plate-forme d'être exécuté sur une autre. Par exemple, il existe des émulateurs capables d'exécuter des images de cartouches Game Boy et de jouer à des jeux Game Boy sur votre ordinateur ou même sur votre téléphone portable.
A couche de compatibilité est un peu comme un émulateur. Lorsque les ordinateurs 64 bits et les systèmes d'exploitation sont devenus courants, ils devaient être compatibles avec les technologies 32 bits existantes. Comme les architectures 64 bits et 32 bits sont très différentes, une couche de compatibilité est souvent nécessaire pour exécuter un logiciel 32 bits sur des machines 64 bits. Pour les éditions 64 bits de Microsoft Windows, Microsoft devait écrire une couche de compatibilité pour que les programmes 32 bits continuent de fonctionner sur le nouveau système 64 bits. C'est pourquoi certains programmes sont souvent installés dans un dossier appelé Program Files( x86), où x86 signifie «32 bits».
Les couches de compatibilité ont tendance à être plus intimes avec le système natif que les émulateurs. VirtualBox émule le matériel pour les systèmes d'exploitation *, et les systèmes qu'il émule n'ont pas beaucoup d'interaction directe avec le système hôte. WoW64 est une couche de compatibilité en ce sens qu'elle permet aux programmes 32 bits de s'exécuter de manière plus intégrée sur Windows 64 bits. WoW64 aide à rendre les programmes compatibles plutôt qu' en les émulant dans un environnement isolé.La bibliothèque de traduction
A est un composant des couches de compatibilité.Lorsque le code binaire s'exécute de manière non native, une bibliothèque de traduction permet de rediriger les appels étrangers non natifs vers des appels natifs que le système peut comprendre. Les programmes d'assemblage écrits pour la TI-83 d'origine peuvent ne pas être compatibles avec les nouvelles calculatrices TI-83/84 Plus car certains appels ayant un sens dans l'architecture de la TI-83 peuvent ne plus être valides dans la TI-83/84 +.Une bibliothèque de traduction( probablement incluse dans des coquilles comme MirageOS) assure que les appels pour la TI-83 vont aux nouveaux endroits mis à jour dans les calculatrices TI-83/84 +.
Le code indépendant de la plate-forme est écrit dans un langage interprété par quelque chose qui s'exécute habituellement en mode natif. Par exemple, PHP est un langage de programmation interprété et exécuté par le binaire PHP installé, qui a déjà été compilé nativement pour les systèmes d'exploitation Windows, Mac et Unix. Le code PHP que les scripteurs Web écrivent est indépendant de la plate-forme, ce qui permet au code de fonctionner sur plusieurs systèmes d'exploitation tant que PHP est installé pour ces systèmes d'exploitation.
Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.