Qual é o significado de "POSIX"?

Respostas:

622

O POSIX é uma família de padrões, especificados pelo IEEE , para esclarecer e uniformizar as interfaces de programação de aplicativos (e problemas auxiliares, como utilitários de shell de linha de comando) fornecidos pelos sistemas operacionais Unix-y. Quando você escreve seus programas para confiar nos padrões POSIX, pode ter certeza de que os pode transportar facilmente entre uma grande família de derivativos Unix (incluindo Linux, mas não limitado a ele!); se e quando você usar alguma API do Linux que não seja padronizada como parte do Posix, será mais difícil se e quando quiser portar esse programa ou biblioteca para outros sistemas Unix-y (por exemplo, MacOSX) no futuro.

Alex Martelli
fonte
34
Não, o padrão está no nível da API - cada chamada especificada pode ser implementada no kernel ou na biblioteca C em termos de outra chamada, e isso é bom para o Posix (e também para os seus programas ;-). O MacOSX é compatível com Posix, consulte devworld.apple.com/leopard/overview/osfoundations.html . Para Windows, consulte en.wikipedia.org/wiki/POSIX#POSIX_for_Windows : atualmente, a conformidade com o Posix está incluída apenas nas edições Enterprise e Ultimate (não nas mais baratas! -), embora você possa obter parcialmente o Cygwin, en.wikipedia. org / wiki / Cygwin .
Alex Martelli
23
Seu comentário é falho, já que a participação de mercado da Microsoft em computadores de mesa faz com que seja "o que o mundo segue".
Jed Smith
29
Acho que o significado das garras é que a Microsoft não se esforça muito para ser interoperável com outras plataformas.
Mipadi
12
@deltaray abraça, amplia e extingue . MS java (java.util. Não-padrão. Java.security, java.io, java.lang e java.awt), Internet Explorer (quase dito 'exploder') e .NET (sim, eu sei que eles lançaram parcialmente fonte para .NET, mas sua licença é restritiva e ainda não é uma porta Linux. O mono está incompleto). Além disso, patentes exFAT . Você está absolutamente correto.
Wyatt8740
25
Microsoft's market share on desktops, at least, makes it "what the world follows"- Interessante notar o quanto as coisas mudaram desde que este comentário a partir de 2009 :)
GMA
516

As coisas mais importantes que o POSIX 7 define

  1. API C

    Estende bastante o ANSI C com coisas como:

    • mais operações de arquivo: mkdir, dirname, symlink, readlink, link(hardlinks), poll(), stat, sync,nftw()
    • processar e tópicos: fork, execl, wait, pipe, semaphors sem_*, memória compartilhada ( shm_*), kill, parâmetros de programação ( nice, sched_*), sleep, mkfifo,setpgid()
    • rede: socket()
    • gerenciamento de memória: mmap, mlock, mprotect, madvise,brk()
    • utilitários: expressões regulares ( reg*)

    Essas APIs também determinam os conceitos subjacentes do sistema dos quais dependem, por exemplo, forkexigem o conceito de um processo.

    Muitas chamadas de sistema Linux existem para implementar uma função API específica POSIX C e tornar compatível com Linux, por exemplo sys_write, sys_read... Muitos desses syscalls também têm extensões específicas do Linux no entanto.

    Principal implementação do desktop Linux: glibc, que em muitos casos apenas fornece um invólucro superficial para chamadas do sistema.

  2. Utilitários CLI

    Por exemplo: cd, ls, echo, ...

    Muitos utilitários são front-ends diretos do shell para uma função correspondente da API C, por exemplo mkdir.

    Maior Linux aplicação de desktop: GNU Coreutils para os pequenos, projetos GNU separadas para os grandes: sed, grep, awk, ... Alguns utilitários CLI são implementadas por Bash como built-ins .

  3. Idioma do shell

    Por exemplo, a=b; echo "$a"

    Grande implementação de desktop Linux: GNU Bash .

  4. Variáveis ​​ambientais

    Por exemplo: HOME, PATH.

    PATH a semântica de pesquisa é especificada , incluindo como as barras impedem a PATHpesquisa .

  5. Status de saída do programa

    O ANSI C diz 0ou EXIT_SUCCESSpara o sucesso, EXIT_FAILUREpara a falha e deixa a implementação restante definida.

    O POSIX adiciona:

  6. Expressão regular

    Existem dois tipos: BRE (Básico) e ERE (Estendido). O básico foi descontinuado e mantido apenas para não quebrar as APIs.

    Essas são implementadas pelas funções da API C e usadas nos utilitários da CLI, por exemplo, grepaceitam BREs por padrão e EREs com -E.

    Por exemplo: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Grande implementação do Linux: glibc implementa as funções em regex.h que programas como greppodem usar como back-end.

  7. Estrutura de diretórios

    Por exemplo: /dev/null,/tmp

    O Linux FHS estende bastante o POSIX.

  8. Nomes de arquivos

    • / é o separador de caminho
    • NUL não pode ser usado
    • .é cwd, ..pai
    • nomes de arquivos portáteis
      • use no máximo 14 caracteres e 256 no caminho completo
      • pode conter apenas: a-zA-Z0-9._-

    Veja também: o que é conformidade posix para sistema de arquivos?

  9. Convenções de API do utilitário de linha de comando

    Não obrigatório, usado pelo POSIX, mas quase em nenhum outro lugar, principalmente no GNU. Mas é verdade que é muito restritivo, por exemplo, apenas sinalizadores de letra única (por exemplo -a), sem versões longas de hífen duplo (por exemplo --all).

    Algumas convenções amplamente usadas:

    • - significa stdin onde um arquivo é esperado
    • --termina sinalizadores, por exemplo, ls -- -lpara listar um diretório chamado-l

    Consulte também: Existem padrões para opções e argumentos de linha de comando do Linux?

  10. "ACLs POSIX" (Listas de controle de acesso), por exemplo, usadas como back-end para setfacl.

    Isso foi retirado, mas foi implementado em vários sistemas operacionais, inclusive no Linux comsetxattr .

Quem está em conformidade com o POSIX?

Muitos sistemas seguem o POSIX de perto, mas poucos são realmente certificados pelo Open Group, que mantém o padrão. Os certificados notáveis ​​incluem:

  • OS X (Apple) X significa 10 e UNIX. Foi o primeiro sistema Apple POSIX, lançado em 2001. Veja também: O OSX é um sistema POSIX?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

A maioria das distribuições Linux é muito compatível, mas não é certificada porque não deseja pagar a verificação de conformidade. O K-UX da Inspur e o EulerOS da Huawei são dois exemplos certificados.

A lista oficial de sistemas certificados pode ser encontrada em: https://www.opengroup.org/openbrand/register/ e também na página wiki .

janelas

O Windows implementou o POSIX em algumas de suas distribuições profissionais.

Como era um recurso opcional, os programadores não podiam confiar nele para a maioria dos aplicativos do usuário final.

O suporte foi preterido no Windows 8:

Em 2016, uma nova API oficial semelhante ao Linux chamada "Windows Subsystem for Linux" foi anunciada. Ele inclui chamadas de sistema Linux, ELF em execução, partes do /procsistema de arquivos, Bash, GCC (TODO provavelmente glibc?) apt-getE muito mais: https://channel9.msdn.com/Events/Build/2016/P488, por isso acredito que permitirá que o Windows execute grande parte, se não todos, do POSIX. No entanto, ele é focado em desenvolvedores / implantação em vez de usuários finais. Em particular, não havia planos para permitir o acesso à GUI do Windows.

Visão geral histórica da compatibilidade oficial do Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin é um projeto de terceiros da GPL bem conhecido por "fornecer uma funcionalidade substancial da API POSIX" para Windows, mas requer que você "reconstrua seu aplicativo a partir da fonte, se quiser que ele seja executado no Windows". O MSYS2 é um projeto relacionado que parece adicionar mais funcionalidades ao Cygwin.

Android

O Android tem sua própria biblioteca C (Bionic), que não oferece suporte completo ao POSIX a partir do Android O: O Android POSIX é compatível?

Nível de bônus

A base padrão do Linux estende ainda mais o POSIX.

Use os índices que não são de quadros, eles são muito mais legíveis e pesquisáveis: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenha uma versão compactada completa das páginas HTML para grepping: Onde está a lista das funções da API do POSIX C?

Ciro Santilli adicionou uma nova foto
fonte
18
Exemplos fantásticos, se você tivesse uma definição e a resposta aceita, essa seria a resposta principal.
Marc
8
@Marc obrigado! Tento não repetir o que é dito em outras respostas, pois as pessoas provavelmente já as leram e evitar a duplicação ;-) Esse é um dilema conhecido: meta.stackoverflow.com/questions/305645/…
Ciro Santilli 郝海东 冠状 病 六四#
1
Boa idéia para realmente explicar o que o POSIX cobre (e o que não).
sleske
4
Em toda a literatura, referências à "conformidade com POSIX" são exibidas, e a definição típica de pessoas que POSIX encontra é "um conjunto de padrões de interoperabilidade entre sistemas operacionais do tipo Unix". Embora útil, essa definição deixa muitas dúvidas, principalmente em relação aos recursos que se espera que interoperem. Claro, você pode ler toda a especificação POSIX para se aprofundar nos detalhes (e dedicar muito tempo a isso). Mas, esta resposta fornece o resumo muito necessário para obter uma visão geral do escopo do POSIX. Agradecimentos especiais a Ciro por reservar um tempo para escrevê-lo!
ARX
Também pode ser bom adicionar algumas garantias Posix sobre tipos inteiros. Não sei exatamente o que é e o que não é especificado, mas sei que no mínimo o Posix requer a existência de uint8_t, uint16_t, uint32_t e os tipos assinados correspondentes. Não tenho certeza se isso garante que tipos como "int" tenham tamanhos de potência de dois e que um sistema não faça algo desagradável como um "int" com 32 bits de valor, 1 bit de sinal e 31 bits de preenchimento [portanto, incrementar um uint32_t poderia render UB]; se você tiver o padrão à mão, pode ser bom dizer o que é e o que não é garantido nesse sentido.
Supercat
74

POSIX é:

POSIX (pronunciado / ˈpɒzɪks /) ou "Interface do sistema operacional portátil [para Unix]" 1 é o nome de uma família de padrões relacionados especificados pelo IEEE para definir a interface de programação de aplicativos (API), juntamente com interfaces de shell e utilitários para software compatível com variantes do sistema operacional Unix, embora o padrão possa ser aplicado a qualquer sistema operacional.

Basicamente, foi um conjunto de medidas para aliviar a dor do desenvolvimento e uso de diferentes tipos de UNIX por ter uma API e utilitários comuns (principalmente). A conformidade limitada com o POSIX também se estendeu a várias versões do Windows.

cleto
fonte
1. Você quer dizer que o POSIX diz que todos os sistemas operacionais * nix (kernels) devem ter pelo menos esse conjunto de chamadas do sistema. direita? 2. O WINDOWS / MAC segue o POSIX? Se / caso contrário o WINDOWS (95,98,2000, xp, vista, 7) está seguindo algum padrão comum (pode ser o próprio proprietário)? Em outras palavras, POSIX no mundo da Microsoft ==?
garras
1
Basicamente, "era" um conjunto de medidas para aliviar a dor do desenvolvimento. FOI??
garras
5
I questionou o uso da palavra foi , também, mas é discutível. Para responder às suas perguntas: (1) não, o POSIX tem absolutamente nenhuma relação com o kernel, apenas descreve como deve operar; (2) O OS X é BSD e é bastante compatível com POSIX, mas existem áreas cinzentas. O Windows 2008 é o mais próximo da reclamação do POSIX; não há equivalente ao POSIX no mundo da Microsoft.
Jed Smith
1
@ garras: Não pretenda sujar a área sob a resposta do cletus ... mas. Liguei o POSIX.1-2008 na minha resposta ... ali mesmo.
Jed Smith
3
@Jed Smith, não há áreas cinzentas em termos de conformidade com o Mac OS X; O Mac OS X é certificado em conformidade com a Single UNIX Specification v3, um padrão do qual o POSIX é um subconjunto.
Michael Aaron Safyan
43

Deixe-me dar a explicação grosseira "não oficial".

POSIX é um conjunto de padrões que tenta distinguir sistemas "UNIX" e do tipo UNIX daqueles incompatíveis com eles. Foi criado pelo governo dos EUA para fins de compras. A idéia era que as compras federais dos EUA precisassem de uma maneira de especificar legalmente os requisitos para vários tipos de ofertas e contratos de uma maneira que pudesse ser usada para excluir sistemas para os quais uma base de código ou equipe de programação existente NÃO seria portátil.

Desde que o POSIX foi escrito post facto ... para descrever um conjunto pouco semelhante de sistemas concorrentes ... NÃO foi escrito de uma maneira que pudesse ser implementada.

Assim, por exemplo, o NT da Microsoft foi escrito com conformidade POSIX suficiente para se qualificar para alguns lances ... mesmo que o subsistema POSIX fosse essencialmente inútil em termos de portabilidade prática e compatibilidade com sistemas UNIX.

Vários outros padrões para o UNIX foram escritos ao longo das décadas. Coisas como o SPEC1170 (mil e setecentas e setenta chamadas de funções que precisavam ser implementadas de forma compatível) e várias encarnações do SUS (especificação UNIX única).

Na maioria das vezes, esses "padrões" são inadequados para qualquer aplicação técnica prática. Eles existem mais por argumentação, disputa legal e outras razões disfuncionais.

Jim Dennis
fonte
1
Então, como o Linux implementa a maioria do POSIX, incluindo muitas das extensões?
Ninjalj 27/06
8
@ninjalj: O Linux foi escrito para implementar um conjunto prático de funções do tipo UNIX. Fazer isso em conformidade com o POSIX faz todo o sentido. No entanto, meu argumento foi que o POSIX não foi criado como uma especificação para a implementação de novos sistemas operacionais ... foi criado como uma maneira de a equipe de compras do governo dos EUA distinguir entre aqueles que se qualificavam para determinadas categorias em lances daqueles que não . O foco no Linux é fornecer os recursos utilizáveis ​​de uma maneira que seja razoavelmente compatível, robusta e com bom desempenho. O POSIX não é um acidente ao longo do caminho.
Jim Dennis
3
Bastante engenhoso de sua parte afirmar que o POSIX foi escrito post facto! Essa é a marca registrada de uma boa organização de desenvolvimento de padrões (SDO), em que o consenso não é alcançado até que exista pelo menos uma implementação compatível.
fpmurphy
4
@fpmurphy: Criar uma especificação ex post de fato com base em uma ou duas implementações interoperáveis ​​é a norma para os padrões de protocolo de rede IETF ... que interagem com acoplamentos soltos intencionalmente. Não foi um processo bem-sucedido para padronização do SO. A API entre os programas e o sistema (kernel ou microkernel e seus servidores de subsistema) é muito mais fortemente acoplada do que clientes e servidores ou pares em redes. (Não estou dizendo que é impossível; basta apontar que existem diferenças e que a história não demonstrou ser promissora).
Jim Dennis
2
Os esforços do IEEE para especificar o POSIX em 1985 foram estimulados pelo governo dos EUA. Faça alguma pesquisa, leia um livro de história ou algo assim.
Rustyx
29

O POSIX é um padrão para sistemas operacionais que deveria facilitar a gravação de software de plataforma cruzada. É um negócio especialmente importante no mundo do Unix.

Hank Gay
fonte
15
Não se deve apenas "facilitar" a criação de código de plataforma cruzada, mas sim a escrita de código de plataforma cruzada. A única exceção é o Windows, porque a Microsoft pensa que é de alguma forma melhor que todos os outros e não precisa cumprir. No entanto, prevejo que isso funcionará contra eles, principalmente porque o Mac e o Linux ganham mais participação de mercado. Se eles realmente são para os "desenvolvedores, desenvolvedores, desenvolvedores", eles perceberão que os desenvolvedores desejam conformidade com UNIX.
Michael Aaron Safyan
Com base no que ouvi de pessoas que trabalham com isso muito mais de perto do que nunca, isso pode ter facilitado as coisas, mas certamente não foi suficiente para a impressão de escrever uma vez, executar em qualquer POSIX mais as pessoas entendem quando ouvem que é um "padrão" para sistemas operacionais.
Hank Gay
6
Eles não pensam que são "melhores que todos os outros"; eles sabem que são maiores que todos os outros. É também por isso que eles mudam de ideia à medida que perdem participação de mercado. Não é exclusivo deles, por exemplo, o Netscape começou a se preocupar muito mais com os padrões da Web quando eles não eram mais os mais populares.
24411 Ken
Escrever um aplicativo para usar apenas APIs POSIX facilita muito a porta entre diferentes sistemas operacionais Unix e Unix. No entanto, esse é o padrão de consenso mais baixo do denominador comum - portanto, utilitários ou aplicativos específicos do sistema operacional ou do hardware geralmente requerem alguma reescrita.
fpmurphy
2
@ Ken e é por isso que não devemos deixar o cromo do Google ficar muito confortável.
Wyatt8740
29

POSIX é um conjunto de padrões apresentados pelo IEEE e pelo The Open Group que descreve como um Unix ideal operaria. Programadores, usuários e administradores podem se familiarizar com o documento POSIX e esperar que um Unix com reclamação POSIX forneça todos os recursos padrão mencionados.

Como todo Unix faz as coisas de maneira um pouco diferente - Solaris, Mac OS X, IRIX, BSD e Linux todos têm suas peculiaridades - o POSIX é especialmente útil para os profissionais do setor, pois define um ambiente padrão para operar. Por exemplo, a maioria das funções na biblioteca C é baseada em POSIX; um programador pode, portanto, usar um em seu aplicativo e esperar que ele se comporte da mesma forma na maioria dos Unices.

No entanto, as áreas divergentes do Unix são tipicamente o foco, e não as áreas padrão.

O melhor do POSIX é que você pode lê-lo:

The Open Group Base Specifications Edição 7

A edição 7 é conhecida como POSIX.1-2008, e há coisas novas por aí - no entanto, o Google-fu para POSIX.1 e isso permitirá que você veja toda a história por trás do que é o Unix.

Jed Smith
fonte
2
Eu acho que você está usando o termo "UNIX" incorretamente. O UNIX agora se refere à Especificação UNIX Única, e qualquer sistema operacional UNIX é um sistema operacional que esteja em conformidade com a Especificação UNIX Única. Talvez você queira dizer UNIX?
Michael Aaron Safyan
8
@ Michael: Dado seus comentários em outras respostas, você é obviamente uma pessoa muito polarizada, com opiniões que não são exatamente construtivas. Esse comentário específico é muito pedante, e meu significado foi transmitido independentemente da escolha de um rótulo com o qual você possa discordar. Além disso, o Windows é compatível com POSIX nas versões mais avançadas. Respire fundo e dê um passo atrás, por favor.
Jed Smith
1
@Jed Smith, opiniões fortes à parte, a implicação do post é que alguns sistemas operacionais certificados como UNIX não são ... então, acho justo dizer que isso é enganoso. Além disso, no que diz respeito ao Windows, desde que haja edições que não sejam compatíveis, os desenvolvedores não podem confiar no POSIX ao direcionar a plataforma Windows, negando assim todo o objetivo de ter o POSIX.
Michael Aaron Safyan
Unix é um sistema operacional. UNIX é uma marca mantida pelo The Open Group. Os sistemas certificados para os perfis de marca UNIX95, UNIX98 ou UNIX03, cuja conformidade com uma versão específica da Especificação Única UNIX forma a maioria dos requisitos de marca, pode usar o termo UNIX.
fpmurphy
6

Em 1985, indivíduos de empresas de toda a indústria de computadores se uniram para desenvolver o padrão POSIX (Interface de sistema operacional portátil para ambientes de computador), que se baseia amplamente no SVID (UNIX System V Interface Definition) e em outros esforços anteriores de padronização. Esses esforços foram estimulados pelo governo dos EUA, que precisava de um ambiente de computação padrão para minimizar seus custos de treinamento e compras. Lançado em 1988, o POSIX é um grupo de padrões IEEE que definem as interfaces API, shell e utilidade para um sistema operacional. Embora sejam voltados para sistemas do tipo UNIX, os padrões podem ser aplicados a qualquer sistema operacional compatível. Agora que esses padrões foram aceitos, os desenvolvedores de software podem desenvolver aplicativos executados em todas as versões compatíveis do UNIX, Linux,

Do livro: Um guia prático para Linux

Koray Tugay
fonte
4

Posix é mais como um sistema operacional, é um "padrão do sistema operacional". Você pode imaginá-lo como um sistema operacional imaginário, que na verdade não existe, mas possui uma documentação. Estes documentos são o "padrão posix", definido pelo IEEE, que é a grande organização padrão dos EUA. Os sistemas operacionais que implementam esta especificação são "compatíveis com Posix".

As regulamentações governamentais preferem soluções compatíveis com Posix em seus investimentos, portanto, estar em conformidade com Posix tem uma vantagem financeira significativa, principalmente para as grandes empresas de TI dos EUA.

A recompensa por um sistema operacional ser totalmente compatível com posix, é uma garantia de que ele irá compilar e executar todos os aplicativos compatíveis com Posix sem problemas.

O Linux é o mais conhecido. OSX, Solaris, NetBSD e Windows NT também são reproduzidos aqui. Free e OpenBSD são apenas "quase" compatíveis com Posix. A conformidade posix do WinNT é apenas uma pseudo-solução para evitar essa regulamentação governamental acima.

peterh - Restabelecer Monica
fonte
3

Esse padrão fornece uma base comum para sistemas operacionais semelhantes ao Unix. Ele especifica como o shell deve funcionar, o que esperar de comandos como ls e grep e várias bibliotecas C que os autores de C podem esperar ter disponíveis.

Por exemplo, os pipes que os usuários da linha de comando usam para encadear comandos são especificados aqui em detalhes, o que significa que a função popen (pipe open) de C é padrão POSIX, não padrão ISO.

Koray Tugay
fonte
3

POSIX significa Interface do sistema operacional portátil e é um padrão IEEE projetado para facilitar a portabilidade do aplicativo. O POSIX é uma tentativa de um consórcio de fornecedores de criar uma única versão padrão do UNIX.

Farruh Habibullaev
fonte
0

O POSIX define um conjunto de padrões para um sistema operacional ou programa. O objetivo é escrever um novo software compatível com sistemas semelhantes ao UNIX.

Por exemplo, um programa executado no Linux também pode ser compilado e executado em outros sistemas semelhantes ao UNIX, como Solaris, HP-UX e AIX, etc.

Os exemplos mais populares são GNU Bash100% de conformidade e gawkutilidade POSIX .

sras
fonte
0

O Posix controla a interoperabilidade, portabilidade e em outras áreas, como o uso e o mecanismo do fork, permissões e padrões de sistema de arquivos como / etc, / var, / usr e assim por diante . Portanto, quando os desenvolvedores escrevem um programa em um sistema compatível com Posix, como, por exemplo, Linux, geralmente, nem sempre, é garantido que ele seja executado em outro sistema compatível com posix, como o sistema AIX da IBM ou outras variantes comerciais do Unix. O Posix é uma coisa boa de se ter, pois facilita o desenvolvimento do software para a portabilidade máxima que ele busca. Espero que esta resposta faça sentido.

Obrigado a Jed Smith & Tinkertim por apontarem meu erro - meu mal !!! :(

t0mm13b
fonte
Os padrões do sistema de arquivos são tratados fora do POSIX.
Jed Smith
Você está confundindo o POSIX com coisas como o LSB (Linux Standard Base). Dois (na maioria) sistemas operacionais compatíveis com POSIX seriam o FBSD e o Linux, mas ambos têm uma organização do sistema de arquivos bastante diferente e instalações de bibliotecas padrão.
Tim Post
0

Uma especificação (blueprint) sobre como tornar um sistema operacional compatível com o sistema operacional UNIX tardio (que Deus o abençoe!). É por isso que o macOS e o GNU / Linux têm linhas de comando de terminal, GUIs, bibliotecas muito semelhantes, porque ambos foram projetados de acordo com o modelo POSIX.

O POSIX não informa aos engenheiros e programadores como codificar, mas o que codificar.

MCH
fonte
-1

Alguns fatos sobre o POSIX que não são tão brilhantes.

O POSIX também é a interface de chamada do sistema ou API e tem quase 30 anos.

Ele foi projetado para acesso de dados serializados ao armazenamento local , usando computadores únicos com CPUs únicas.

A segurança não era uma preocupação importante no POSIX, levando a numerosos ataques de condição de corrida ao longo dos anos e forçando os programadores a contornar essas limitações.

Erros graves ainda estão sendo descobertos, erros que poderiam ter sido evitados com um design de API POSIX mais seguro.

O POSIX espera que os usuários emitam uma chamada síncrona por vez e aguardem seus resultados antes de emitir a próxima. Os programadores de hoje esperam emitir muitas solicitações assíncronas ao mesmo tempo para melhorar a taxa de transferência geral.

Essa API síncrona é particularmente ruim para acessar objetos remotos e na nuvem, onde a alta latência é importante.

prosti
fonte
API de kernel síncrona não precisa significar processos de thread único e E / S serializadas. Também não tem nada a ver com máquinas SMP. Estes são completamente independentes. (Embora concorde que a API do kernel sincronização é sub-ótima, mas não tão fortemente como em seu post parece.)
peterh - Reintegrar Monica