PC에 장치를 연결했다고 가정 해 보겠습니다.
Q: Linux 운영 체제(Ubuntu)는 새로운 하드웨어 장치가 연결되었음을 어떻게 인식합니까?
답변: 새로 연결된 장치는 인터럽트를 발생시킵니다(그리고 더 많은 작업을 수행합니다).
내 대답이 정확합니까? 적어도 새로 연결된 장치가 인터럽트를 일으키는 부분입니까?
답변1
예, "중단"이라는 단어의 두 가지 의미 모두에서 그렇습니다.
구체적으로 하드웨어 수준 인터럽트를 의미한다면 그렇습니다(시스템이 실제로 방금 연결된 하드웨어와 상호 작용할 수 있다고 가정합니다. 예를 들어 전원 전용 USB 케이블로 무언가를 연결하면 이러한 인터럽트가 트리거되지 않습니다). 특정 장치여야 하며 인터럽트를 발생시킨 버스에서 장치의 재열거를 트리거할 수 있습니다(예: USB 및 IEEE 1394의 경우).
사용자 공간이 어떤 종류의 이벤트에 반응할 수 있다는 의미라면 그렇습니다. 그런 이벤트는 항상 있을 것입니다.만약에문제의 장치는 실제로 사용 가능합니다(즉, 함께 번들로 제공되는 일종의 커널 드라이버). 이러한 이벤트는 이라는 프로그램에 의해 처리되며 udev
, 연결된 장치에 대한 응답으로 작업을 수행하려면 udev
에 대한 설명서부터 시작해야 합니다. 하드웨어 인터럽트와 달리 uevents(이러한 "인터럽트"의 일반적인 용어)는 장치별로 다릅니다(따라서 하드웨어가 어떤 형태의 식별을 제공하는 경우 이를 사용하여 특정 하드웨어와 일치시킬 수 있습니다).
답변2
그건 사실이지만 "처음으로 누군가를 만나면 어떻게 되지? 빛이 그 사람의 몸에서 반사되어 망막에 닿는다"고 말하는 것과 비슷하다.
그렇습니다. 하드웨어가 외부 연결을 감지하는 컨트롤러(예: USB/Firewire/eSATA/... 컨트롤러 또는 VGA-EDID/DVI/HDMI/DisplayPort가 있는 그래픽 프로세서)에 연결되어 있다고 가정하면 컨트롤러는 CPU에서 인터럽트를 트리거하는 CPU의 버스 신호.커널의 인터럽트 핸들러, 이는 컨트롤러 드라이버의 일부이며 컨트롤러에서 메시지를 읽습니다. 메시지에는 새 장치에 대한 정보가 포함되며 해당 특정 컨트롤러에서 사용하는 프로토콜에 따라 형식이 지정됩니다.
장치에 컨트롤러 드라이버 외에 특정 드라이버가 필요한 경우 메커니즘을 사용하여 적절한 드라이버가 포함된 모듈을 자동으로 로드할 수 있습니다. 보다 드라이버 모듈은 자동으로 로드 및 언로드됩니까?
이것은 주어진 하드웨어가 아니라는 점에 유의하십시오.예감지되었습니다. 전자 설계에 따라 다릅니다. 일부 이전 유형의 연결(직렬 포트, 이전 모니터가 포함된 VGA, 많은 사운드 잭)에는 장치가 연결되어 있는지 여부를 보고하는 메커니즘이 없습니다.