Posix

É compatível com Linux POSIX?

É compatível com Linux POSIX?

O software é escrito por vários desenvolvedores com várias origens. 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. Uma padronização de interfaces e formatos de dados é necessária para tornar essas diferentes implementações intercambiáveis ​​e modulares.

Resumindo, POSIX [1] faz exatamente isso para sistemas UNIX e semelhantes (veja o artigo de Zak H [4] para uma história mais detalhada sobre este tópico). Ele define as interfaces de troca, mecanismos de chamada e dados transferidos para o software, mas deixa a implementação interna para o desenvolvedor ou mantenedor do software. O objetivo é unificar todos os vários forks UNIX e sistemas semelhantes ao UNIX de tal forma que diferentes implementações de software possam interagir umas com as outras. A principal vantagem do POSIX é ter uma documentação de ligação para esses componentes - interfaces, mecanismos e dados - disponível na 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, determinamos se o Linux pertence a esta categoria e listamos quais componentes Linux devem ser excluídos desta classificação.

O que significa o termo POSIX??

POSIX é uma abreviatura de Portable Operating System Interface. Conforme explicado brevemente acima, POSIX é o nome de uma coleção de padrões que são necessários para manter a compatibilidade entre os sistemas operacionais. Conforme afirmado em [1], “[ele] define a interface de programação de aplicativos (API), junto com shells de linha de comando e interfaces de utilitários, para compatibilidade de software com variantes de Unix e outros sistemas operacionais.”A primeira versão do POSIX foi publicada em 1988. Desde então, POSIX tem sido continuamente expandido e atualizado pelo Austin Common Standards Revision Group (também conhecido simplesmente como The Austin Group) [7].

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

  1. Serviços essenciais (Incorpora o padrão ANSI C) (IEEE std 1003.1-1988) - Criação e controle de processos, sinais, operações de arquivos e diretórios, 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 I / O (IEEE Std 1003.1b-1993) - Agendamento de prioridade, 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 bloqueio de memória
  3. Extensões de tópicos (IEEE Std 1003.1c-1995) - Criação, Controle e Limpeza de Thread, Agendamento de Thread, Sincronização de Thread, Manipulação de Sinal
  4. Mais extensões em tempo real
  5. Extensões de segurança (Listas de controle de acesso)
  1. Shell e utilitários (IEEE Std 1003.2-1992) - Intérprete de Comando, Programas Utilitários

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

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 para o padrão POSIX para determinar lógica e 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 transferido 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 no lado seguro, um sistema operacional deve ter obtido com sucesso a certificação POSIX [2]. Esta etapa é alcançada (com um custo) ao passar em um teste de certificação automatizado. O conjunto de testes correspondente pode ser encontrado aqui [11].

Em 2021, a lista de sistemas operacionais com certificação 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, Inspur's K-UX [11] e o OS INTEGRITY em tempo real da Green Hills Software [15]. Atualmente não está claro se as versões mais recentes dos três sucessores do Solaris, OpenSolaris, Illumos e OpenIndiana, também são classificadas como totalmente compatíveis com POSIX. Esses sistemas operacionais eram compatíveis com POSIX até POSIX 2001.

Outros sistemas operacionais considerados em sua maioria (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 amplamente compatível com POSIX.

É compatível com Linux POSIX?

O termo “Linux” refere-se a todo o sistema operacional Linux, independentemente do tipo, como Debian GNU / Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora e CentOS, por exemplo. Para ser preciso, Linux é apenas o nome do kernel que é o componente principal deste sistema operacional gratuito.

Como Linus Torvalds descreveu 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 que são usados ​​em sistemas UNIX comerciais. Além disso, isso permitiu a ele vincular o kernel do Linux com as ferramentas GNU que seguiam principalmente a mesma abordagem. Para ser justo, o software em um sistema Linux é fornecido por 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 constitui o Linux como um sistema operacional.

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

argumentos. Para obter conformidade com POSIX, argumentos de estilo POSIX foram adicionados passo a passo. Ainda assim, a decisão final é do desenvolvedor. A partir de hoje, a maioria dos comandos aceita argumentos curtos e longos, ou mesmo argumentos sem travessões, como o comando “find”, 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 baseado em UNIX diferente, particularmente ao alternar entre Linux, OS X e Solaris.

Por enquanto, o Linux não é certificado para POSIX devido aos altos custos, exceto para as duas distribuições comerciais de Linux Inspur K-UX [12] e Huawei EulerOS [6]. Em vez disso, o Linux é visto principalmente como sendo compatível com POSIX.

Esta avaliação se deve ao fato de que as principais distribuições do Linux seguem o Linux Standard Base (LSB) em vez do POSIX [9]. O LSB visa "minimizar as diferenças entre as distribuições Linux individuais" [14]. Isso se refere à estrutura do sistema de software, incluindo o Filesystem Hierarchy Standard (FHS) usado no kernel do Linux. O LSB é baseado na especificação POSIX, na Single UNIX Specification (SUS) [10], e em vários outros padrões abertos, mas também os estende em certas áreas.

Distribuições de 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 POSIX em mais detalhes, recomendamos obter uma cópia do padrão POSIX e lê-lo na íntegra. Você pode obter o livro no site do Open Group. Isso requer uma taxa de registro, mas dá a você acesso total a este recurso valioso. Os padrões ajudam, pois permitem que você desenvolva software de forma que ele se comporte da mesma maneira em todas as plataformas UNIX.

Links e referências

Obrigada

O autor gostaria de agradecer a Axel Beckert e Veit Schiele por sua ajuda e conselhos durante a preparação deste artigo.

Top 5 cartas de captura de jogos
Todos nós vimos e amamos streaming de jogos no YouTube. PewDiePie, Jakesepticye e Markiplier são apenas alguns dos melhores jogadores que ganharam mil...
Como desenvolver um jogo no Linux
Uma década atrás, poucos usuários de Linux preveriam que seu sistema operacional favorito um dia seria uma plataforma de jogos popular para videogames...
Portas de código aberto para motores de jogos comerciais
Recriações gratuitas, de código aberto e de mecanismo de jogo de plataforma cruzada podem ser usadas para jogar jogos antigos, bem como alguns dos tít...