Como entender o código-fonte do kernel do Linux para iniciantes? [fechadas]


12

Eu sou um estudante interessado em trabalhar em Gerenciamento de Memória, particularmente o componente de substituição de página do kernel do linux.

Quais são os diferentes guias que podem me ajudar a começar a entender a fonte do kernel?

Tentei ler o livro Entendendo o Linux Virtual Memory Manager, de Mel Gorman, e Entendendo o Linux Kernel, de Cesati e Bovet, mas eles não explicam o fluxo de controle através do código. Eles acabam explicando várias estruturas de dados usadas e o trabalho que várias funções executam. Isso torna o código mais confuso.

Meu projeto trata de ajustar o algoritmo de substituição de página em um kernel convencional e analisar seu desempenho para um conjunto de cargas de trabalho. Existe uma versão do kernel do linux que seria mais fácil de entender (se não o kernel do linux-2.6.xx)?


1
Posso perguntar por que você optou por fazer a programação do kernel, quando não se sente à vontade para encontrar um caminho para contornar códigos complexos?
LennyProgrammers

Respostas:


13

Concentre-se nas estruturas de dados . Entender as estruturas de dados geralmente é mais importante que o código.

Se você apenas mostra estruturas de dados, mas não possui código, ainda obtém uma visão geral do sistema.

Vice-versa, se mostrado apenas código, mas não estruturas de dados, é muito difícil entender o sistema.

"De fato, afirmo que a diferença entre um programador ruim e um bom é se ele considera seu código ou suas estruturas de dados mais importantes. Os programadores ruins se preocupam com o código. Os bons programadores se preocupam com as estruturas de dados e seus relacionamentos." -- Linus Torvalds

"Mostre-me seus fluxogramas e oculte suas tabelas, e eu continuarei confuso. Mostre-me suas tabelas e geralmente não precisarei de seus fluxogramas; eles serão óbvios." Fred Brooks.



3

A opção depurador pode ser útil.

Mais algumas coisas que podem ser feitas após a criação do kernel com a opção depurador é escrever alguns aplicativos de teste de amostra chamando várias chamadas do sistema que invocam o kernel e você pode percorrer um pedaço de código do kernel por vez e entender sua implementação.



0

Uma maneira de aprender uma base de código complexa é executá-la em um depurador e ver para onde as coisas o levam. Para Linux, existe o Linux Kernel Debugger .


Eu não estou certo de que este irá trabalhar para alguém que ainda está tentando o que fazer com esta peça gigantesca de código, e como ele faz as coisas
Mahmoud Hossam

1
Eu fiz essa abordagem com grandes bases de código. Você precisa de um ponto de entrada e uma idéia do que procurar.
LennyProgrammers

Sim, é isso que eu quis dizer, ele precisa saber o que procurar antes de depuração do kernel
Mahmoud Hossam
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.