Qualche differenza di base tra Unix e Linux nel design e in altri aspetti? [chiuso]


24

Continuo a leggere questa frase:

Linux è un sistema simile a Unix, ma non è Unix.

Non so quale sia la vera differenza tra i due. So che Linux ha avuto molte idee da Unix e le licenze dei due sono diverse. A parte questo, poiché non sono un esperto di nessuno dei due, voglio sapere se ci sono differenze fondamentali tra loro nel design o in altri aspetti significativi.


2
ti dispiacerebbe chiarire dove l'hai letto? la ricerca sul Web mi mostra Linux Kernel Development (3a edizione) di Robert Love, vero?
moscerino del

Risposte:


30

Un sistema "Unix like" può essere pienamente conforme alla specifica UNIX singola , il nome collettivo di standard per ciò che si qualifica come un sistema Unix, ma allo stesso tempo Unix è un marchio registrato di The Open Group e i fornitori di sistemi come Unix necessitano ottenere la registrazione dei propri sistemi per qualificarsi ufficialmente come Unix. Attualmente i sistemi UNIX 03 registrati sono:

  • Apple Inc .: Mac OS X versione 10.5 Leopard su computer Macintosh basati su Intel
  • Apple Inc .: Mac OS X versione 10.6 Snow Leopard su computer Macintosh basati su Intel
  • Fujitsu Limited: sistema operativo Solaris ™ 10 su piattaforme Fujitsu PRIMEPOWER® basate su SPARC® a 64 bit
  • Hewlett-Packard Company: HP-UX 11i V3 versione B.11.31 o successiva sui server HP Integrity
  • IBM Corporation: AIX 5L per POWER V5.2 datato 8-2004 o successivo con APAR: IY59610, IY60869, IY61405 con VAC 6.0.0.8 o successivo sui sistemi pSeries CHRP
  • IBM Corporation: AIX 5L per POWER V5.3 del 7-2006 o successivo su sistemi che utilizzano l'architettura di sistema CHRP con processori POWER ™
  • IBM Corporation: Sistema operativo AIX 6 V6.1.2 con SP1 o successivo su sistemi che utilizzano l'architettura di sistema CHRP con processori POWER ™ e schede asincrone a 2, 8 o 128 porte
  • Oracle Corporation: Oracle Solaris 11 FCS e versioni successive su piattaforme basate su SPARC, a 32 e 64 bit e su piattaforme basate su X86, a 32 e 64 bit
  • Oracle Corporation: Sistema operativo Solaris 10 più patch 118844-06 per X86 e successivi, su sistemi X86 a 64 bit
  • Oracle Corporation: sistema operativo Solaris 10 e versioni successive, su sistemi SPARC a 32 e 64 bit
  • Oracle Corporation: sistema operativo Solaris 10 e versioni successive, su sistemi X86 a 32 bit

I venditori di sistemi Unix open source (principalmente Linux e FreeBSD) in genere non si registrano con The Open Group, né per evitare i costi della certificazione o, beh, perché non trovano molto valore nel farlo. In teoria, è del tutto possibile che un sistema simile a Unix sia tecnicamente Unix e tutto ciò che manca è la certificazione.

La Linux Foundation, d'altra parte, ha creato la Linux Standard Base , uno standard ISO , nel tentativo di standardizzare Linux. La conformità con POSIX è al centro sia di SUS che di LSB, mantenendo in qualche modo il legame tra Unix e Linux.

I sistemi Unix e Unix tendono ad essere più simili che diversi, in teoria tutti i gusti Unix più diffusi, registrati o meno, sono conformi POSIX (completi o per lo più), quindi condividono un'interfaccia di programmazione di base, shell e utility (e molti altri cose). IEEE e The Open Group mantengono una copia disponibile gratuitamente dell'ultima versione, POSIX.1-2008 , dove è possibile trovare ulteriori informazioni sul significato effettivo della conformità POSIX.

Ora, a parte le ragioni legali e tecniche, Linux ha ereditato il mantra "non Unix" dalla sua associazione con GNU , un sistema operativo simile a Unix avviato da Richard Stallman. GNU sta per "GNU's not Unix", poiché le intenzioni di Stallman erano di costruire un sistema compatibile con Unix che fosse gratuito, e per farlo non dovrebbe contenere codice Unix, poiché Unix è proprietario.

I primi sviluppatori Linux iniziarono a trasferire gli strumenti GNU su Linux e il sistema risultante fu chiamato GNU / Linux già nel 1992 . C'è una controversia di lunga durata sul fatto che Linux debba essere indicato come Linux o GNU / Linux (in quanto incorpora diverse parti di GNU), ma questo è irrilevante per la tua domanda, ciò che è rilevante è che "non Unix" può semplicemente fare riferimento all'associazione con GNU e hanno poco a che fare con il suo design, a seconda del contesto.

L'articolo "Storia di Linux" su Wikipedia spiega le origini di Linux e le sue relazioni con Unix (tramite Minix e GNU) in dettaglio, e dovresti anche prenderti del tempo per leggere i riferimenti dell'articolo, se sei interessato a saperne di più.


buona risposta, aspetterò e vedrò se scegli la tua come mia risposta :)
Gnijuohz

8
@Gnijuohz Non abbiate fretta di accettare le risposte, lasciate sempre maturare la vostra domanda per un giorno o due (o più, se volete), potreste ottenere grandi risposte da persone che non si preoccuperebbero di rispondere se vedessero che avete già accettato un risposta. Accettare una risposta dipende completamente da te, non devi nemmeno accettare se nessuna delle risposte ti è stata utile, indipendentemente dal modo in cui la community ha risposto.
yannis,

1
Interessante, a quanto pare l'ultima versione di OS X non è "ufficialmente" UNIX.
Kris Harper,

@ root45 È prevedibile, poiché è necessario del tempo per verificare la conformità di una versione.
yannis,

@YannisRizos Ah ok. Ciò ha senso. Grazie per l'informazione.
Kris Harper,

4

UNIX è una famiglia di sistemi operativi e oggigiorno UNIX è più un marchio di proprietà di The Open Group. Affinché un sistema operativo sia marchiato UNIX, deve essere sottoposto a un test di conformità e per Linux ciò significherebbe che ogni distribuzione là fuori (Ubuntu, Debian, Fedora, Red Hat, ecc.) Dovrebbe sottoporsi separatamente a questo test di conformità per ogni versione . Quindi questo è uno dei motivi principali per cui Linux è un sistema simile a unix e non un UNIX.

Questo test che ho citato è per garantire la conformità del sistema operativo con la specifica Unix singola, che è attualmente alla versione 4 SUSv4 (specifica unica Unix versione 4). Questa specifica definisce un set di API che devono essere disponibili per le applicazioni affinché un sistema sia qualificato per il nome UNIX.


È un buon standard da seguire? Gli autori di Linux ci provano?
Giobbe

1
È uno standard buono ma incompleto. I contributori del kernel Linux provano a seguire questo standard e Linux può essere considerato ufficiosamente un sistema UNIX. Se stai sviluppando un'applicazione contro gli standard Unix, probabilmente verrà compilata ed eseguita su un sistema Linux. Sfortunatamente, come ho detto prima, UNIX è piuttosto incompleto per alcuni aspetti, quindi i sistemi operativi forniscono API aggiuntive per alcune attività e questo è ciò che rende dipendenti dalla piattaforma alcune applicazioni poiché queste API aggiuntive tendono a variare.
Raphael

C'era una distribuzione chiamata Linux-FT che ha avviato il processo di certificazione POSIX, ma non sorprende che gli sponsor abbiano finito i soldi. ukuug.org/newsletter/linux-newsletter/linux@uk12/ftinfo.shtml

Grazie per queste informazioni! Mi chiedevo sempre se qualcuno là fuori avesse mai provato a certificare una distribuzione.
Raffaello,

3

Le risposte esistenti menzionano già alcune delle differenze che stai cercando. Senza essere un esperto del kernel Linux, aggiungerei anche che molte delle differenze di progettazione / implementazione tra GNU / Linux e i vari Unices sono coperte nella serie dei modelli di progettazione del kernel Linux .


2

"UNIX" è una cosa complicata da definire. In termini di conformità agli standard, sia Solaris che Mac OS X sono UNIX "ufficialmente", ma non è necessario passare molto tempo prima di trovare differenze piuttosto grandi tra i due. C'è un ottimo diagramma che documenta il rilascio di vari tipi di sistemi operativi UNIX o simili a UNIX e il modo in cui si sono influenzati e si sono differenziati gli uni dagli altri.

Nel grande schema di cose che sembrano, camminano e cullano come UNIX, un sistema Linux [*] è una delle versioni più convenzionali. È abbastanza comune per le persone fare riferimento a Unices o * nix e significa "qualsiasi cosa simile a UNIX", che probabilmente include Linux. Tuttavia UNIX è un marchio registrato con limitazioni su come può essere applicato commercialmente; nessuna distribuzione Linux è conforme a tali limiti.

[*] Poiché questa domanda invita a un livello di divisione dei capelli semantica, penso che sia in tema in questo caso sottolineare che Linux stesso è solo un kernel su cui è possibile costruire un sistema operativo. È comune costruire un sistema simile a UNIX su Linux, che è quello per cui è stato progettato, e quel sistema è solitamente costruito con componenti di progetto GNU. Nella risposta sopra "Linux" potrebbe essere letto come una scorciatoia per "un sistema operativo che incorpora il kernel Linux".


@YannisRizos Aggiungerò un riferimento alla risposta, sicuramente è certificato.

Sì, hai assolutamente ragione, da Leopard in poi Mac OS è certificato UNIX 03 ed ecco un altro riferimento .
yannis,

2

Una volta ho letto che Linux è quello che ottieni quando prendi uno sviluppatore di PC e gli chiedi di scrivere un sistema operativo Unix, mentre FreeBSD è ciò che ottieni quando prendi uno sviluppatore di Unix e gli chiedi di creare un sistema operativo PC ... don ' dimentica i BSD nel tuo confronto!

Le differenze sono principalmente nel kernel poiché le applicazioni per lo spazio utente (comprese cose come ls) fanno tutte parte del progetto GNU. Ciò significa che Unix, FreeBSD e Linux sembrano essere praticamente la stessa cosa.

Tuttavia, ci sono differenze una volta che osservi attentamente. Il layout della directory sarà diverso (ma molte distribuzioni Linux usano i loro layout per lo più compatibili ma comunque diversi), i filesystem sono diversi (Unix usa UFS, FreeBSD usa FFS, Linux usa Ext3 per essere semplicistico - tutti possono usare le porte di FS comuni, ad es. ZFS)

Quindi ci sono differenze nelle API principali, Linux ti darà l' API di inotify per dirti quando i file cambiano, Mac OSX ti dà FSEvents e FreeBSD ti dà kqueue .

Quindi possono essere considerati la stessa famiglia: confronta un sistema Windows con gli strumenti GNU portati su di esso con un sistema Linux con gli stessi strumenti. Appariranno solo superficialmente uguali, ma un sistema Unix o FreeBSD apparirà comunque comparabile. A prima vista, troverai le app di porting tra FreeBSD, Unix e Linux relativamente facili rispetto al porting su sistemi operativi alternativi come Windows.


1

Unix non è più un singolo sistema operativo. Prima era un'implementazione di Bell Labs / AT&T ma ora è uno standard.

Tecnicamente, Linux è solo un kernel. Questo kernel può essere trovato in sistemi operativi non Unix, il più popolare è Android. D'altra parte, ci sono molti sistemi operativi basati su Linux simili a Unix. Molti (se non tutti) usano le librerie e le utility di Gnu. Questa combinazione fornisce alle distribuzioni Linux l'API Unix e la conformità (o non conformità) agli standard.

Lo standard Unix non richiede che un sistema conforme sia proprietario o non abbia una licenza particolare. BSD, OpenSolaris / Illumos, darwin sono esempi di implementazioni Unix non ancora libere di Linux.

I sistemi compatibili di solito sono, ma non sempre, un mix di componenti proprietari e open source mentre Gnu / Linux può essere completamente Open Source o includere anche cose proprietarie.

Per quanto riguarda la conformità Unix, non ci sono molte differenze. La maggior parte delle distribuzioni Linux e delle implementazioni Unix condividono lo stesso set di comandi usando lo stesso set di opzioni. Tuttavia, troverai molte estensioni dei comandi standard, specialmente sul lato Gnu in cui sono chiamati Gnuisms, e numerosi comandi che non sono definiti dagli standard in primo luogo (compilatori, comandi amministrativi, installazione, packaging, ambiente grafico). Questa è un'area in cui puoi trovare molte divergenze, incompatibilità e talvolta guerre sante.

Il modello di sviluppo Gnu / Linux è generalmente considerato più "organico" e "simile a bazar", mentre altri sistemi simili a Unix sono più "progettati" e simili a "cattedrale". A seconda dei sottosistemi, la differenza non è molto chiara e dipende dalle persone e / o dalle aziende che li stanno dietro.


1

Linux viene fornito con molti strumenti come:

  • Sistema di interfaccia grafica
  • Utilità GNU (come cp, mv, ls, date, bash ecc)
  • strumenti di installazione e gestione
  • Compilatori GNU C / C ++
  • Redattori (vi)
  • e varie applicazioni (come OpenOffice, Firefox).

Tuttavia, la maggior parte dei sistemi operativi UNIX sono considerati come un sistema operativo completo poiché tutto proviene da un singolo fornitore o fonte.

Alcune cose che condividono:

  • Gestori di GUI, file e windows (KDE, Gnome)
  • Conchiglie (ksh, csh, bash)
  • Varie applicazioni per ufficio come OpenOffice.org
  • Strumenti di sviluppo (compilatori perl, php, python, GNU C / C ++)
  • Interfaccia POSIX

Linux si espande anche sulla filosofia Unix ...
Giobbe

2
Linux non è solo un kernel, il kernel Linux è, beh, il kernel. Linux di solito si riferisce a un sistema completo costruito attorno al kernel Linux.
yannis,

@Anonimo: a volte, se modifichi e correggi la tua risposta, i downvoter possono rimuovere il downvote. Non è garantito, ma a volte aiuta. (Non ho votato a fondo, sto solo cercando di essere d'aiuto) :) Il resto della tua risposta è corretta, IMHO, quindi liberarti della discrepanza può aiutarti a ottenere alcuni voti / evitare altri voti.
jmort253,

-7

Non proprio, dopo tutto Linux era un insieme di reverse engineering di Unix, quindi il design del kernel seguiva la filosofia di Ken Thompson. Il modo in cui Linux sembra essere quello di imitare la filosofia Unix il più vicino possibile senza mai gravare sul sé con il pensiero originale.


@YannisRizos Cosa intendi con "ma non è stato davvero utilizzabile". AFAIK era completamente utilizzabile, ma poiché è stato scritto in assembly PDP, è stato difficile portarlo in altre architetture.
sakisk,

@ samual-johnson -1 Perché non esegui il backup delle tue dichiarazioni con riferimenti. È la prima volta che sento parlare della "filosofia di Ken Thompson" (ed è Thompson, non Thomson).
sakisk,

1
@faif Controllando i miei riferimenti, il kernel rudimentale a cui mi riferivo era scritto per il GE-645 e non per il PDP, quindi è stato un tratto chiamarlo kernel Unix. Ho eliminato il commento, poiché il punto principale riguardava comunque la mancanza di riferimenti e il tuo commento è sufficiente per trasmettere quel messaggio. - Samual, per favore, prenditi del tempo per eseguire il backup dei tuoi reclami con riferimenti solidi o per rivederli in qualcosa di meno basato sull'opinione.
yannis,

@YannisRizos Interessante. Non ho sentito parlare di GE-645, che secondo Wikipedia era una versione migliorata di Multics. Grazie per le informazioni.
sakisk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.