Linux에서 처음으로 새 하드웨어를 연결하면 어떻게 되나요?

Linux에서 처음으로 새 하드웨어를 연결하면 어떻게 되나요?

PC에 장치를 연결했다고 가정 해 보겠습니다.

Q: Linux 운영 체제(Ubuntu)는 새로운 하드웨어 장치가 연결되었음을 어떻게 인식합니까?

답변: 새로 연결된 장치는 인터럽트를 발생시킵니다(그리고 더 많은 작업을 수행합니다).

내 대답이 정확합니까? 적어도 새로 연결된 장치가 인터럽트를 일으키는 부분입니까?

답변1

예, "중단"이라는 단어의 두 가지 의미 모두에서 그렇습니다.

구체적으로 하드웨어 수준 인터럽트를 의미한다면 그렇습니다(시스템이 실제로 방금 연결된 하드웨어와 상호 작용할 수 있다고 가정합니다. 예를 들어 전원 전용 USB 케이블로 무언가를 연결하면 이러한 인터럽트가 트리거되지 않습니다). 특정 장치여야 하며 인터럽트를 발생시킨 버스에서 장치의 재열거를 트리거할 수 있습니다(예: USB 및 IEEE 1394의 경우).

사용자 공간이 어떤 종류의 이벤트에 반응할 수 있다는 의미라면 그렇습니다. 그런 이벤트는 항상 있을 것입니다.만약에문제의 장치는 실제로 사용 가능합니다(즉, 함께 번들로 제공되는 일종의 커널 드라이버). 이러한 이벤트는 이라는 프로그램에 의해 처리되며 udev, 연결된 장치에 대한 응답으로 작업을 수행하려면 udev에 대한 설명서부터 시작해야 합니다. 하드웨어 인터럽트와 달리 uevents(이러한 "인터럽트"의 일반적인 용어)는 장치별로 다릅니다(따라서 하드웨어가 어떤 형태의 식별을 제공하는 경우 이를 사용하여 특정 하드웨어와 일치시킬 수 있습니다).

답변2

그건 사실이지만 "처음으로 누군가를 만나면 어떻게 되지? 빛이 그 사람의 몸에서 반사되어 망막에 닿는다"고 말하는 것과 비슷하다.

그렇습니다. 하드웨어가 외부 연결을 감지하는 컨트롤러(예: USB/Firewire/eSATA/... 컨트롤러 또는 VGA-EDID/DVI/HDMI/DisplayPort가 있는 그래픽 프로세서)에 연결되어 있다고 가정하면 컨트롤러는 CPU에서 인터럽트를 트리거하는 CPU의 버스 신호.커널의 인터럽트 핸들러, 이는 컨트롤러 드라이버의 일부이며 컨트롤러에서 메시지를 읽습니다. 메시지에는 새 장치에 대한 정보가 포함되며 해당 특정 컨트롤러에서 사용하는 프로토콜에 따라 형식이 지정됩니다.

장치에 컨트롤러 드라이버 외에 특정 드라이버가 필요한 경우 메커니즘을 사용하여 적절한 드라이버가 포함된 모듈을 자동으로 로드할 수 있습니다. 보다 드라이버 모듈은 자동으로 로드 및 언로드됩니까?

이것은 주어진 하드웨어가 아니라는 점에 유의하십시오.감지되었습니다. 전자 설계에 따라 다릅니다. 일부 이전 유형의 연결(직렬 포트, 이전 모니터가 포함된 VGA, 많은 사운드 잭)에는 장치가 연결되어 있는지 여부를 보고하는 메커니즘이 없습니다.

관련 정보