O Android é compatível com o Linux Standard Base?

6

Movido do Stack Overflow, onde percebo que estava fora do tópico, já que estava pedindo fontes - até onde sei, as regras proíbem isso, mas não aqui.

Eu sei que o kernel no Android agora é basicamente o kernel do Linux, com algumas exceções, como wakelocks (como descrito por John Stultz .) Mas é perto o suficiente para ser compatível com a Base Padrão do Linux? (Ou para esse assunto com POSIX e / ou a única especificação Unix?)

Estou escrevendo sobre isso em um trabalho acadêmico, assim como a resposta em si seria ótimo ter uma fonte relativamente confiável que eu possa citar: um artigo ou livro revisado por pares seria o ideal, mas algo dos documentos do desenvolvedor do Google ou uma pessoa com credibilidade estabelecida (Torvalds, Andrew Josey, etc.) estaria bem.

    
por Displaced Hoser 28.07.2014 / 13:47

2 respostas

6

O LSB , POSIX e a Especificação Única do UNIX envolvem significativamente userland . Simplesmente usar um kernel que também é usado como base de um sistema operacional "compatível com o padrão Unix", "principalmente compatível com POSIX" - GNU / Linux - não é suficiente para tornar o Android tão bom assim. Existem, no entanto, alguns elementos * nix-ish, como o shell , que é um shell Korn "amplamente compatível" implementação (em pré-4.0, pode ser o shell ash, que é usado em sistemas GNU / Linux embutidos via busybox) e vários utilitários de linha de comando POSIX-y para acompanhá-lo. Não existe o conjunto completo que a maioria das pessoas reconheceria do mundo "unix-like", no entanto.

is it close enough to be compliant with the Linux Standard Base?

Uma peça central do LSB é a hierarquia do sistema de arquivos, e o Android não usa isso. O LSB realmente adiciona coisas ao POSIX, e como o Android não é quase isso, está ainda mais longe de ser compatível com o LSB. Isso é explicitamente não uma meta para a plataforma, acredito. O kernel do linux era usado para suas próprias propriedades, e não porque pudesse ser usado como o núcleo de um sistema POSIX; foi adotado pelo GNU originalmente por ambas as razões.

Para esclarecer essa distinção em relação a uma especificação orientada a espaço do usuário - como POSIX, Unix ou as extensões LSB - considere algumas das coisas POSIX tem a dizer sobre a biblioteca C nativa. É nesse ponto que nos deparamos com coisas específicas da plataforma, como rede e a maioria das chamadas do sistema, como read() - read() não é, na verdade, padrão C. É uma coisa do Unix, historicamente. O POSIX define essas interfaces como , mas elas são implementadas na biblioteca C do userland , então todo o resto usa essa biblioteca como base. A biblioteca C no GNU / Linux é a Biblioteca GNU C, um trabalho completamente separado do kernel. Embora essas duas coisas funcionem juntas como o núcleo do sistema operacional, nenhum dos padrões em discussão aqui diz qualquer coisa sobre como isso deve acontecer, e assim, de fato, eles não dizem nada sobre o que o kernel é ou deve fazer . Eles dizem muitas coisas sobre o que a biblioteca C é e deve fazer, ou seja, se você escreveu uma biblioteca C para trabalhar com um determinado kernel - qualquer kernel , independentemente de forma ou características - e essa biblioteca fornece uma API de usuário que satisfaz a especificação POSIX, você tem um sistema operacional compatível com POSIX.

O LSB tem algumas coisas a dizer sobre o /proc , que o linux fornece como uma interface do kernel. No entanto, o fato de que isso (por exemplo) é fornecido diretamente pelo kernel não significa que o LSB diz que tem que ser - ele apenas diz que isso deve / poderia estar disponível, e em caso afirmativo, qual é a natureza da informação.

    
por 28.07.2014 / 15:32
4

A palavra "Linux" tem dois significados. O significado mais comum, de longe, é o sistema operacional Linux , também conhecido como GNU/Linux ou GNU / X11 / Apache / Linux / TeX / Perl / Python / FreeCiv , que é uma imitação do Unix sistema operacional. A palavra “Linux” também pode significar o kernel Linux , que é o kernel do sistema operacional Linux.

O Android é um sistema operacional completamente diferente, que também usa o kernel do Linux. O Linux Standard Base é uma especificação de sistemas operacionais. Ele só serve para se aplicar ao sistema operacional Linux, não ao Android. O Android não está em conformidade com o LSB¹. O LSB não se aplica ao kernel como tal, porque o código normal do aplicativo não interage diretamente com o kernel, somente através de interfaces como a biblioteca padrão e o diretório /proc ; em princípio, seria possível cumprir com o LSB com um kernel diferente do Linux (embora na prática houvesse muitos recursos para emular).

O Android também não está de acordo com as especificações do Unix, como o POSIX; O Android não é um sistema operacional semelhante ao Unix . O Linux, de modo geral, cumpre com o POSIX (algumas versões de algumas distribuições foram formalmente certificadas como compatíveis).

¹ É possível instalar um sistema Linux ao lado do Android e rodando a partir do mesmo kernel. Mas você não está mais executando o "Android", está rodando o Android e o Linux juntos.

    
por 29.07.2014 / 03:16