Para expandir a primeira resposta sobre o POSIX, para entender o que significa "unix-like", primeiro tente tentar entender o que exatamente é o UNIX. Examinando a documentação do Open Group , proprietário da marca comercial Unix, você encontrará detalhes sobre a evolução da especificação Single UNIX - aqui está o UNIX03 :
O Padrão do Produto UNIX 03 é a marca para sistemas em conformidade com a Versão 3 da Especificação Única do UNIX. É uma versão significativamente aprimorada do UNIX 98 Product Standard. Os aprimoramentos obrigatórios incluem o alinhamento com a linguagem de programação ISO / IEC 9989: 1999 C, IEEE Std 1003.1-2001 e ISO / IEC 9945: 2002. Este Padrão do Produto inclui os seguintes Padrões Obrigatórios do Produto: Chamadas e Bibliotecas Internacionalizadas do Sistema V3 Estendida, Comandos e Utilitários V4, Linguagem C V2 e Interfaces de Terminal Internacionalizadas.
UNIX98 :
O UNIX 98 Product Standard é uma versão significativamente aprimorada do UNIX 95 Product Standard. Os aprimoramentos obrigatórios incluem (1) interfaces de threads, (2) extensão de suporte multibyte (MSE), (3) suporte a arquivos grandes, (4) vinculação dinâmica, (5) alterações para remover dependências ou restrições de comprimento de dados de hardware e (6) ) Alterações do ano 2000. Além disso, os seguintes aprimoramentos opcionais estão incluídos: Recursos de administração de software e um conjunto de APIs para suporte em tempo real. Este padrão do produto inclui os seguintes padrões obrigatórios do produto: Bibliotecas e chamadas de sistema internacionalizadas Extended V2, comandos e utilitários V3, idioma C, serviço de transporte (XTI) V2, soquetes V2 e interfaces de terminal internacionalizadas. Além disso, também pode estar em conformidade com o Padrão de Produto de Administração de Software.
UNIX95 (ênfase minha):
Este Padrão de Produto define uma plataforma consolidada para o suporte a uma ampla gama de aplicativos originalmente desenvolvidos para uma classe de sistemas operacionais derivados do código do Sistema Operacional UNIX e / ou interfaces originalmente desenvolvidas pela AT&T , além das facilidades fornecidas. pelo Padrão Básico do Produto. Tem um escopo mais amplo que o Base. Este padrão do produto inclui os seguintes padrões do produto: bibliotecas e chamadas de sistema internacionalizadas estendidas, comandos e utilitários V2, linguagem C, serviço de transporte (XTI), soquetes e interfaces de terminal internacionalizadas.
As versões de servidor do padrão adicionam o Internet Server e o IPv6 em alguns casos.
Portanto, é claro que vemos a referência aos Laboratórios AT&T Bell e a linguagem C está no centro do que é o UNIX: a linguagem C, as ferramentas básicas modulares e o shell e como o kernel, o sistema de arquivos e outros componentes principais do SO foram projetados e implementados .
É aí que o livro O design do sistema operacional UNIX, de Maurice J. Bach, se torna uma leitura inestimável porque, neste momento, são questões históricas. É claro que é claro que isso está relacionado a outras invenções, como a linguagem C. C foi desenvolvido pela AT&T Bell para implementar o Unix com uma linguagem que pode ser tão rápida quanto a montagem, mas portátil em diferentes hardwares, e grande parte do POSIX é uma extensão do padrão C.
No que diz respeito ao próprio kernel, muitas vezes você encontrará um diagrama conceitual como este para ilustrar o que era tradicionalmente um kernel do UNIX:
Aqui estão alguns trechos do livro clássico de Mr Bach (1986) que discutem os fundamentos do kernel do UNIX System V:
No entanto, todos eles [subsistemas e programas de aplicativos] usam serviços de nível inferior finalmente fornecidos pelo kernel e se beneficiam desses serviços por meio do conjunto de chamadas do sistema. Existem cerca de 64 chamadas de sistema no Sistema V, das quais menos de 32 são usadas com freqüência. Eles têm opções simples que os tornam fáceis de usar, mas fornecem muita energia ao usuário. O conjunto de chamadas do sistema e os algoritmos internos que os implementam formam o corpo do kernel [...]
[...] seus dois componentes principais são o subsistema de arquivos e o processo.
Os arquivos são organizados em sistemas de arquivos, que são tratados como dispositivos lógicos; um dispositivo físico como um disco pode conter vários dispositivos lógicos (sistemas de arquivos). Cada sistema de arquivos possui um superbloco que descreve a estrutura e o conteúdo do sistema de arquivos, e cada arquivo em um sistema de arquivos é descrito por um inode que fornece os atributos do arquivo. As chamadas do sistema que manipulam arquivos o fazem por meio de inodes. [e o buffer pool]
[...] Existem duas versões do inode: a cópia em disco que armazena as informações do inode quando o arquivo não está em uso e a cópia interna que registra informações sobre arquivos ativos.
A execução dos processos do usuário nos sistemas UNIX é dividida em dois níveis: usuário e kernel. Quando um processo executa uma chamada do sistema, o modo de execução do processo muda do modo de usuário para o modo de kernel : o sistema operacional executa e tenta atender à solicitação do usuário [...]
[...] a filosofia do sistema UNIX é fornecer primitivas do sistema operacional que permitem aos usuários escrever pequenos programas modulares que podem ser usados como blocos de construção para criar programas mais complexos. Um desses primitiva visível para desembolsar os usuários é a capacidade de redirecionar E / S .
[...] Além de atender às chamadas do sistema, o kernel faz a contabilidade geral para a comunidade de usuários, controlando o agendamento de processos, gerenciando o armazenamento e a proteção dos processos na memória principal, realizando interrupções, gerenciando arquivos e dispositivos e resolvendo os erros do sistema condições.
Se você estiver interessado nas diferentes implementações de kernels em sistemas operacionais do tipo Unix, também pode dar uma olhada na implementação do FreeBSD (4.4BSD) ou no kernel do Mach ou na comparação de seus recursos.
Quanto mais você souber sobre o design do UNIX, mais entenderá o que aconteceu no diagrama a seguir sobre a ancestralidade do UNIX e sua história . Bach está falando principalmente sobre o Sistema V em seu livro, mas ele também discute o BSD:
Há mais do que aparenta realmente. Por exemplo, o Mac OSX é certificado pelo UNIX03, mas você o vê conectado a algum UNIX puro (principalmente em vermelho)?
Acima, você pode ver como a BSD, GNU, Microsoft e diversos indivíduos contribuíram para esse universo. Embora o GNU e, finalmente, o linux não tenham linha direta com o UNIX, você vê que o GNU é um esforço para reprojetar no mundo de código aberto as ferramentas e o software do UNIX comercial que foram fechados. Portanto, olhar para o software mantido pelo GNU dá uma idéia, por exemplo, dos protótipos e aplicativos iniciais.
As guerras de licenciamento desempenharam um papel na evolução (e estagnação às vezes) do UNIX. Você pode ver imediatamente que os UNIXes estão alinhados de acordo com o tipo de licença - fechado vs. BSD (o BSD permite criar código fechado de código-fonte ... consulte OSX) e a GPL, que permite que o Linux e o GNU se complementem no mundo dos copyleft. Aqui está o mapa clássico do kernel do linux desenvolvido inicialmente por Linus Torvalds, que também revela o que um kernel "pode" ser em um sistema operacional semelhante ao Unix:
Isso sugere que um tipo de design " kernel " não é o que torna o padrão UNIX ou o que define um sistema operacional semelhante ao unix. Isso é evidenciado pelo fato de que muitos sistemas operacionais do tipo unix podem ter um núcleo monolítico ou um microkernel - monolítico era o tipo de design clássico para UNIX. De fato, mesmo dentro de UNIXes puros, o HPUX possui um núcleo monolítico, enquanto o AIX usa um microkernel. Esse debate sobre design é sobre desempenho e não está relacionado à ancestralidade ou identidade do Unix. Por outro lado, existe uma abordagem conceitual tradicional para fornecer serviços ao software, lidar com sistemas de arquivos etc. em sistemas operacionais do tipo UNIX / unix.
Acredito que essas considerações adicionarão contexto à parte do SO da sua pergunta.