O que acontece quando um novo hardware é conectado pela primeira vez no Linux?

2

Suponha que eu conectei um dispositivo a um PC.

Pergunta: Como o sistema operacional Linux (Ubuntu) percebe que um novo dispositivo de hardware está conectado?

Resposta: O dispositivo recém-conectado gera uma interrupção (e faz muitas outras coisas).

A minha resposta está correta, pelo menos a parte que diz que o dispositivo recém-conectado gera uma interrupção?

    
por Arshad Nazeer 17.11.2017 / 13:21

2 respostas

1

Sim, nos dois sentidos do termo 'interrupção':

Se você quer dizer especificamente uma interrupção no nível do hardware, então sim (supondo que o sistema possa realmente interagir com o hardware que acabou de ser conectado, conectar algo com um cabo USB somente de energia não acionará tal interrupção, por exemplo ), mas não é necessariamente específico do dispositivo e pode, em vez disso, ativar a reenumeração de dispositivos no barramento que gerou a interrupção (esse é o caso de USB e IEEE 1394, por exemplo).

Se você quer dizer que algum tipo de evento pode reagir ao espaço do usuário, então sim, sempre haverá um evento assim se o dispositivo em questão for realmente utilizável (isto é, um driver de kernel de algum classificar ligado a ele). Esses eventos são manipulados por um programa chamado udev e, se você quiser fazer algo em resposta a um dispositivo que está sendo conectado, a documentação de udev é onde você deve iniciar. Ao contrário da interrupção de hardware, uevents (o termo geral para essas 'interrupções') será específico do dispositivo (para que você possa combinar hardware específico usando-os, desde que o hardware forneça alguma forma de identificação).

    
por 17.11.2017 / 21:14
0

É verdade, mas é como dizer "o que acontece quando você conhece alguém pela primeira vez?" A luz reflete do seu corpo para a sua retina. ”É um nível muito baixo para ver as partes interessantes.

Então, sim, supondo que o hardware esteja conectado a um controlador que detecta conexões externas (por exemplo, um controlador USB / Firewire / eSATA /… ou um processador gráfico com VGA-com-EDID / DVI / HDMI / DisplayPort), o controlador enviará um sinal em um barramento e esse sinal acionará uma interrupção na CPU. O manipulador de interrupção no kernel , que faz parte do driver para esse controlador, irá ler uma mensagem do controlador. Essa mensagem conterá informações sobre o novo dispositivo, formatado de acordo com o protocolo usado por esse controlador específico.

Se o dispositivo é de um tipo que requer um driver específico, além do driver para o controlador, então há um mecanismo para carregar automaticamente um módulo contendo o driver adequado. Vejo Os módulos do driver são carregados e descarregados automaticamente?

Note que não é um dado que o hardware é detectado. Isso depende do design eletrônico. Em alguns tipos mais antigos de conexões (portas seriais, VGA com monitores antigos, muitos conectores de som), não há mecanismo para relatar se um dispositivo está conectado ou não.

    
por 17.11.2017 / 22:29