É compatível com Posix Linux?

É compatível com Posix Linux?

O software é escrito por vários desenvolvedores com várias origens. Os algoritmos gerais estão disponíveis sob uma licença gratuita ou foram publicados cientificamente, e também podem estar disponíveis gratuitamente para fins de estudo. Isso resulta em diferentes implementações e versões de software que atendem a uma variedade de necessidades. É necessária uma padronização de interfaces e formatos de dados para tornar essas diferentes implementações intercambiáveis ​​e modulares.

Em resumo, Posix [1] faz exatamente isso para sistemas do tipo Unix e Unix (consulte o artigo de Zak H [4] para obter uma história mais detalhada sobre este tópico). Ele define as interfaces de câmbio, mecanismos de chamada e dados transferidos para o software, mas deixa a implementação interna ao desenvolvedor ou mantenedor do software. O objetivo é unificar todos os vários garfos Unix e sistemas semelhantes a Unix, de forma que diferentes implementações de software possam interagir entre si. A principal vantagem do Posix é ter uma documentação vinculativa para esses componentes - interfaces, mecanismos e dados - disponíveis em forma escrita.

Um sistema operacional que segue o padrão POSIX em sua totalidade é classificado como compatível com Posix. Neste artigo, explicamos o que Posix significa, determinar se o Linux pertence a essa categoria e listamos quais componentes do Linux devem ser excluídos desta classificação.

O que o termo posix representa?

Posix é uma abreviação para interface do sistema operacional portátil. Como explicado brevemente acima, Posix é o nome de uma coleção de padrões necessários para manter a compatibilidade entre os sistemas operacionais. Conforme declarado em [1], “[Define] a interface de programação de aplicativos (API), juntamente com conchas de linha de comando e interfaces de utilidade, para compatibilidade de software com variantes da UNIX e outros sistemas operacionais.”A primeira versão do Posix foi publicada em 1988. Desde então, o POSIX foi continuamente expandido e atualizado pelo grupo de revisão dos padrões Common Standards de Austin (também conhecido simplesmente como grupo de Austin) [7].

A partir de 2021, o padrão POSIX contém as seguintes partes:

  1. Serviços essenciais (Incorpora ANSI C) (IEEE STD 1003.1-1988) - Criação e controle de processos, sinais, operações de arquivos e diretório, tubos, biblioteca C, interface e controle de porta de E/S, gatilhos de processo
  1. Extensões (Links simbólicos)
  2. Extensões em tempo real e de E/S (IEEE STD 1003.1B-1993)-Agendamento prioritário, sinais em tempo real, relógios e temporizadores, semáforos, passagem de mensagens, memória compartilhada, E/S assíncrona e síncrona, interface de travamento de memória
  3. Extensões de threads (IEEE STD 1003.1C-1995)-Criação, controle e limpeza da linha, agendamento de roscas, sincronização de roscas, manipulação de sinais
  4. Mais extensões em tempo real
  5. Extensões de segurança (Listas de controle de acesso)
  1. Conchas e utilitários (IEEE STD 1003.2-1992) - Intérprete de comando, programas de serviços públicos

O padrão é revisado regularmente para refletir mudanças e melhorias técnicas. Às vezes, pode levar vários anos até que uma nova versão seja publicada e as alterações sejam incorporadas. Isso pode ser desvantajoso, mas é compreensível, dado o escopo do padrão.

Nos últimos anos, extensões para processamento em tempo real foram adicionadas. A versão atual foi lançada no início de 2018 [3]. Os autores de Sibylfs [5] também publicaram muitas anotações no padrão POSIX para determinar a lógica e as interações de ordem superior.

O que significa ser compatível com Posix?

O termo "compatível com Posix" significa que um sistema operacional atende a todos os critérios POSIX. Um sistema operacional pode executar programas UNIX nativamente, ou um aplicativo pode ser transportado do sistema UNIX para outro sistema. Portar um aplicativo do Unix para o sistema operacional de destino é fácil, ou pelo menos mais fácil, do que se não suportar POSIX. Para estar do lado seguro, um sistema operacional deveria ter alcançado com sucesso a certificação POSIX [2]. Esta etapa é alcançada (a um custo) passando por um teste de certificação automatizado. O conjunto de testes correspondente pode ser encontrado aqui [11].

A partir de 2021, a lista de sistemas operacionais certificados por POSIX contém AIX da IBM, HP-UX da HP, IRIX da SGI, Euleros [6] da Huawei, Mac OS X da Apple (desde 10.5 Leopard), Solaris e QNX Neutrino da Oracle, K-UX de Inspur [11] e a integridade do sistema operacional em tempo real do software Green Hills [15]. Atualmente, não está claro se as versões mais recentes dos três sucessores de Solaris, OpenSolaris, Illumos e Openindiana, são classificados como totalmente compatíveis com Posix, também. Esses sistemas operacionais foram compatíveis com Posix até Posix 2001.

Outros sistemas operacionais que são vistos como principalmente (mas não totalmente) compatíveis com POSIX incluem Android, BEOs, FreeBSD, Haiku, Linux (veja abaixo) e VMware Esxi. Para o Microsoft Windows, o Cygwin fornece um ambiente de desenvolvimento e tempo de execução em grande parte compatível com Posix.

É compatível com Posix Linux?

O termo "Linux" refere -se a todo o sistema operacional Linux, independentemente do sabor, como Debian Gnu/Linux, Redhat Linux, Linux Mint, Ubuntu Linux, Fedora e Centos, por exemplo. Para ser preciso, o Linux é apenas o nome do kernel que é o componente principal deste sistema operacional livre.

Como Linus Torvalds descrito no livro “Just for Fun” [8], para desenvolver o kernel Linux, ele solicitou uma cópia do padrão POSIX. Isso o ajudou a implementar os mesmos mecanismos usados ​​em sistemas comerciais Unix. Além disso, isso permitiu que ele vincule o kernel Linux às ferramentas GNU que seguiam principalmente a mesma abordagem. Para ser justo, o software em um sistema Linux é contribuído de uma variedade de fontes que respeitam o padrão POSIX, mas que às vezes também implementam seus próprios conceitos. Ao mesmo tempo, no entanto, isso também mostra a diversidade que compõe o Linux como um sistema operacional.

Um exemplo disso é a maneira pela qual os argumentos da linha de comando são escritos. Argumentos com dois traços (e.g., "-Help") são convenções GNU, enquanto os comandos do POSIX nunca usam argumentos de dois pontos, mas apenas um único (e.g., "-ajuda"). Desde o início, o Linux foi projetado com a GNU em mente, e é por isso que os comandos contêm estilo GNU

argumentos. Para alcançar a conformidade do POSIX, argumentos no estilo POSIX foram adicionados passo a passo. Ainda assim, a decisão final é tomada pelo desenvolvedor. A partir de hoje, a maioria dos comandos aceita argumentos curtos e longos, ou mesmo argumentos sem traços, como o comando "encontrar", por exemplo. Para ser justo, não há consistência entre os comandos em um sistema, e isso pode ser um problema quando você pretende usar o mesmo comando em um sistema diferente baseado em UNIX, principalmente ao alternar entre Linux, OS X e Solaris.

Por enquanto, o Linux não é certificado por POSIX devido a altos custos, exceto as duas distribuições comerciais do Linux Inspur K-Ux [12] e Huawei Euleros [6]. Em vez disso, o Linux é visto como sendo principalmente compatível.

Esta avaliação se deve ao fato de que as principais distribuições Linux seguem a base padrão do Linux (LSB) em vez de Posix [9]. O LSB visa “minimizar as diferenças entre as distribuições individuais do Linux” [14]. Isso se refere à estrutura do sistema de software, incluindo o padrão de hierarquia de sistemas de arquivos (FHS) usado no kernel Linux. O LSB é baseado na especificação do POSIX, na especificação única do Unix (SUS) [10] e em vários outros padrões abertos, mas também os estende em determinadas áreas.

As distribuições Linux baseadas em LSB incluem Redhat Linux, Debian GNU/Linux (2002-2015) e Ubuntu (até 2015), para citar alguns.

Desenvolvendo com Posix em mente

Para entender o POSIX com mais detalhes, recomendamos a obtenção de uma cópia do Posix Standard e lê -lo na íntegra. Você pode obter o livro do site do Open Group. Isso requer uma taxa de registro, mas oferece acesso total a este recurso valioso. Os padrões ajudam, pois permitem que você desenvolva software de tal maneira que ele se comporte da mesma maneira em todas as plataformas Unix.

Links e referências

  • [1] Posix, Wikipedia, https: // pt.Wikipedia.org/wiki/posix
  • [2] Certificação POSIX, http: // obtenha.PosixCertified.IEEE.org/
  • [3] Posix Standard, Open Group, https: // publicações.OpenGroup.org/t101
  • [4] Zak H: Posix Standard, https: // linuxhint.com/Posix-Standard/
  • [5] Anotações POSIX, Sybilfs, https: // github.com/sibylfs/sibylfs_src
  • [6] Euleros, https: // desenvolvedor.Huaweicloud.COM/TIC/EN/SITE-EULEROS/EULEROS
  • [7] O grupo de revisão dos padrões comuns de Austin, https: // www.OpenGroup.org/austin/
  • [8] Torvalds, Linus; Diamond, David (2001). Apenas por diversão: a história de um revolucionário acidental. Nova York, Estados Unidos: HarperCollins. ISBN 0-06-662072-4
  • [9] Linux Standard Base (LSB), Wikipedia, https: // EN.Wikipedia.org/wiki/linux_standard_base
  • [10] Especificação Unix Single (SUS), Wikipedia, https: // EN.Wikipedia.org/wiki/single_unix_specification
  • [11] Posix Test Suites, https: // www.OpenGroup.Org/Testing/TestSuesues/VSX4.htm
  • [12] Inspur K-UX, Wikipedia, https: // pt.Wikipedia.org/wiki/inspur_k-ux
  • [14] Linux Standard Base (LSB), https: // wiki.LinuxFoundation.org/lsb/start
  • [15] Integridade, https: // www.GHS.com/produtos/rtos/integridade.html

Obrigado

O autor gostaria de agradecer a Axel Beckert e Veit Schiele por sua ajuda e conselhos ao preparar este artigo.