Quali sono le caratteristiche di Darwin che altri Unix non hanno, o viceversa?


19

Darwin ha delle caratteristiche ad esso specifiche? Altri Unix hanno delle caratteristiche che mancano a Darwin?

Risposte:


20

OS X è l'unico sistema operativo rimanente basato sul microkernel Mach, che è anche ancora commercialmente rilevante. Ci sono alcuni progetti di ricerca in corso e sistemi operativi obsoleti che senza dubbio vengono ancora utilizzati nelle impostazioni di produzione su vecchie macchine, ma nulla è possibile uscire e acquistare su una nuova macchina oggi.

OS X ha il solito assortimento di incompatibilità delle funzionalità del kernel che qualsiasi * ix ha. Il più grande, più recentemente ho dovuto lavorare intorno è una mancanza di code di messaggi System V . ( msgget(2)e amici). Abbiamo dovuto sostituire il nostro codice di coda dei messaggi - che è stato scritto per una "vera" variante di System V e successivamente portato su Linux - con TCP / IP per far funzionare il nostro software su OS X. Per la nostra applicazione, il le differenze tra questi due metodi IPC erano importanti nel momento in cui abbiamo fatto la scelta di andare con le code dei messaggi, ma a causa di successive modifiche architettoniche, non è stato un grosso problema passare a TCP / IP.


11

Quando si arriva proprio a questo, Darwin non è solo un sottile strato di BSD sopra Mach 2.0?

Prima usavo NeXTStep, non so quanto MacOSX corrente parte da NeXTStep, ma ...

Mach 2.0 ha offerto una diversa serie di astrazioni a livello di kernel:

  1. Un "compito": questo è uno spazio di indirizzi + un insieme di "porte", possibilmente con un thread in esecuzione in esso.
  2. Le discussioni. Questa era l'unità di esecuzione programmabile. Un'attività (spazio indirizzo) potrebbe avere più di 1 in esecuzione in essa. Credo che i file Mach-O (il formato di file eseguibile di Mach) possano specificare più di un thread in fase di esecuzione del processo: nessuna funzione main () che ha avviato più Cthreads, il sistema operativo ne avvierebbe uno.
  3. Porte. Questi non sono come le porte TCP o UDP. Sono stati digitati, hanno ordinato flussi di messaggi. Piuttosto simile a RPC. Hai creato un file delle specifiche del protocollo, quindi lo hai eseguito attraverso un compilatore per ottenere stub lato server e client, routine di marshalling e unmarshalling, ecc.
  4. Cercapersone a livello di utente. È possibile impostare un'attività + thread per gestire il paging degli spazi degli indirizzi di altre attività.

Le persone originali della CMU Mach hanno usato queste astrazioni per emulare i processi Unix BSD, i processi MS-DOS e in una favolosa combinazione di attività bizzarre e VMS. Ogni attività VMS ha assunto 2 attività Mach, oltre a molti thread. Qualcuno vendeva un emulatore di Mac OS (pre-OSX) per NeXTStep che utilizzava in modo efficace i cercapersone dello spazio utente.

La vecchia pagina delle pubblicazioni di CMU Mach: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

Il documento VMS-on-Mach: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf


2
Mac OS X (e quindi Darwin) utilizza Mach 3.0.
bahamat,

5

Questa non è una vera risposta, ma DTrace è un fantastico strumento di debug del sistema che esiste per Solaris, Darwin / OS X e * BSD, ma non per Linux.


3
Oracle ha portato DTrace su Linux nel 2011.
MattBianco,

1
A partire da ottobre 2011, Oracle ha annunciato il porting di DTrace da Solaris a Linux, ma a partire dal 13 ottobre 2014 rimane ufficialmente non disponibile. ( slideshare.net/brendangregg/from-dtrace-to-linux )
scravy

4

Darwin ha un set relativamente piccolo di tipi di file system supportati. Oltre a speciali come devfs e tipi di rete come webdav, l'elenco è:

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

Di questo elenco, solo UFS è stato progettato per Unix, sebbene HFS + sia stato aggiornato per supportare tutte le funzionalità Unix necessarie. A partire da Mac OS X 10.6, UFS non può essere utilizzato per la partizione di root, anche se questa restrizione probabilmente non si applica a Darwin. Per impostazione predefinita, HFS + non distingue tra maiuscole e minuscole, sebbene al momento della creazione sia possibile richiedere la distinzione tra maiuscole e minuscole. Sebbene Mac OS X verrà eseguito su una partizione con distinzione tra maiuscole e minuscole, molte applicazioni Mac di alto profilo non lo faranno (ad esempio Adobe CS).

Per un po ', Apple aveva in programma di sostituire HFS con ZFS e ha persino distribuito ZFS con alcune versioni di Mac OS X, ma purtroppo questo esperimento alla fine fallì a causa di problemi di licenza irrisolvibili .


Credo / supporto alla scrittura di NTFS per MacOS di OS X è segnalato per essere ancora buggy, che rimane sperimentale e non è mai stato stabilizzato, come ricordo.
RandomDSdevel

3

Penso che sia meglio descrivere Darwin come un altro sapore di UNIX . Solaris è uno. HP / UX è un altro. Ce ne sono molti altri , forse non come "di alto profilo" ma sono lì. E con ogni sapore arrivano i suoi particolari. Ecco perché ci sono sapori in primo luogo. Alcune aziende escogitano qualcosa che aiuterebbe a venderlo (o semplicemente a lavorare con esso o anche a gestirlo) e lo crea e gli dà il proprio nome.


2
UNIX (tutto in maiuscolo) è un marchio registrato di The Open Group in molti paesi; affinché qualcosa sia "UNIX" (in maiuscolo), è richiesta la certificazione . Darwin non è un altro "sapore di UNIX", ma Mac OS X 10.10 su Intel x86-64 è certificato come un altro UNIX.
user314104,

0

Se ho sentito bene Darwin, come rilasciato da Apple, non funziona più come un sistema operativo indipendente, quindi vorrei sottolineare che la differenza più grande che ha è OS X al di sopra di esso. : D

Sebbene l'integrazione tra il vecchio Mac OS, il nuovo Mac OS X e le cose NeXT sia talvolta ridicola, piccole utility come diskutil e hdiutil sono fantastiche. Forse sono alcuni vecchi architetti del kernel Mach rimasti da NeXT che usano queste piccole cose e si prendono cura di loro che hanno fatto in modo che XCode fosse anche un ottimo strumento.


-1

Darwin è basato su FreeBSD. Una caratteristica interessante che non è presente in altri sistemi operativi Unix (secondo la mia esperienza) è il Berkeley Packet Filter , alias /dev/bpf. Questo è un dispositivo molto versatile che puoi usare per l'acquisizione di pacchetti.


1
Darwin non è realmente basato su FreeBSD, anche se prende in prestito alcune cose dell'utente. Altri commenti qui lo spiegano meglio. bpf (4) non è solo Darwin e FreeBSD / NetBSD / OpenBSD, e ho la sensazione che qualcuno potrebbe averlo persino implementato per kernel Linux precedenti. SCO (in) notoriamente lo aveva nella loro offerta Unixware.
jrg

-11

Il pugno che mi viene in mente sono tutti gli strumenti che OSX ha in console .. ci sono tonnellate di comandi più utili che hanno unix. Diskutil è come la magia delle partizioni nella shell, questo strumento ha così tante opzioni per le operazioni del disco che fdisk è davvero solo il 10% di ciò che questa bestia ha ... btw osx supporta davvero un ottimo supporto Software Raid che puoi avere raid software JBOD, Strip e Mirror tipi .. davvero unix ha questo? nei tuoi sogni!! ; D

SystemProfiler - ottimo strumento che mostra tutti gli ID hardware, nomi, modelli, sn e cose del genere in un modo MOLTO comodo.

il kernel darwin non è totalmente trasparente come in unix.

darwin ha killall util = P unix no, solo abilità

file system diverso anche .. HFS, HFS +

forse quest'ultimo mi ricorderò di più =)


2
Vuoi dire che Darwin ha "killall" e altre varianti di Unix no? Non è vero.
kbyrd,

2
questa risposta è sospetta di pesca a traina. Non è necessario essere così diffamatori nelle tue dichiarazioni su * nix diverso da os X. Inoltre, l'ultima volta che HO MAI USATO * NIX killall era assolutamente presente nel mio PERCORSO. Inoltre, Linux ha profiler di sistema. Fai i tuoi compiti. Non fare il déuche. modifica: io uso e sono molto affezionato a OS X.
Eli Frey,

2
Ho killall su Linux, quindi non è univoco per darwin
xenoterracide

2
Questa risposta è vaga e inesatta. Quali funzioni utili manca a fdisk? Linux RAID (mdadm) ha ha concatenazione (LINEAR), striping (RAID0) e mirroring (RAID1), tra gli altri. Linux supporta anche HFS e HFS +.
Matthew Flaschen,

3
A proposito: Linux-killall e Solaris-killall sono abbastanza diversi
EricSchaefer l'
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.