[Livro] Linux Kernel Development

- por Sergio Prado

Categorias: Linux, Livros Tags: ,

Já tenho o livro Linux Kernel Development do Robert Love há algum tempo, mas só agora terminei minha leitura da primeira à última página.

É um livro ao mesmo tempo denso e didático. Bastante teoria, e muito código do kernel. Sei que ainda irei ler e reler muitas partes do livro, conforme avanço meus estudos e trabalho com projetos em Linux embarcado, mas seu conteúdo me ajudou a entender uma série de conceitos, e a identificar o porquê de certas decisões na implementação do kernel, incluindo:

  • como o Linux gerencia internamente os processos, e que dentro do kernel processos e threads são a mesma coisa – a diferença esta no compartilhamento de recursos, e como o Linux implementa tudo isso através da chamada de sistema clone().
  • a modularidade do escalonador de tarefas do Linux, podendo ter diferentes classes de escalonadores de tarefas, com diferentes algoritmos, rodando ao mesmo tempo para diferentes classes de processos!
  • como o escalonador de tarefas padrão do Linux (CFS – Completely Fair Scheduler) calcula por quanto tempo cada processo deve rodar, usando o nice do processo para definir um peso proporcional ao total de processos disponíveis para execução.
  • como a implementação das chamadas de sistema são feitas no nível do hardware.
  • como implementar um manipulador de interrupção (interrupt handler).
  • a diferença entre os dois contextos de execução do kernel do Linux: contexto de processo e contexto de interrupção, explicando porque você não pode usar uma função que pode dormir (i.e. que gera mudança de contexto) dentro de uma interrução.
  • quando e como usar softirqs, tasklets e work queues para deferir trabalho no tratamento de interrupção e em módulos do kernel (no caso de work queues).
  • como usar mecanismos de sincronização e proteger o acesso à recursos compartilhados com operações atômicas usando o tipo atomic_t, spinlocks, semáforos, mutexes e variáveis completion.
  • que o significado de BogoMIPS (aquela mensagem que a gente sempre vê no início do boot do kernel) é uma medida de quão rápido é o processador em não fazer nada!
  • como funciona o gerenciador de memória virtual e a camada slab.
  • como funciona a implementação de cache de disco (page cache) e qual o algoritmo usado para propagar as alterações (page writeback).
  • etc!

Tudo isso exemplificado com muito código! Às vezes me pego pensando porque um recurso tão valioso e disponível gratuitamente como o kernel do Linux não é usado como ferramenta de ensino de sistemas operacionais em instituições de ensino Brasil afora.

É realmente um livro que todo aquele que pretende trabalhar no kernel do Linux (seja profissionalmente ou por hobby) deveria ter.

CONTRIBUINDO

Aproveitando que estamos falando sobre o kernel, recentemente assisti um vídeo do Greg Kroah-Hartman sobre como “Escrever e submeter seu primeiro patch do kernel”.

Para quem não conhece, Greg é o mantenedor oficial da árvore estável do kernel e de alguns sub-sistemas, incluindo a árvore staging de drivers. Suas palestras são sempre didáticas e bem humoradas. Ele fala não só apenas sobre como submeter um patch, mas dá o caminho das pedras para quem quer se aventurar no desenvolvimento do kernel do Linux.

À propósito, o Greg é também o autor do livro Linux Kernel in a Nutshell, disponível gratuitamente no blog dele.

Recursos para estudo temos de sobra. Informações acessíveis sobre tudo. Software open-source e hardware open-source. De uma coisa tenho certeza. O futuro também será open-source. Me parece uma evolução natural. E você? Vai fazer parte deste futuro?

Um abraço,

Sergio Prado

  • Sergio, apenas pra compartilhar com o pessoal: a tradução deste livro, pela ciência moderna, é tenebrosa. Inventaram de traduzir jargões e o resultado torna tudo ainda mais difícil. A edição que tenho é antiga, não sei se corrigiram isso. Em resumo: leia em inglês.

    • Pois é Marcelo, depois que eu li um livro onde traduziam “tarball” para “bolas tar” eu parei de comprar livros traduzidos. Só compro livros na nossa lingua quando o autor é brasileiro.

      Um abraço.

  • Gabriel Santos

    Sergio te mandei um email relatando um pouco sobre umas duvidas minhas> Se poder responder agradeceria ! E outra parabens pelo seu blog! Ganhara mais um leitor!

  • Andre

    entre
    Embedded Linux Primer: A Practical Real-World Approach
    , este e o The Linux Programming Interface: A Linux and UNIX System Programming Handbook
    Você ficaria com qual?
    Abraços

    • Olá André,

      Com certeza ficaria com os dois! :)

      Eles tem propósitos totalmente diferentes, não dá pra comparar. O primeiro é sobre o desenvolvimento de sistemas com Linux embarcado, e o segundo é sobre o desenvolvimento de aplicações Linux.

      Um abraço.

  • cleber

    Não consegui resistir e comprei este livro. Acho que chega esta semana.. Seu site foi fundamental na aquisição. Ainda, vou pegar um livro de C para voltar a programar.

    Utilizar um kit Xilinxs ou Altera de FPGA proporciona, através do HDL, a criação e implementação de um processador com teclado e mouse..

    Você acha viável estudar o desenvolvimento de kernel em FPGA? Poderia recomendar algum kit para ajudar nos estudos? Rodo no meu computador apenas o slackware e gostaria de continuar com ele.
    Abs.

    • Olá Cléber!

      Minha experiência é quase nula em FPGA. Mas tenho visto o pessoal usar Linux nas plataformas Microblaze da Xilinx e Nios II da Altera. Com relação ao slack, não acredito que você terá problemas.

      Um abraço.

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.