Welche Funktionen hat Darwin, die andere Unixe nicht haben, oder umgekehrt?


19

Hat Darwin spezielle Funktionen? Haben andere Unixe Funktionen, die Darwin fehlt?

Antworten:


20

OS X ist das einzige verbleibende Betriebssystem, das auf dem Mach-Mikrokernel basiert und auch noch kommerziell relevant ist. Es gibt einige laufende Forschungsprojekte und veraltete Betriebssysteme, die zweifellos immer noch in Produktionseinstellungen auf alten Maschinen verwendet werden, aber nichts, was Sie heute auf einer neuen Maschine kaufen können.

OS X hat die übliche Auswahl an Inkompatibilitäten mit Kernel-Funktionen, die jeder * ix hat. Das größte Problem, das ich zuletzt umgehen musste, ist das Fehlen von System V-Nachrichtenwarteschlangen . ( msgget(2)und Freunde.) Wir mussten unseren Message Queue-Code, der für eine "echte" System V-Variante geschrieben und später auf Linux portiert wurde, durch TCP / IP ersetzen, damit unsere Software unter OS X ausgeführt werden konnte Die Unterschiede zwischen diesen beiden IPC-Methoden waren zu der Zeit von Bedeutung, als wir uns für Nachrichtenwarteschlangen entschieden haben. Aufgrund späterer Änderungen in der Architektur war es jedoch keine große Sache, auf TCP / IP umzusteigen.


11

Wenn es darum geht, ist Darwin nicht nur eine dünne BSD-Schicht auf Mach 2.0?

Früher habe ich NeXTStep verwendet, ich weiß nicht, wie viel aktuelles MacOSX von NeXTStep abweicht, aber ...

Mach 2.0 bot auf Kernel-Ebene eine andere Reihe von Abstraktionen:

  1. Eine "Aufgabe": Dies ist ein Adressraum + eine Reihe von "Ports", in denen möglicherweise ein Thread ausgeführt wird.
  2. Themen. Dies war die planbare Ausführungseinheit. In einem Task (Adressraum) kann mehr als ein Task ausgeführt werden. Ich glaube, dass Mach-O-Dateien (Machs ausführbares Dateiformat) mehr als einen Thread zur Laufzeit angeben könnten: keine main () -Funktion, die mehr Cthreads startete, das Betriebssystem würde einen starten.
  3. Häfen. Dies sind keine TCP- oder UDP-Ports. Sie wurden getippt und nach Nachrichtenströmen geordnet. Eher RPC-ähnlich. Sie haben eine Protokollspezifikationsdatei erstellt und diese dann über einen Compiler ausgeführt, um server- und clientseitige Stubs, Marshalling- und Unmarshalling-Routinen usw. abzurufen.
  4. Speicher-Pager auf Benutzerebene. Sie können einen Task + Thread einrichten, um das Auslagern der Adressräume anderer Tasks zu verwalten.

Die ursprünglichen CMU-Mach-Leute haben diese Abstraktionen verwendet, um BSD-Unix-Prozesse, MS-DOS-Prozesse und VMS-Aufgaben zu emulieren . Jede VMS-Aufgabe erforderte 2 Mach-Aufgaben plus viele Threads. Früher verkaufte jemand einen Mac OS (Pre-OSX) -Emulator für NeXTStep, der die User-Space-Pager effektiv einsetzte.

Die alte CMU Mach-Veröffentlichungsseite: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

Das VMS-on-Mach-Paper: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf


2
Mac OS X (und damit Darwin) verwendet Mach 3.0.
Bahamat

5

Dies ist keine eindeutige Antwort, aber DTrace ist ein großartiges System-Debugging-Tool, das für Solaris, Darwin / OS X und * BSD, aber nicht für Linux verfügbar ist.


3
Oracle portierte DTrace 2011 auf Linux.
MattBianco

1
Ab Oktober 2011 hat Oracle die Portierung von DTrace von Solaris auf Linux angekündigt. Ab dem 13. Oktober 2014 ist Oracle offiziell nicht mehr verfügbar. ( slideShare.net/brendangregg/from-dtrace-to-linux )
scravy

4

Darwin verfügt über relativ wenige unterstützte Dateisystemtypen. Abgesehen von Besonderheiten wie devfs und Netzwerktypen wie webdav lautet die Liste:

  • HFS / HFS +
  • UFS / FFS
  • ISO-9660 / UDF / CDDA
  • NTFS
  • FETT

Von dieser Liste wurde nur UFS für Unix entwickelt, obwohl HFS + aktualisiert wurde, um alle erforderlichen Unix-Funktionen zu unterstützen. Ab Mac OS X 10.6 kann UFS nicht für die Root-Partition verwendet werden, obwohl diese Einschränkung wahrscheinlich nicht für Darwin gilt. Standardmäßig unterscheidet HFS + nicht zwischen Groß- und Kleinschreibung, obwohl die Berücksichtigung der Groß- und Kleinschreibung zum Zeitpunkt der Erstellung angefordert werden kann. Obwohl Mac OS X auf einer Partition ausgeführt wird, bei der Groß- und Kleinschreibung zu beachten ist, ist dies bei vielen bekannten Mac-Anwendungen (z. B. Adobe CS) nicht der Fall.

Für eine Weile plante Apple, HFS durch ZFS zu ersetzen , und lieferte ZFS sogar mit einigen Versionen von Mac OS X aus. Leider schlug dieses Experiment jedoch aufgrund unlösbarer Lizenzprobleme fehl .


Ich glaube , dass OS X / macOS NTFS Schreibunterstützung wird berichtet noch fehlerhaft sein, da es experimentell bleibt und nie stabilisiert, wie ich mich erinnere.
RandomDSdevel

3

Ich denke, es ist am besten, Darwin als eine weitere Variante von UNIX zu beschreiben . Solaris ist eins. HP / UX ist eine andere. Es gibt viel mehr , vielleicht nicht als "hochkarätig", aber sie sind da. Und mit jedem Geschmack kommen seine eigenen Besonderheiten. Deshalb gibt es in erster Linie Aromen. Einige Unternehmen überlegen sich etwas, das ihnen beim Verkauf helfen könnte (oder sie arbeiten einfach damit oder verwalten es sogar), erstellen es und geben ihm einen eigenen Namen.


2
UNIX (in Großbuchstaben) ist in vielen Ländern eine eingetragene Marke von The Open Group. Damit etwas "UNIX" sein kann (in Großbuchstaben), ist eine Zertifizierung erforderlich . Darwin ist keine andere "UNIX-Variante" - aber Mac OS X 10.10 auf Intel x86-64 ist als eine andere UNIX-Variante zertifiziert.
user314104

0

Wenn ich richtig gehört habe, dass Darwin, wie von Apple veröffentlicht, nicht mehr als eigenständiges Betriebssystem funktioniert, würde ich darauf hinweisen, dass der größte Unterschied OS X ist. : D

Obwohl die Integration zwischen dem alten Mac OS, dem neuen Mac OS X und NeXT manchmal lächerlich ist, sind kleine Hilfsprogramme wie diskutil und hdiutil großartig. Vielleicht sind es einige alte Mach-Kernel-Architekten, die von NeXT übrig geblieben sind, die diese kleinen Dinge benutzen und sich um sie kümmern, die dafür gesorgt haben, dass XCode auch so ein gutes Werkzeug ist.


-1

Darwin basiert auf FreeBSD. Eine coole Funktion, die (meiner Erfahrung nach) in anderen Unix-Betriebssystemen nicht vorhanden ist, ist der Berkeley Packet Filter , auch bekannt als /dev/bpf. Dies ist ein sehr vielseitiges Gerät, das Sie zur Paketerfassung verwenden können.


1
Darwin basiert nicht wirklich auf FreeBSD, obwohl es einige Userland-Dinge davon entlehnt. Andere Kommentare hier erklären das besser. bpf (4) ist nicht nur Darwin und FreeBSD / NetBSD / OpenBSD, und ich habe das Gefühl, dass jemand es sogar für frühere Linux-Kernel implementiert hat. SCO hatte es (in) berühmt in ihrem Unixware-Angebot.
2.

-11

Als erstes fallen mir alle Tools ein, die OSX in der Konsole hat. Es gibt Unmengen nützlicherer Befehle, die Unix hat. Bis auf die Tatsache, dass es wie Partitionsmagie in der Shell ist, hat dieses Tool so viele Optionen für Festplattenoperationen, dass fdisk nur 10% von dem ist, was dieses Biest hat Typen .. hat Unix das wirklich? in deinen Träumen!! ; D

SystemProfiler - ein großartiges Tool, mit dem Sie alle Hardware-IDs, Namen, Modelle, Sns und ähnliches auf SEHR komfortable Weise anzeigen können.

darwin kernel ist nicht ganz transparent wie unter unix.

Darwin hat killall util = P Unix nicht, nur Geschick

anderes Dateisystem auch .. HFS, HFS +

vielleicht erinnere ich mich später an mehr =)


2
Meinst du, Darwin hat 'killall' und andere Unix-Varianten nicht? Das ist nicht wahr.
kbyrd

2
Diese Antwort steht im Verdacht des Trolling. Es ist nicht notwendig, in deinen Aussagen über * nix anders als os X so diffamierend zu sein. Außerdem war NIX killall das letzte Mal, als ich es NIEMALS benutzte, absolut in meinem PATH enthalten. Außerdem hat Linux System-Profiler. Mach deine Hausaufgaben. Sei kein Déuche. Bearbeiten: Ich benutze und bin sehr gern von OS X.
Eli Frey

2
Ich habe killall unter Linux, daher ist es nicht nur Darwin
Xenoterracide.

2
Diese Antwort ist vage und ungenau. Welche nützlichen Funktionen fehlen fdisk? Linux RAID (mdadm) verfügt unter anderem über Verkettung (LINEAR), Striping (RAID0) und Spiegelung (RAID1). Linux unterstützt auch HFS und HFS +.
Matthew Flaschen

3
Übrigens: Linux-killall und Solaris-killall sind ziemlich unterschiedlich
EricSchaefer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.