나는 드라이버가 컴퓨터에 연결된 장치를 제어하기 위해 하드웨어와 통신하는 소프트웨어라는 것을 알고 있습니다. 커널 모듈은 커널 성능을 향상시키기 위해 커널에 삽입할 수 있는 작은 코드 조각입니다. 드라이버가 커널과 어떻게 작동하는지, 장치 드라이버와 커널 모듈의 주요 차이점은 무엇이며 어떻게 작동하는지 묻고 싶습니다.
답변1
우우우우...
커널 모듈은 매우 구체적인 것입니다. 즉, 코어 커널이 시작된 후 모듈로(즉, 동적으로) 로드되는 커널의 일부입니다. 그것은 무엇이든 될 수 있습니다.
하드웨어를 사용하려면 다음 두 가지 이유로 메인 커널에 있는 일부 부품이 필요합니다.
- 사용자 공간에서는 불가능하거나 비현실적인 하드웨어 작업을 수행할 수 있거나 프로세스 범위 밖에서 상태를 유지할 수 있습니다.
- 사용자 공간에서 이 작업을 수행하는 것은 정말 비효율적이기 때문입니다.
대부분의 하드웨어를 관리하려면 커널 공간 대응 장치가 필요합니다. 커널의 일부로 컴파일하거나 나중에 요청 시 로드되는 모듈로 컴파일할 수 있습니다. 모듈의 경우 모든 모듈을 로드할 수는 없습니다.
그러나 모듈이 단지 하드웨어에 관한 것일 필요는 없습니다. 일부 모듈은 ipv6, 방화벽 옵션 등과 같은 기능을 추가합니다.
반면에 드라이버는 일반적으로 하드웨어에 대한 쉬운 액세스를 제공합니다. 일반적으로 모든 하드웨어 관련 항목을 포함하고 공통 API를 공개합니다. 일반적이라는 것은 충분히 일반적이지만 반드시 글로벌하거나 표준적인 것은 아니라는 것을 의미합니다. 예를 들어, ATI 그래픽 카드용 드라이버는 모든 ATI 카드에 대한 공통 API를 공개하지만 다른 카드에서는 다를 수 있습니다.
드라이버는 사용자 공간, 커널(내장 또는 모듈)에서 만들거나 양쪽 끝에 분기를 가질 수 있습니다. 예를 들어 현재 그래픽 드라이버의 일부는 커널에 있고 일부는 사용자 공간(예: X 서버, DRI 등)에 있습니다.
답변2
모듈은 Linux에 로드할 수 있는 코드 묶음입니다.
Linux에서:- 일반적으로 모듈은 장치 드라이버(즉, 특정 하드웨어(장치)를 구동하는 소프트웨어)입니다. 그러나 일부 드라이버와 모듈은 하드웨어를 구동하지 않습니다. 예를 들어, 일부 Linux 시스템에는 로드 가능한 모듈로 IPv6 지원이 있을 수 있습니다. 또는 파일 시스템(예: ISO-9660)이 드라이버나 모듈일 수 있습니다.
자세한 내용은:-
http://www.cs.umsl.edu/~sanjiv/classes/cs5780/lectures/kernel.pdf