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.
linux
operating-systems
unix
Gnijuohz
quelle
quelle
Antworten:
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 :
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.
quelle
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.
quelle
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.
quelle
"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
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.
quelle
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.
quelle
Linux kommt mit vielen Tools wie:
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:
quelle
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.
quelle