Linux 장치 드라이버의 모듈 스택

Linux 장치 드라이버의 모듈 스택

저는 Linux를 사용하려고 하는데 방금 모듈 스택의 개념을 접했습니다. 다른 모듈에서 내보낸 기호를 사용하는 데 사용할 수 있습니다. 즉, 모듈에서 이미 만들어진 것을 사용할 수 있으므로 이미 완료된 것을 수행할 필요가 없습니다. 하지만 나는 아직도 리눅스에서 이런 종류의 일을 실시간으로 본다는 개념을 이해하지 못합니다.

나는 O'Reilly의 책에 있는 동일한 링크를 클릭하고 있습니다.http://www.makelinux.net/ldd3/chp-2-sect-5.shtml

병렬 포트 하위 시스템의 스태킹은 그림 2-2에 나와 있습니다.

여기에 이미지 설명을 입력하세요.

이 숫자를 이해할 수 없습니다.

내 시야를 넓혀줄 모듈 스태킹 개념을 사용할 수 있는 실시간 샘플 애플리케이션을 제공할 수 있습니까?

답변1

스택은 일부 모듈이 다른 모듈에 정의된 함수를 호출한다는 의미입니다. 참조한 페이지에 예제가 있습니다. 그림과 같이 lp병렬포트 프린터용 드라이버입니다. 범용 병렬 포트 드라이버를 호출합니다 parport. 여러 가지 유형의 병렬 포트가 있으며 각각 고유한 저수준 드라이버가 있습니다. parport_pc현재 커널에서는 parport_pc포트에 정의된 함수가 실제로 호출되며 parport, 표시된 것과 반대가 아닙니다. 물론 이들은 모두 기본 커널 함수(모듈이 아님)를 호출합니다.

비슷한 사례가 많이 있습니다. 예를 들어 대부분의 저장소(디스크) 드라이버는 SCSI 프로토콜(변형)과 통신하므로 공통 scsi_mod모듈을 호출합니다. 이 모듈은 (저장용) 및 (USB용) usb_storage이라고 합니다 .sci_modusbcore

설치한 모든 모듈 /lib/modules/*/modules.dep(많은 모듈이 있음)의 종속성(즉, 어떤 모듈이 다른 모듈의 함수를 호출하는지)을 볼 수 있습니다. 현재 로드된 모듈의 종속성을 볼 수 있습니다 lsmod. 예를 들어 다음 출력 줄에는 가 표시되며 parport_pc모두 ppdev다음 lp에 따라 달라집니다 parport.

parport                27954  3 parport_pc,ppdev,lp

이것은 로드된 모듈에 대한 종속성 그래프를 생성하는 작은 스크립트입니다. 당신은 가지고 있어야그래픽 시각화(대부분의 배포판에서 사용 가능)

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

답변2

일반적으로 컴퓨터가 상호 작용하는 물리적 장치와 관련된 기능 세트가 있습니다. 예를 들어, 디스크 드라이브 관련 기능에는 파일 시스템, 암호화, 중복성 등이 포함됩니다. 다양한 기능을 정리하고 제공하는 방법 중 하나는스택.

다음은 "스택"/"함수"(세로 방향) 및 "레이어"(가로 방향)를 확인할 수 있는 Linux 커널의 일반적인 다이어그램입니다.

여기에 이미지 설명을 입력하세요.

위 이미지의 더 자세한 버전은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

다음은 Linux의 장치 드라이버 스택의 예입니다.

입력/출력 스택

개념:

여기에 이미지 설명을 입력하세요.

자세한 내용은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

그래픽 스택

여기에 이미지 설명을 입력하세요.

관련 정보