A Organização Kernel
Linux (
Linux Kernel Organization) é uma Corporação de Benefício Público do Estado da Califórnia dos Estados Unidos da América, criada em 2002 para distribuir o Kernel do Linux e outros softwares de código aberto para o público, sem custos. É reconhecida pela IRS (Receita Federal Americana) como uma fundação privada operacional 501(c)3.
A Organização Kernel Linux é gerida pela
Fundação Linux que oferece total apoio técnico, financeiro e pessoal para a execução e manutenção da infra-estrutura do
kernel.org.
Os servidores estão localizados em Corvallis, Oregon, EUA; Palo Alto e San Francisco, Califórnia, EUA; Amsterdã, Holanda, e Umeå, na Suécia. O uso com violação de quaisquer leis, é proibido.
Linux é uma marca registrada de
Linus Torvalds. Todas as marcas registradas são de propriedade de seus respectivos proprietários.
O que é o Linux?
Linux é um clone do sistema operacional
Unix, mas não é um Unix, uma vez que não tem mais nenhum código do Unix original, e seu kernel foi escrito a partir do zero, por Linus Benedict Torvalds, com a assistência de uma equipe de hackers da Net.
Ele atende às normas POSIX (
Portable Operating System Interface), que pode ser traduzida como "Interface Portável entre Sistemas Operacionais" e está em conformidade com a especificação
Single UNIX.
O Linux tem todas as características que se espera de um moderno e pleno sistema Unix, incluindo operações de multitarefa, memória virtual, bibliotecas compartilhadas, carregamento de demanda, executáveis compartilhados copy-on-write, gerenciamento de memória próprio e rede multistack, incluindo IPv4 e IPv6.
Embora originalmente desenvolvido em primeiro lugar para PCs 32 bits x86 (386 e acima), hoje o Linux também funciona em uma variedade de arquiteturas de outros processadores, como em todos os 32 bits e 64 bits.
Se você é novo no
GNU/Linux e não quer baixar o kernel, que é apenas um componente do sistema Linux, mas você quer uma distribuição completa do Linux, existem inúmeras distribuições disponíveis para download na Internet, bem como para a compra de vários fornecedores.
Alguns são de uso geral e alguns são otimizados para usos específicos. Atualmente, existem espelhos de várias distribuições disponíveis em:
Note que, no entanto, a maioria das distribuições tem vários gigabytes e a menos que você tenha um link de Internet rápido, você pode poupar aborrecimentos e comprar um CD-ROM e/ou DVD com uma distribuição.
Texto adaptado de:
https://www.kernel.org/linux.html
O Kernel Linux é lançado sob a licença GNU GPL versão 2 e, portanto, é Software Livre como definido pela Free Software Foundation. Você pode ler a cópia integral da licença no arquivo
COPYING distribuído com cada versão do kernel do Linux.
A base de um sistema operacional é o kernel. O articulado e elegante sistema Linux, iniciado em 1991 pelo Finlandês Linus Torvalds, é formado basicamente pelo kernel, a biblioteca C, o compilador, a cadeia de ferramentas e os utilitários básicos do sistema, como o processo de conexão e o shell.
Um sistema Linux também inclui uma implementação X Windows System moderna, inclusive um ambiente da área de trabalho cheio de recursos, como o
GNOME ou o
KDE.
Todo o código fonte do kernel Linux está disponível na Internet em
Kernel.org. O Kernel Linux é um software gratuito e open source, sendo que você está livre para alterar o código fonte e fazer qualquer modificação que quiser (se você souber como), mas, para serem efetivadas como parte oficial do Kernel Linux, estas modificações tem que obrigatoriamente resolver um problema real e específico, ter uma construção sadia e uma implementação clara. Esta é a política.
Nos sistemas modernos com unidades de gerenciamento de memória protegida, o kernel geralmente reside em um nível "mais alto" do sistema quando comparado com as aplicações normais do usuário.
Isto inclui um espaço da memória e um acesso completo para o hardware (geralmente através dos drivers). Esse estado do sistema e o espaço da memória são chamados coletivamente de "espaço do kernel" (Kernel Space).
Em oposição, as aplicações do usuário são executadas no "espaço do usuário" (User Space). Ao executar o kernel, o sistema está no espaço do kernel em oposição à execução normal do usuário no espaço do usuário.
As aplicações executadas no sistema se comunicam com o kernel através da "chamada do sistema" (Figura 1). Uma aplicação em geral chama as funções de uma biblioteca - por exemplo, a biblioteca
C - que por sua vez conta com a interface de chamada do sistema para instruir o kernel a executar as tarefas em seu nome.
Fonte: LOVE, Robert. Desenvolvimento do Kernel do Linux, 2004.
Algumas chamadas da biblioteca fornecem muitos recursos não encontrados na chamada do sistema. Quando uma aplicação executa uma chamada do sistema, é dito que o kernel está sendo executado em nome da aplicação. E mais, é dito que a aplicação está executando uma chamada do sistema no espaço do kernel e o kernel está sendo executado no contexto do processo.
Um programa em si não é um processo, um processo é um programa ativo com seus recursos afins. Dois ou mais processos podem existir executando o mesmo programa e compartilhando diversos recursos.
Um processo inicia sua vida através de uma chamada do sistema que cria um novo processo duplicando um já existente. Outro nome para processo, é tarefa. Porém, a denominação de um programa em execução no kernel é tida como uma tarefa e a denominação de um programa do espaço do usuário é tida como um processo.
O Linux transfere a execução do espaço do usuário para o espaço do kernel sempre que a aplicação fizer uma chamada ao sistema ou a aplicação for suspensa por uma interrupção de hardware. Num driver, algumas funções são executadas usando chamadas ao sistema e outras fazem interrupções.
Os kernels também gerenciam o hardware do sistema. Praticamente todas as arquiteturas fornecem o conceito de "interrupções". Quando o hardware deseja se comunicar com o sistema, ele emite uma interrupção que interrompe de modo assíncrono o kernel.
As interrupções, geralmente, estão associadas a um número. O kernel usa o número para executar uma "sub-rotina de interrupção" determinada para processar e responder à interrupção.
Por exemplo, quando você digita, o controlador do teclado emite uma interrupção para permitir que o sistema saiba que há dados no buffer do teclado. O kernel anota o número da interrupção sendo emitida e executa a sub-rotina de interrupção correta.
A sub-rotina de interrupção processa os dados do teclado e permite que o controlador do teclado saiba que está pronto para mais dados. Para fornecer a sincronização, o kernel pode desativar as interrupções - todas as interrupções ou apenas um número específico de interrupções.
As interrupções, as IRQs (Interrupt Request Line), podem ser vistas no Setup do CMOS da placa-mãe. O Setup do CMOS é chamado erroneamente de BIOS, pois BIOS é todo o sistema básico de entrada e saída (
Basic Input/Output System), ou seja, é o sistema que vem instalado de fábrica no CMOS (
Complementary Metal-Oxide-Semiconductor), que é um chip de circuitos integrados.
As IRQs são a forma pela qual os componentes de hardware requisitam um tempo computacional do sistema para a CPU. Uma IRQ é a sinalização de um pedido de interrupção de hardware.
Os computadores modernos compatíveis com o IBM PC, possuem 16 designações de IRQ (0-15), cada uma delas representando uma peça física (ou virtual) de hardware. Por exemplo, a IRQ0 é reservada para o temporizador do sistema, enquanto a IRQ1 é reservada para o teclado. Quanto menor for o número da IRQ, mais prioridade ela terá para ser processada.
No Linux, o ambiente gráfico (GNOME, KDE, etc), os programas e aplicativos (
BrOffice; aMSN; iptables; BIND; navegadores como
Firefox, Iceweasel, etc), grosso modo, estão instalados no sistema, mas as funções que estão habilitadas no kernel só serão carregadas para a memória quando o programa for usado.
Fazendo um comparativo, o Windows quando inicializa já carrega em memória a maioria das suas funções e processos, comumente chamados de drivers; o Linux só carrega o necessário para o kernel trabalhar. Por essa razão é que o Linux ocupa pouca memória.
O "monstruoso" Windows, com suas mais de 100 milhões de linhas de código auditadas (Windows 7 e Windows 8), é o que se chama de arquitetura fechada, ou seja, é um "pacote" fechado, onde você só pode instalar e desinstalar programas adicionais, mas não pode mudar o que vem com ele, pois seu código fonte não é aberto. O kernel do Windows tem em torno de 35 milhões de linhas.
O kernel do Linux, na versão 2.6.27 ultrapassou 10 milhões de linhas de código, incluindo espaços, comentários e documentação. São mais de dez milhões de linhas ocupando o mesmo espaço na memória.
Características do kernel Linux
1. Suporta o carregamento dinâmico dos módulos do kernel. Embora o kernel do Linux seja monolítico, é capaz de carregar e descarregar dinamicamente o código do kernel segundo a demanda.
2. Tem suporte do multiprocessador simétrico (SMP).
3. O Kernel Linux é antecipado (
preemptive). É capaz de antecipar uma tarefa, caso ela esteja sendo executada no kernel.
4. O Kernel Linux não tem drivers no user space, e sim
Kernel Loadable Modules que rodam no Kernel.
5. O Kernel Linux não pode utilizar aritmética de ponto flutuante.
6. A memória do Kernel Linux não é paginável. Cada byte de memória consumido é um byte a menos na memória física, portanto, seja seletivo e cauteloso ao compilar módulos como built-in no kernel.
7. O Kernel Linux executa operações em segundo plano através das threads - processos-padrões que existem unicamente no kernel space e não trocam de contexto no user space, porém, são programáveis e são preemptive (antecipados) como processos normais.
Uma thread do kernel pode ser criada apenas por outra thread do kernel. O Linux não diferencia o que é threads do que é processo normal (threads significa linha de execução e é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente).
Para o Kernel Linux todos os processos são iguais e apenas compartilham recursos. Mais claramente: para o Kernel Linux não há conceito de threads. Uma thread no Linux é meramente um processo que compartilha certos recursos, diferentemente de outros sistemas operacionais, como o Microsoft Windows e o Oracle Solaris, que tem um suporte explícito para threads.
8. Quando um processo ou uma tarefa termina, o Kernel Linux libera os recursos e notifica os outros processos e tarefas que estavam associados a eles.
9. O Kernel Linux é gratuito, em todos os sentidos da palavra.