Gibt es einen grundsätzlichen Unterschied zwischen Unix und Linux in Bezug auf Design und andere Aspekte? [geschlossen]

24

Ich lese diesen Satz weiter:

Linux ist ein Unix-ähnliches System, aber es ist kein Unix.

Ich weiß nicht, was der wahre Unterschied zwischen den beiden ist. Ich weiß, Linux hat viele Ideen von Unix und die Lizenzen der beiden sind unterschiedlich. Abgesehen davon, da ich in keinem von beiden Experte bin, möchte ich wissen, ob es grundlegende Unterschiede im Design oder in anderen wichtigen Aspekten gibt.

Gnijuohz
quelle
2
Würde es Ihnen etwas ausmachen zu klären, wo Sie das gelesen haben? Web-Suche zeigt mir Linux Kernel Development (3rd Edition) von Robert Love, ist es das?
Mücke

Antworten:

30

Ein "Unix-ähnliches" System entspricht möglicherweise in vollem Umfang der Single UNIX Specification , der Sammelbezeichnung für Standards, die als Unix-System gelten. Gleichzeitig ist Unix ein eingetragenes Warenzeichen von The Open Group und die von Unix-ähnlichen Systemen benötigten Anbieter um ihre Systeme offiziell als Unix zu qualifizieren. Derzeit sind die registrierten UNIX 03-Systeme :

  • Apple Inc .: Mac OS X Version 10.5 Leopard auf Intel-basierten Macintosh-Computern
  • Apple Inc .: Mac OS X Version 10.6 Snow Leopard auf Intel-basierten Macintosh-Computern
  • Fujitsu Limited: Solaris ™ 10-Betriebssystem auf Fujitsu PRIMEPOWER® 64-Bit SPARC®-basierten Plattformen
  • Hewlett-Packard Company: HP-UX 11i V3 Version B.11.31 oder höher auf HP Integrity Servern
  • IBM Corporation: AIX 5L für POWER V5.2 vom 8-2004 oder höher mit APARs: IY59610, IY60869, IY61405 mit VAC 6.0.0.8 oder höher auf pSeries CHRP-Systemen
  • IBM Corporation: AIX 5L für POWER V5.3 ab Version 7-2006 Systeme, die die CHRP-Systemarchitektur mit POWER-Prozessoren verwenden
  • IBM Corporation: AIX 6-Betriebssystem V6.1.2 mit SP1 oder höher Systeme mit CHRP-Systemarchitektur mit POWER-Prozessoren und Async-Karten mit 2, 8 oder 128 Anschlüssen
  • Oracle Corporation: Oracle Solaris 11 FCS und höher auf SPARC-basierten Plattformen (32-Bit und 64-Bit) und auf X86-basierten Plattformen (32-Bit und 64-Bit)
  • Oracle Corporation: Solaris 10-Betriebssystem plus Patch 118844-06 für X86 und höher auf 64-Bit-X86-basierten Systemen
  • Oracle Corporation: Solaris 10-Betriebssystem und höher, auf SPARC-basierten 32-Bit- und 64-Bit-Systemen
  • Oracle Corporation: Solaris 10-Betriebssystem und höher auf 32-Bit-X86-basierten Systemen

Anbieter von Open-Source-Unix-ähnlichen Systemen (hauptsächlich Linux und FreeBSD) registrieren sich normalerweise nicht bei The Open Group, um die Kosten für die Zertifizierung zu vermeiden, oder, naja, weil sie nicht viel Wert darauf legen. Theoretisch ist es durchaus möglich, dass ein Unix-ähnliches System technisch gesehen Unix ist und nur eine Zertifizierung fehlt.

Die Linux Foundation hat dagegen die Linux Standard Base , einen ISO-Standard , geschaffen, um Linux zu standardisieren. Die Einhaltung von POSIX ist das Herzstück sowohl von SUS als auch von LSB und stellt in gewisser Weise die Verbindung zwischen Unix und Linux her.

Unix- und Unix-ähnliche Systeme sind in der Regel eher ähnlich als unterschiedlich. Theoretisch sind alle gängigen Unix-Varianten, ob registriert oder nicht, POSIX-kompatibel (vollständig oder größtenteils), sodass sie eine zentrale Programmierschnittstelle, Shells und Dienstprogramme (und viele andere) gemeinsam haben Zeug). IEEE und The Open Group führen eine frei verfügbare Version der neuesten Version POSIX.1-2008 , in der Sie weitere Informationen darüber finden, was POSIX-Konformität tatsächlich bedeutet.

Abgesehen von den rechtlichen und technischen Gründen hat Linux das Mantra "Nicht-Unix" von seiner Verbindung mit GNU geerbt , einem Unix-ähnlichen Betriebssystem, das von Richard Stallman initiiert wurde. GNU steht für "GNU's not Unix", da Stallman beabsichtigte, ein Unix-kompatibles System zu bauen, das kostenlos ist, und um dies zu tun, sollte es keinen Unix-Code enthalten, da Unix proprietär ist.

Frühe Linux-Entwickler portierten GNU-Tools nach Linux, und das resultierende System wurde bereits 1992 als GNU / Linux bezeichnet . Es gibt eine lang anhaltende Kontroverse darüber, ob Linux als Linux oder GNU / Linux bezeichnet werden sollte (da es mehrere Teile von GNU enthält), aber das ist für Ihre Frage irrelevant. Was relevant ist, ist, dass sich "nicht Unix" möglicherweise nur auf die Assoziation bezieht mit GNU und haben wenig mit dem Design zu tun, je nach Kontext.

In dem Artikel "Geschichte von Linux" auf Wikipedia werden die Ursprünge von Linux und seine Beziehung zu Unix (über Minix und GNU) ausführlich erläutert. Wenn Sie daran interessiert sind, sollten Sie sich auch etwas Zeit nehmen, die Referenzen des Artikels durchzulesen mehr lernen.

yannis
quelle
Gute Antwort, ich werde abwarten, ob Sie als meine Antwort wählen :)
Gnijuohz
8
@Gnijuohz Akzeptieren Sie Antworten nicht zu schnell. Lassen Sie Ihre Frage immer ein oder zwei Tage lang reifen (oder mehr, wenn Sie möchten). Möglicherweise erhalten Sie großartige Antworten von Leuten, die sich nicht die Mühe machen zu antworten, wenn sie sehen, dass Sie bereits eine angenommen haben Antworten. Das Akzeptieren einer Antwort liegt ganz bei Ihnen. Sie müssen nicht einmal akzeptieren, wenn keine der Antworten für Sie hilfreich war, unabhängig davon, wie die Community darauf reagiert hat.
Yannis
1
Interessanterweise ist anscheinend die neueste Version von OS X nicht "offiziell" UNIX.
Kris Harper
@ root45 Das ist zu erwarten, da einige Zeit erforderlich ist, um eine Version auf Kompatibilität zu überprüfen.
Yannis
@YannisRizos Ah okay. Das macht Sinn. Danke für die Information.
Kris Harper
4

UNIX ist eine Familie von Betriebssystemen und heutzutage ist UNIX eher eine Marke von The Open Group. Damit ein Betriebssystem mit der Marke UNIX versehen werden kann, muss es einem Konformitätstest unterzogen werden. Unter Linux würde dies bedeuten, dass jede Distribution (Ubuntu, Debian, Fedora, Red Hat usw.) diesen Konformitätstest für jede Version separat durchführen muss . Dies ist einer der Hauptgründe, warum Linux ein Unix-ähnliches System und kein UNIX ist.

Diese Tests, die ich erwähnt habe, sollen sicherstellen, dass das Betriebssystem der Single Unix-Spezifikation entspricht, die derzeit Version 4 von SUSv4 (Single Unix-Spezifikation, Version 4) ist. Diese Spezifikation definiert eine Reihe von APIs, die für Anwendungen verfügbar sein müssen, damit ein System für den Namen UNIX qualifiziert werden kann.

Raphael
quelle
Ist es ein guter Standard, um zu folgen? Versuchen Linux-Autoren das?
Job
1
Es ist ein guter, aber unvollständiger Standard. Die Autoren des Linux-Kernels versuchen, diesem Standard zu folgen, und Linux kann inoffiziell als UNIX-System betrachtet werden. Wenn Sie Anwendungen gemäß den Unix-Standards entwickeln, werden diese wahrscheinlich auf einem Linux-System kompiliert und ausgeführt. Leider ist UNIX, wie ich bereits sagte, unter einigen Aspekten ziemlich unvollständig, sodass die Betriebssysteme für einige Aufgaben zusätzliche APIs bereitstellen, und dies macht bestimmte Anwendungsplattformen abhängig, da diese zusätzlichen APIs in der Regel variieren.
Raphael
Es gab eine Distribution namens Linux-FT, die den POSIX-Zertifizierungsprozess startete, aber es war nicht überraschend, dass die Sponsoren kein Geld mehr hatten. ukuug.org/newsletter/linux-newsletter/linux@uk12/ftinfo.shtml
Danke für diese Info! Ich fragte mich immer, ob jemand da draußen jemals versucht hatte, eine Distribution zu zertifizieren.
Raphael
3

Die vorhandenen Antworten erwähnen bereits einige der Unterschiede, die Sie suchen. Ohne der Linux-Kernel-Experte zu sein, möchte ich auch hinzufügen, dass viele der Design- / Implementierungsunterschiede zwischen GNU / Linux und den verschiedenen Unices in der Linux-Kernel-Design Patterns- Reihe behandelt werden.

Sakisk
quelle
2

"UNIX" ist eine komplizierte Angelegenheit. In Bezug auf die Konformität mit Standards sind sowohl Solaris als auch Mac OS X "offiziell" UNIX, aber Sie müssen nicht viel Zeit aufwenden, bevor Sie große Unterschiede zwischen den beiden feststellen. Es gibt ein großartiges Diagramm , das die Veröffentlichung verschiedener Varianten von UNIX- oder UNIX-ähnlichen Betriebssystemen und deren Einfluss und Abweichung voneinander dokumentiert.

Ein Linux-System [*] ist eine der konventionelleren Versionen, die wie UNIX aussehen, laufen und quaken. Es ist durchaus üblich, dass die Leute sich auf Unices oder * nix beziehen und "irgendetwas UNIX-ähnliches" meinen, was wahrscheinlich Linux einschließt. UNIX ist jedoch eine eingetragene Marke mit Einschränkungen hinsichtlich der kommerziellen Verwendung. Keine Linux-Distribution entspricht diesen Einschränkungen.

[*] Da diese Frage zu einer semantischen Spaltung der Haare führt, denke ich, ist es in diesem Fall ein aktuelles Thema, darauf hinzuweisen, dass Linux selbst nur ein Kernel ist, auf dem ein Betriebssystem aufgebaut werden kann. Es ist üblich, ein UNIX-ähnliches System auf Linux aufzubauen, wofür es entwickelt wurde. Dieses System besteht normalerweise aus GNU-Projektkomponenten. In der obigen Antwort könnte "Linux" als Abkürzung für "ein Betriebssystem, das den Linux-Kernel enthält" gelesen werden.


quelle
@YannisRizos Ich werde einen Verweis auf die Antwort hinzufügen, es ist definitiv zertifiziert.
Ja, Sie haben vollkommen recht, ab Leopard ist Mac OS UNIX 03-zertifiziert, und hier ist eine weitere Referenz .
Yannis
2

Ich habe einmal gelesen, dass Linux das ist, was man bekommt, wenn man einen PC-Entwickler nimmt und ihn bittet, ein Unix-Betriebssystem zu schreiben, während FreeBSD das ist, was man bekommt, wenn man einen Unix-Entwickler nimmt und ihn bittet, ein PC-Betriebssystem zu erstellen. Vergessen Sie nicht die BSDs in Ihrem Vergleich!

Die Unterschiede liegen hauptsächlich im Kernel, da die Userspace-Anwendungen (einschließlich Dinge wie ls) alle Teil des GNU-Projekts sind. Dies bedeutet, dass Unix, FreeBSD und Linux fast dasselbe zu sein scheinen.

Es gibt jedoch Unterschiede, wenn Sie genau hinsehen. Das Verzeichnislayout ist unterschiedlich (aber viele Linux-Distributionen verwenden ihre eigenen, größtenteils kompatiblen, aber dennoch unterschiedlichen Layouts), die Dateisysteme sind unterschiedlich (Unix verwendet UFS, FreeBSD verwendet FFS, Linux verwendet Ext3, um zu vereinfachen - alle können Ports von verwenden gebräuchliche FSs, zB ZFS)

Dann gibt es Unterschiede bei den Kern-APIs, Linux gibt Ihnen die Inotify- API, um Sie zu informieren , wenn sich Dateien ändern, Mac OSX gibt Ihnen FSEvents und FreeBSD gibt Ihnen kqueue .

Sie können also als dieselbe Familie betrachtet werden - vergleichen Sie ein Windows-System mit GNU-Tools, die auf ein Linux-System mit denselben Tools portiert wurden. Sie werden nur oberflächlich gleich aussehen, aber ein Unix- oder FreeBSD-System wird immer noch vergleichbar aussehen. Bei näherer Betrachtung werden Sie feststellen, dass die Portierung von Apps zwischen FreeBSD, Unix und Linux im Vergleich zur Portierung auf alternative Betriebssysteme wie Windows relativ einfach ist.

gbjbaanb
quelle
1

Unix ist kein einzelnes Betriebssystem mehr. Früher war es eine Implementierung von Bell Labs / AT & T, jetzt ist es ein Standard.

Technisch gesehen ist Linux nur ein Kernel. Dieser Kernel ist in Betriebssystemen zu finden, die nicht mit Unix vergleichbar sind. Das beliebteste ist Android. Auf der anderen Seite gibt es viele Linux-basierte Betriebssysteme, die Unix-ähnlich sind. Die meisten (wenn nicht alle) verwenden die Gnu-Bibliotheken und -Dienstprogramme. Diese Kombination bietet Linux-Distributionen die Unix-API und die Einhaltung (oder Nichteinhaltung) der Standards.

Für den Unix-Standard ist es nicht erforderlich, dass ein kompatibles System proprietär ist oder eine bestimmte Lizenz besitzt. BSDs, OpenSolaris / Illumos, Darwin sind Beispiele für nicht Linux-freie Unix-Implementierungen.

Kompatible Systeme sind normalerweise, aber nicht immer, eine Mischung aus proprietären und Open Source-Komponenten, während Gnu / Linux entweder vollständig Open Source sein kann oder auch proprietäre Komponenten enthält.

In Bezug auf eine Unix-Konformität gibt es keine großen Unterschiede. Die meisten Linux-Distributionen und Unix-Implementierungen verwenden denselben Befehlssatz und dieselben Optionen. Es gibt jedoch viele Erweiterungen der Standardbefehle, insbesondere auf der Gnu-Seite, wo sie als Gnuisms bezeichnet werden, und zahlreiche Befehle, die von den Standards überhaupt nicht definiert werden (Compiler, Verwaltungsbefehle, Installation, Paketierung, grafische Umgebung). Dies ist ein Bereich, in dem es viele Unterschiede, Inkompatibilitäten und manchmal heilige Kriege gibt.

Das Gnu / Linux-Entwicklungsmodell wird normalerweise als eher "organisch" und "basarartig" angesehen, während andere Unix-ähnliche Systeme eher "entworfen" und "kathedralenartig" sind. Abhängig von den Subsystemen ist der Unterschied nicht so ausgeprägt und hängt von den Personen und / oder Unternehmen ab, die dahinter stehen.

jlliagre
quelle
1

Linux kommt mit vielen Tools wie:

  • GUI-System
  • GNU-Dienstprogramme (wie cp, mv, ls, date, bash usw.)
  • Installations- und Verwaltungstools
  • GNU C / C ++ - Compiler
  • Herausgeber (vi)
  • und verschiedene Anwendungen (wie OpenOffice, Firefox).

Die meisten UNIX-Betriebssysteme werden jedoch als vollständiges Betriebssystem betrachtet, da alles von einer Quelle oder einem Anbieter stammt.

Einige Dinge, die sie teilen:

  • GUI-, Datei- und Windows-Manager (KDE, Gnome)
  • Muscheln (ksh, csh, bash)
  • Verschiedene Office-Anwendungen wie OpenOffice.org
  • Entwicklungstools (Perl-, PHP-, Python-, GNU C / C ++ - Compiler)
  • POSIX-Schnittstelle
Billjk
quelle
Linux erweitert auch die Unix-Philosophie ...
Job
2
Linux ist nicht nur ein Kernel, der Linux-Kernel ist auch der Kernel. Linux bezieht sich normalerweise auf ein vollständiges System, das auf dem Linux-Kernel aufbaut.
Yannis
@Anonymous - Manchmal, wenn Sie Ihre Antwort bearbeiten und korrigieren, können Downvoter die Downvote entfernen. Es ist nicht garantiert, aber manchmal hilft es. (Ich habe nicht downvote, nur versucht, hilfreich zu sein) :) Der Rest Ihrer Antwort ist richtig, IMHO, so dass das Beseitigen der Diskrepanz Ihnen helfen kann, einige upvotes zu bekommen / mehr downvotes zu vermeiden.
jmort253
-7

Nicht wirklich, Linux war doch ein zusammengeschustertes Reverse Engineering von Unix, also folgte das Kernel-Design Ken Thompsons Philosophie. Der Linux-Weg scheint darin zu bestehen, die Unix-Philosophie so genau wie möglich nachzuahmen, ohne sich jemals mit originellen Gedanken zu belasten.

Samual Johnson
quelle
@YannisRizos Was meinst du mit "aber es war nicht wirklich brauchbar". AFAIK war voll verwendbar, aber da es in PDP-Assembly geschrieben wurde, war es schwierig, es in anderen Architekturen zu portieren.
Sakisk
@ samual-johnson -1 Weil Sie Ihre Aussagen nicht mit Referenzen sichern. Es ist das erste Mal, dass ich von der "Ken Thompson Philosophie" höre (und es ist Thompson, nicht Thomson).
Sakisk
1
@faif Als ich meine Referenzen überprüfte, war der Kernel, auf den ich mich bezog, für den GE-645 und nicht für den PDP geschrieben worden. Daher war es eine Herausforderung, ihn als Unix-Kernel zu bezeichnen. Ich habe den Kommentar gelöscht, da es hauptsächlich um das Fehlen von Referenzen ging und Ihr Kommentar ausreicht, um diese Botschaft zu übermitteln. - Nehmen Sie sich bitte etwas Zeit, um Ihre Behauptungen entweder mit soliden Referenzen zu untermauern oder sie auf etwas weniger Meinungsbasiertes zu überarbeiten.
Yannis
@YannisRizos Interessant. Ich habe noch nichts über GE-645 gehört, das laut Wikipedia eine verbesserte Version von Multics war. Danke für die Information.
Sakisk