O macOS é UNIX ou apenas Unix? Ou é como o Unix? Respondemos ao debate sem fim e explicamos padrões como POSIX e o SUS ao longo do caminho.
Índice
macOS: UNIX ou não?
Este assunto levanta uma série de questões diferentes. Qual é a linhagem do macOS? Quanto desse material hereditário ainda está presente no macOS de hoje, e isso importa? Antes de começarmos a responder se algo é UNIX, Unix ou semelhante ao Unix, precisamos estar confortáveis com o que esses termos significam. Quem decide se algo é Unix ou UNIX e quais critérios eles usam?
Vamos começar no início.
O Unix foi criado há cinquenta anos na Bell Labs , uma empresa de pesquisa e desenvolvimento de propriedade da AT&T. Avance rapidamente para 1973 e a versão 4 do Unix, que foi reescrito na linguagem de programação C. Isso tornou o sistema operacional muito mais portátil e fácil de transferir para diferentes plataformas de hardware. Naquele mesmo ano, Ken Thompson e Dennis Ritchie , dois dos principais arquitetos do Unix, apresentaram um artigo em uma conferência sobre sistemas operacionais. Imediatamente, eles receberam pedidos de cópias do sistema operacional.
Vinculada por um decreto de consentimento datado de 1956, a AT&T teve que evitar “qualquer negócio que não seja o fornecimento de serviços de comunicação de operadora comum”. O Unix não se qualificou como algo com que a AT&T poderia lucrar. Então, a empresa fez algo notável para a época: distribuiu Unix como código-fonte com uma licença liberal. Pequenos encargos cobriam o envio e embalagem e um “royalty razoável”.
Uma Proliferação de Unixes
Como o Unix foi fornecido “como está”, ele veio sem suporte. Como resultado, uma comunidade Unix começou a se unir para ajudar os membros e corrigir e estender o Unix. Portanto, você pode obter o código-fonte, modificá-lo e obter suporte da comunidade. Isso soa familiar. Diferentes sabores de Unix começaram a aparecer, adaptados e ajustados para se adequar à organização que fazia o trabalho.
Bob Fabry , um professor de ciência da computação na UC Berkeley, estava no comitê de programa do Simpósio de 1973 sobre Princípios de Sistemas Operacionais. Ele ouviu uma apresentação de Thompson e Ritchie, intitulada The UNIX Time-Sharing System .
Fabry solicitou uma cópia do sistema operacional e, em 1974, o Unix foi instalado em um PDP / 11 no Computer Sciences Research Group (CSRG) da UC Berkeley. Significativamente, Ken Thompson passou um ano lá, trabalhando no que rapidamente se tornou o estilo Unix da própria universidade. Cópias das alterações e adições da UC Berkeley foram distribuídas e ficaram conhecidas como Berkeley Software Distribution (BSD). Eventualmente, eles se tornaram distribuições de um sistema Unix inteiro, ainda conhecido como BSD. Números de versão, como 4.2BSD, identificaram os diferentes lançamentos.
Em 1984, a AT&T foi liberada das restrições do decreto de consentimento de 1956 e foi capaz de comercializar seu sistema operacional adequadamente. Ele incluía código BSD, como TCP / IP , vi e o shell C, csh . Mesmo com essa polinização cruzada e colaboração, houve dificuldades com o licenciamento. O BSD continha código da AT&T, que não era de código aberto, mas os elementos do BSD sim.
Uma versão do BSD sem código AT&T foi desenvolvida para contornar esses problemas. Quando o código da AT&T foi removido, no entanto, faltava cerca de 20% do kernel. William Jolitz escreveu as partes que faltam e essa versão do Unix foi lançada como 386BSD . O projeto 386BSD estagnou, mas em 1993, sua base de código-fonte deu origem aos projetos NetBSD e FreeBSD .
Isso nos deu uma peça do quebra-cabeça: FreeBSD.
Próxima Etapa
Depois que ele foi demitido da Apple, Inc. em 1985, Steve Jobs fundou uma empresa chamada NeXT, Inc . Para fornecer um sistema operacional para sua linha de produtos de estação de trabalho, a NeXT desenvolveu o NeXTSTEP . Ele usava BSD como base de código, mas introduziu um kernel completamente diferente.
NeXT usou uma versão modificada do microkernel Mach e 4.3BSD para formar o NeXTSTEP, que é a segunda parte deste quebra-cabeça. Mach foi desenvolvido na Carnegie Mellon para facilitar a pesquisa em computação distribuída e paralela. A equipe de pesquisa usou BSD como sistema operacional e substituiu o kernel em vez de escrever seu próprio sistema operacional.
XNU
Em 1996, a Apple, Inc. comprou a NeXT, Inc. e, portanto, adquiriu a NeXTSTEP. A Apple começou a desenvolver o sistema operacional que finalmente se tornaria MacOS por meio de Mac OS X . Ele atualizou o kernel Mach e substituiu-o pela versão mais avançada que a Open Software Foundation desenvolveu e usou no sistema operacional OSF / 1 . A Apple também atualizou os componentes BSD com versões atualizadas e aprimoradas da distribuição FreeBSD.
A Apple trouxe elementos do kernel BSD de volta para o kernel Mach. Também desenvolveu um kernel híbrido que combinou características das arquiteturas monolítica e de microkernel.
O I / O Kit , que a Apple desenvolveu com base no DriverKit da NeXTSTEP, também foi incluído. Isso tornou possível adicionar drivers a um kernel sem ter que modificá-lo a cada vez.
XNU é a terceira parte do quebra-cabeça.
Os padrões POSIX e SUS
Em 1996, dois organismos de padrões – X / Open e Open Software Foundation – se fundiram para formar o The Open Group .
The Open Group é o organismo de certificação da marca comercial UNIX. Em outras palavras, ele deve carimbar seu sistema operacional como compatível com seus padrões antes que você possa chamá-lo de UNIX. UNIX em todas as letras maiúsculas é o emblema de conformidade.
Portanto, as categorias são as seguintes:
- Unix: uma família de sistemas operacionais. Esta família inclui sistemas operacionais UNIX e sistemas operacionais semelhantes ao Unix.
- Sistemas operacionais UNIX : foram certificados como compatíveis com os padrões.
- Sistemas operacionais semelhantes ao Unix : parecem e operam como Unix, mas não foram certificados como compatíveis.
É perfeitamente possível, é claro, que alguns sistemas operacionais na categoria “semelhante ao Unix” possam ser testados amanhã e considerados compatíveis. Eles são efetivamente UNIX agora, mas só podem ser categorizados como Unix porque ainda não têm o carimbo de borracha.
Existem dois padrões que certificam o UNIX: POSIX e Single UNIX Specification (SUS) . SUS é um superconjunto de POSIX. Portanto, algo pode ser compatível com POSIX, mas isso não o torna UNIX. No entanto, se algo for compatível com o SUS, é um UNIX.
POSIX e o SUS formam grandes coleções de documentos (cerca de 3.700 páginas). Eles definem a operação e o comportamento esperado de cada aspecto de um sistema UNIX compatível. Tudo, desde E / S assíncronas e síncronas, até a interface de script e programas em nível de usuário, são catalogados e definidos.
Os padrões definem interfaces de aplicativos e comportamento de tempo de execução, mas não ditam como são implementados .
Então, o macOS é UNIX?
A resposta tem que ser sim.
Você pode rastrear sua linhagem de volta do FreeBSD ao BSD e, a partir daí, ao Unix distribuído pela Bell Labs antes do aumento da taxa de licença da AT&T.
Mas isso não importa.
Se você escrever um sistema operacional do zero agora, desde que satisfaça os requisitos do SUS, ele é considerado UNIX. E não importa como você o implementa. O kernel XNU no coração do macOS é uma arquitetura híbrida. Ele combina o código da Apple com partes dos kernels Mach e BSD.
Mas isso também não importa. O que importa é que ele atenda aos requisitos dos padrões pelos quais é medido.
A parte BSD do kernel XNU fornece as interfaces de programação de aplicativos POSIX (como as várias chamadas de sistema API e BSD). Manter esse elemento do kernel BSD intacto dentro do XNU é a chave para obter a certificação como UNIX. Ele permite que o XNU se comunique com o UNIX compatível e compatível com o resto do sistema.
macOS é um sistema operacional compatível com UNIX 03, certificado pelo The Open Group. Tem sido desde 2007, começando com o MAC OS X 10.5. A única exceção foi o Mac OS X 10.7 Lion, mas a conformidade foi recuperada com o OS X 10.8 Mountain Lion.
Curiosamente, assim como GNU significa “GNU’s Not Unix”, XNU significa “X is Not Unix ”.