Bibliotecas Kernel linux

1. Bibliotecas Kernel linux

Bruno
uNclear

(usa Slackware)

Enviado em 17/11/2016 - 16:30h

Por que o kernel linux não usa as bibliotecas padrao do c? Pelo oq estou vendo as bibliotecas sao todas refeitas para ser implementadas no kernel como exemplo o printk.
Vi um exemplo de um s.o que faz so o hello world, o cara tbm implementa a funçao de print inves de usar a padrao da linguagem, alguem ai saberia me explicar o porque?


  


2. Re: Bibliotecas Kernel linux

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/11/2016 - 19:12h

O objetivo do Kernel é controlar dispositivos, incluindo processador, memória e discos, e cuidar do ciclo de vida de processos e de suas interações com os dispositivos suportados e entre si. Para fazer essas coisas, o kernel precisa executar instruções privilegiadas do processador.

O kernel faz essas coisas em benefício de outras aplicações que executem sobre ele. A aplicação pede ao kernel para escrever um arquivo, e o kernel trata de ver se aquele arquivo está num disco local, num disco remoto (via SAN, por exemplo) ou se é um objeto acessível através da rede. A aplicação não precisa de se preocupar com os detalhes que estão por trás da operação. Em vez disso, ela pode cuidar de funções que não dependem diretamente de acesso privilegiado ao hardware. Você não precisa estar dentro do kernel para converter uma string em inteiros ou vice-versa, nem para saber se essa string deve usar este ou aquele conjunto de caracteres, nem para calcular uma diferença entre duas datas Também não cabe ao kernel fazer mapeamento entre nomes e endereços IP e vice-versa (o kernel só usa IPs, mas as pessoas preferem nomes) ou entre o nome do usuário e o código numérico usado por esse usuário quando estiver usando um processo (o kernel só usa números, mas as pessoas preferem nomes de novo).

Do ponto de vista do kernel, a biblioteca padrão do C (libc) é uma aplicação. Essa aplicação faz muita coisa por e para as pessoas (particularmente programadores), inclusive dar um jeito de se comunicar com o kernel na linguagem esperada pelo kernel. Mas mesmo o fato de falar com o kernel para realização de algumas tarefas não tira da biblioteca seu caráter de aplicação, nem passa perto de esgotar suas funções. Grande parte da funcionalidade da libc é independente do kernel.

Não embutir a biblioteca dentro do kernel tem algumas razões de ser. Uma delas é não misturar coisas distintas. Outra razão é que o kernel depende de pouca coisa que existe dentro da libc, e muitas operações que poderiam ser tomadas como análogas são realizadas de modo diferentes. Por exemplo, ao alocar memória para si mesmo, o kernel possivelmente usa atributos diferentes daqueles que usaria para entregar memória para uma aplicação. Para outras funções semelhantes, como a printk, que você citou como análoga a printf(), a implementação do kernel é possivelmente muito mais simples que a da libc, já que seu objetivo é produzir mensagens curtas, e certamente não precisa se preocupar com locales, formatos alternativos, dezenas de tipos de dados diferentes e com diferentes peculiaridades etc.


3. Bibliotecas Kernel linux

Bruno
uNclear

(usa Slackware)

Enviado em 17/11/2016 - 21:12h

Mais uma vez valeu pela atenção a pergunta, você sempre me da respostas bastante claras


4. Re: Bibliotecas Kernel linux

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/11/2016 - 21:28h

Tem uma anedota de internet que diz que 'você percebe que é hacker quando começa a perceber que está usando printk() no lugar de printf()'.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



5. Re: Bibliotecas Kernel linux

Bruno
uNclear

(usa Slackware)

Enviado em 17/11/2016 - 21:32h

listeiro_037 escreveu:

Tem uma anedota de internet que diz que 'você percebe que é hacker quando começa a perceber que está usando printk() no lugar de printf()'.


Um dia chego a esse nivel o/







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts