A interface do interpretador da linha de comandos com os drivers do kernel / dispositivo da mesma maneira que um programa GUI normal faria?

1

Por exemplo, a desmontagem é implementada em um sistema de arquivos.

A alteração da resolução de vídeo é implementada em um programa de computador que controla e gerencia a exibição em um monitor com o uso de hardware de renderização de vídeo.

Na linha de comando, você pode alterar o resoultion (eu fiz isso no Ubuntu, que é essencialmente Linux sob o capô).

A análise do comando faz interface com a API do Kernel do Linux, semelhante a fazê-lo em um programa GUI para alterar a resolução ou a CLI é diferente nessa forma?

Espero que minha pergunta não seja muito confusa. Se for, vou editar apropriadamente.

    
por Lester Bonker 20.06.2013 / 23:16

1 resposta

7

No Linux, não há realmente nenhuma distinção significativa entre aplicativos GUI e aplicativos de terminal. Na verdade, X é apenas outro aplicativo - acontece algumas coisas bastante complexas, mas no que diz respeito ao sistema operacional, não há nada de especial nisso. Tudo o que o X pode fazer, qualquer outro aplicativo pode fazer e, no final, o X trata de gerenciar dispositivos de exibição e entrada e expor uma API unificada para fazer coisas como desenhar na tela e ler a entrada do dispositivo apontador, independentemente do subjacente hardware. Vários toolkits, como Qt, GTK e outros, baseiam-se nisso para fornecer uma abordagem de alto nível para o desenvolvimento de aplicativos de usuários, oferecendo recursos avançados como caixas de texto de entrada, menus, botões clicáveis, visualizações de lista e muito mais.

Alguns aplicativos do Linux até mesmo expõem interfaces de usuário duplas, selecionando qual delas usar dependendo se houver uma exibição anexada ao terminal atual ou não. Mais tem compilações separadas dependendo se você quer uma interface X ou não. Exemplos podem ser Emacs e Vim.

Isto está em strong contraste com por exemplo Windows ou (acredito) OS X, onde a GUI é, para todos os efeitos, uma parte inseparável do próprio sistema operacional. Veja o Windows Server Core, por exemplo; eles acabaram com o Explorer e com um monte de outras coisas, mas mantiveram a GUI ali mesmo, exceto que, por padrão, apenas deixam você na janela do prompt de comando! Agora isso leva algum tempo para se acostumar.

O kernel Linux não se preocupa com qualquer linha de comando, além da sua própria (aquela que você pode editar através do gerenciador de inicialização). Qualquer coisa além disso (incluindo manipulação de $ PATH e globbing de nome de arquivo) é manipulada por aplicativos userspace como a área de trabalho GNOME, o shell bash, o aplicativo de inicialização do sistema (normalmente / sbin / init - embora esse seja um pouco de um híbrido entre uma parte do kernel e um programa userland como qualquer outro, ele é executado no espaço do usuário e não tem privilégios especiais concedidos pelo kernel), o editor de texto ou o que você tem.

E o Ubuntu não é "basicamente Linux sob o capô"; é uma distribuição Linux, como Debian, Slackware, RHEL, SuSE ou qualquer outro número de outros. Eles provavelmente empacotam algum software próprio como praticamente qualquer outra distribuição mainstream, mas não há nada de não-Linux sobre isso. Ele está intimamente relacionado ao Debian, o que pode ser usado sem o Linux (é o Debian / kFreeBSD, que é basicamente o mesmo antigo Debian, mas rodando sobre o kernel do FreeBSD).

    
por 20.06.2013 / 23:32