Quais recursos o Darwin possui que outros Unixes não possuem, ou vice-versa?

Quais recursos o Darwin possui que outros Unixes não possuem, ou vice-versa?

Darwin possui algum recurso específico? Outros Unixe(s) possuem recursos que faltam ao Darwin?

Responder1

OS X é o único sistema operacional restantebaseado no micronúcleo Machque também ainda é comercialmente relevante. Existem alguns projetos de pesquisa em andamento e sistemas operacionais obsoletos que sem dúvida ainda estão sendo usados ​​em configurações de produção em máquinas antigas, mas nada que você possa comprar em uma máquina nova hoje.

O OS X possui a variedade usual de incompatibilidades de recursos do kernel que qualquer *ix possui. O maior problema que tive que resolver recentemente foi a falta deFilas de mensagens do System V. ( msgget(2)e amigos.) Tivemos que substituir nosso código de fila de mensagens - que foi escrito para uma variante "real" do System V e posteriormente portado para Linux - por TCP/IP para que nosso software pudesse rodar no OS X. Para nosso aplicativo, o as diferenças entre esses dois métodos IPC foram importantes no momento em que escolhemos usar filas de mensagens, mas devido a alterações arquitetônicas posteriores, acabou não sendo um grande problema mudar para TCP/IP.

Responder2

No final das contas, Darwin não é apenas uma fina camada de BSD em cima do Mach 2.0?

Eu costumava usar o NeXTStep, não sei o quanto o MacOSX atual se afasta do NeXTStep, mas...

Mach 2.0 ofereceu um conjunto diferente de abstrações no nível do kernel:

  1. Uma "tarefa": é um espaço de endereço + um conjunto de "portas", possivelmente com um thread em execução.
  2. Tópicos. Esta foi a unidade de execução programável. Uma tarefa (espaço de endereço) pode ter mais de uma em execução. Acredito que os arquivos Mach-O (formato de arquivo executável do Mach) poderiam especificar mais de um thread no tempo de execução do processo: nenhuma função main() que iniciasse mais Cthreads, o sistema operacional iniciaria um.
  3. Portos. Estas não são como portas TCP ou UDP. Eles foram digitados e ordenados fluxos de mensagens. Bastante semelhante ao RPC. Você criou um arquivo de especificação de protocolo e, em seguida, executou-o por meio de um compilador para obter stubs do lado do servidor e do cliente, rotinas de empacotamento e desempacotamento, etc.
  4. Pagers de memória de nível de usuário. Você pode configurar uma tarefa + thread para lidar com a paginação dos espaços de endereço de outras tarefas.

O pessoal original do CMU Mach usou essas abstrações paraemular, imitarProcessos BSD Unix, processos MS-DOS e, em um fabuloso ataque de estranheza, tarefas VMS. Cada tarefa VMS exigia 2 tarefas Mach, além de muitos threads. Alguém costumava vender um emulador de Mac OS (pré-OSX) para NeXTStep que usava os pagers de espaço do usuário com bons resultados.

A antiga página de publicações do CMU Mach: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

O artigo VMS-on-Mach: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf

Responder3

Esta não é exatamente uma resposta, mas,DTraceé uma incrível ferramenta de depuração de sistema que existe para Solaris, Darwin/OS X e *BSD, mas não para Linux.

Responder4

Acho que é melhor descrever Darwin como apenas mais umsabor do UNIX. Solaris é um deles. HP/UX é outra. Há muitosmais, talvez não tão "de alto perfil", mas eles estão lá. E com cada sabor vem suas especificidades. É por isso que existem sabores em primeiro lugar. Alguma empresa pensa em algo que ajudaria a vendê-lo (ou simplesmente a trabalhar com ele ou mesmo a administrá-lo) e cria-o e dá-lhe um nome próprio.

informação relacionada