Compatibilità dei programmi - Sistema operativo che può eseguire qualsiasi cosa? [chiuso]

1

So che i programmi che sono costruiti su un SO non funzioneranno su un altro, come un programma Windows su una distribuzione Linux, e che ci sono programmi che traducono tali chiamate di sistema in chiamate di sistema che il sistema operativo attuale può leggere (Wine per Linux). Tuttavia sarebbe teoricamente possibile che esistesse un sistema operativo in grado di comprendere le chiamate di sistema originali per i programmi creati per i tre sistemi operativi principali (Windows, Linux e Mac OS X)?

    
posta Joseph Roberts 17.11.2014 - 04:40
fonte

2 risposte

4

Windows NT è stato specificamente progettato per supportare più "personalità" del sistema operativo. Infatti, originariamente non era nemmeno inteso come una sostituzione drop-in per Windows e DOS, era inteso come una sostituzione drop-in per OS / 2!

Su Windows NT, le applicazioni non sono scritte contro il kernel NT, ma sono scritte contro una personalità del sistema operativo, che a sua volta si trova in cima al kernel NT. Il Windows NT originale fornito con 4 personalità: Win32 / WinNT, DOS / Win16, OS / 2 e Unix. Ciò significava che non si potevano eseguire solo applicazioni Windows NT, si potevano anche eseguire applicazioni DOS, applicazioni OS / 2 e persino applicazioni Unix non modificate. Oggigiorno, la personalità di OS / 2 viene rimossa e la personalità di Unix viene spedita separatamente.

Molti sistemi Unix hanno strutture simili. All'inizio, quando Linux era "il nuovo capretto sul blocco", Linux doveva essere in grado di eseguire applicazioni per altri Unix se voleva essere praticabile. Durante quel periodo, il supporto per l'aggiunta di applicazioni Unix esterne è stato aggiunto a Linux, ad esempio Intel ha sviluppato iBCS, che consentiva ai sistemi Linux di eseguire ogni tipo di applicazioni Unix (Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware , USL, Dell ecc.), SVR3 generico, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286). Esiste anche il modulo binfmt_misc , che consente a Linux di eseguire applicazioni scritte contro gli ABI arbitrari , trasferendoli in un programma userspace che li interpreta.

Al giorno d'oggi, è il contrario: Linux è il giocatore affermato, e gli altri Unici implementano la compatibilità ABI con Linux. HP / UX, IBM AIX, FreeBSD e molti altri possono eseguire applicazioni Linux non modificate.

Sarebbe abbastanza facile per Apple sviluppare una personalità OSX per Windows NT. Microsoft potrebbe anche sviluppare una versione di Windows NT che funziona come una personalità su Mach accanto a OSX. Però, se quelle aziende lo farebbero è una questione completamente diversa, però.

    
risposta data 17.11.2014 - 14:23
fonte
-5

Il fatto è che i MAC e i PC sono fondamentalmente diversi dall'hardware, in termini di architettura della CPU. I compilatori, peraltro, non sono altro che strumenti di traduzione che riscrivono il tuo codice da un linguaggio di programmazione astratto di alto livello a "parole" di basso livello (gruppi di bit effettivi) che il processore sta leggendo ed eseguendo all'interno della sua architettura hardware logica. In queste circostanze, ciò che stai suggerendo sarebbe come avere qualcuno che non sa nemmeno che il latino è (era) una lingua, fare operazioni matematiche complesse usando numeri latini.

Esistono alcuni approcci al problema della cross-compatibilità - ad esempio, la Java Virtual Machine (JVM) è un software che dipende in sé stesso dall'architettura e dal sistema operativo della macchina su cui risiede, ma offre a l'altra estremità è una "interfaccia" per CPU, hardware e componenti di sistema, che è la stessa per tutte le architetture, consentendo alle applicazioni Java di comportarsi allo stesso modo in vari ambienti.

Il problema con questo, tuttavia, è che il livello di traduzione offerto dalla JVM deve usare risorse aggiuntive ed eseguire un'ulteriore elaborazione oltre alle sole istruzioni della tua applicazione, al fine di tradurre le istruzioni nella lingua che la CPU nativa comprende - degradando così le prestazioni generali.

    
risposta data 17.11.2014 - 13:44
fonte

Leggi altre domande sui tag