Costumo encontrar o termo "unix-like" em muitos sites.
Não há padrão; é apenas da maneira que se comporta.
Mas se eu desenvolvesse um kernel do zero, o que o tornaria considerado "semelhante ao unix"?
Basicamente, quais são as coisas que fazem código escrito como o Unix?
linux
unix-philosophy
falta um axônio
fonte
fonte
Respostas:
Acredito que a maioria dos sistemas operacionais "unix-like" faz um esforço muito sério para aderir ao padrão POSIX , que é supervisionado pelo Open Group, que também controla a especificação UNIX única, que define um "UNIX verdadeiro". O primeiro é o núcleo do posterior.
Portanto, existe, de fato, um padrão que define os aspectos práticos de sistemas operacionais do tipo unix . Veja a lista de sistemas operacionais compatíveis com "totalmente" e "principalmente" no final do artigo da wikipedia sobre POSIX.
Existem algumas razões óbvias para o linux, em particular, não serem consideradas totalmente compatíveis ou certificáveis pelo Single Unix Specification (SUS), mas não porque um sistema linux específico é necessariamente incompatível com ele. O artigo da wikipedia resume as especificações desta maneira:
Obviamente, isso se refere especificamente a muitos componentes da terra do usuário (como o shell) que simplesmente não fazem parte do kernel do linux. Portanto, não há como linux.org et. al. pode ter o kernel sozinho certificado - nesse sentido, não é um sistema operacional. Eles poderiam, é claro, tentar certificar algum sistema específico usando o kernel, mas isso não faria sentido à luz do esquema geral de distribuição: o kernel e as pessoas que o mantêm são independentes das pessoas que mantêm o núcleo da terra do usuário (GNU) que são independentes das pessoas que mantêm distribuições reais de SO montadas (Debian, Fedora, etc).
Suponho que o próprio Debian ou Fedora possam se envolver no processo de certificação (então, por exemplo, o RedHat Enterprise pode se tornar um "unix certificado"), mas isso levanta a questão de que isso é realmente desejável. Eu presumo que a principal razão para os sistemas SUS é executar software (em escala comercial, não consumidor) criado para isso, o que simplesmente não é o nicho do linux - as pessoas que fizerem isso pagarão milhares de dólares por licença para o sistema operacional, incluindo lotes de suporte etc., porque eles também estão pagando dezenas ou centenas de milhares de dólares por licença para qualquer software adicional que eles desejam executar no sistema. O Linux e os outros outliers, por outro lado, buscaram objetivos de design além da simples conformidade para fins comerciais, e há vários exemplos disso, por exemplo (a partir dehttp://en.wikipedia.org/wiki/STREAMS ):
Uma acomodação interessante que destaca o ponto em que o SUS e o The Open Group! = Linux,! = BSD, etc.
fonte
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 :
UNIX98 :
UNIX95 (ênfase minha):
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:
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.
fonte