Empilhamento de módulo em drivers de dispositivos Linux

4

Estou tentando minha mão com o Linux, apenas encontro o conceito de empilhamento de módulos. Pode ser usado para usar o símbolo exportado por outros módulos. Significa que podemos usar algo já feito em algum módulo para que não tenhamos que fazer algo que já esteja feito. Mas ainda não estou chegando onde em tempo real vemos esse tipo de conceito com o Linux.

Estou seguindo o mesmo link do livro o'reilly - link

O empilhamento no subsistema da porta paralela é mostrado na Figura 2-2:

Eu não consigo entender esse número.

Você pode dar APLICAÇÃO EM ALGUM EXEMPLO EM TEMPO REAL onde podemos usar o conceito de empilhamento de módulos, o que aumentará meu horizonte de visão?

    
por user6363 07.04.2011 / 11:38

2 respostas

3

Empilhamento significa apenas que algumas funções de chamada de módulo definidas em outro módulo. Há um exemplo na página que você cita. De acordo com a figura, lp é um driver para impressoras em portas paralelas. Faz chamadas no driver de porta paralela genérica parport . Existem vários tipos diferentes de portas paralelas e cada uma tem seu próprio driver de baixo nível; o mais comum é parport_pc . Nos kernels atuais, na verdade é parport_pc que chama funções definidas em parport , e não o oposto, como sugere a figura. Claro, todos eles fazem chamadas para recursos básicos do kernel (que não estão em módulos).

Existem muitos casos semelhantes. Por exemplo, a maioria dos drivers de armazenamento (disco) se comunica com (uma variante do) protocolo SCSI, portanto, eles fazem chamadas no módulo scsi_mod genérico. O módulo usb_storage faz chamadas em sci_mod (para os aspectos de armazenamento) e usbcore (para os aspectos de USB).

Você pode ver as dependências de todos os módulos que você instalou (ou seja, quais módulos chamam funções de outros módulos) em /lib/modules/*/modules.dep (haverá muitos deles). Você pode ver as dependências dos módulos atualmente carregados com lsmod ; por exemplo, a seguinte linha de saída mostra que parport_pc , ppdev e lp dependem de parport :

parport                27954  3 parport_pc,ppdev,lp

Aqui está um pequeno script que gera um gráfico de dependência para os módulos que você carregou. Você precisa ter graphviz (disponível na maioria das distribuições).

lsmod | awk '
    BEGIN {print "digraph modules {"}
    END {print "}"}
    NR != 1 {split($4, a, ","); for (i in a) print a[i], "->", $1;}
' | dot -Tpdf >lsmod.pdf
    
por 07.04.2011 / 23:58
0

Geralmente, há um conjunto de funcionalidades relacionadas a qualquer dispositivo físico que interage com um computador. Por exemplo, as funcionalidades relacionadas às unidades de disco incluem sistemas de arquivos, criptografia, redundância e outros. Uma das formas de organizar e fornecer várias funcionalidades é empilhamento .

Este é um mapa geral do kernel Linux, onde você pode notar "pilhas" / "funções" (ao longo da direção vertical) e "camadas" (ao longo da direção horizontal):

Estaéumaversãoumpoucomaisdetalhadadodiagramaanterior:

A seguir, exemplos de pilhas de drivers de dispositivos no Linux:

Pilha de E / S

Conceitual:

eemmaisdetalhes:

Pilha de gráficos

    
por 10.01.2015 / 01:32