반응형
20. Device Driver
Device
- 네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 티보드, 하드디스트, 플로피디스크, 프린터 등과 같은 주변 장치들을 말함
- 디바이스 구동에 필요한 프로그램, 즉 디바이스 드라이버가 필수적으료 요구됨
Device Driver
- 실제 장치 부분을 추상화시켜 사용자 프로그램이 정형화된 인터페이스를 통해 디바이스를 접근할 수 있도록 해주는 프로그램
- 디바이스 관리에 필요한 정형화된 인터페이스 구현에 요구되는 함수와 자료구조의 집합체
- 표준적으로 동일 서비스 제공을 목적으로 커널의 일부분으로 내장
- 응용 프로그램이 하드웨어를 제어할 수 있도록 인터페이스 제공
- 하드웨어 독립적인 프로그램을 작성할 수 있도록 함.
24.1 리눅스 디바이스 드라이버
- 사용자 관점에서의 디바이스 드라이버
- 사용자는 디바이스 자체에 대한 정보를 알 필요 없음.
- device는 하나의 파일로 인식됨
- 파일에 대한 접근을 통하여 real device에 접근 가능함
- 리눅스에서의 디바이스
- 리눅스에서 디바이스는 특별한 파일로 취급되고, 액세스가 가능함. 사용자(응용 프로그램)은 file operation을 적용할 수 있다.
- 각 디바이스는 Major Number와 Minor number를 가진다.
Major Number
: 디바이스 장치 구분Minor Number
: 같은 종류의 디바이스들을 구분
24.2 디바이스 드라이버의 종류
- 문자 디바이스
Char Device
- 자료의 순차성을 지닌 장치
- 버퍼 캐쉬를 사용하지 않음
- 장치의
raw data
를 사용자에게 제공 - Terminal, Serial/Parallel, Keyboard, Sound Card, Scanner, Printer 등
리눅스에서의 문자 디바이스
맨앞 c
=> 파일 관련 정보 중 첫 문자인 c는 char device
를 의미한다.
- 블록 디바이스
Block Device
- random access 가능
- 블록 단위의 입출력이 가능한 장치
- 버퍼 캐쉬에 의한 내부 장치 표현
- 파일 시스템에 의해 mount 되어 관리되는 장치
- 디스크, RAM Dis, CD-ROM 등
마찬가지로 파일 관련 정보 중 첫 문자이는 b는 block device
를 의미한다.
- 네트워크 디바이스
Network Device
- 대응하는 장치파일이 없음
- 네트워크 통신을 통해 패킷을 송수신 할 수 있는 장치
- 응용프로그램과의 통신은 표준 파일 시스템 관련 호출 대신에
socket()
이나bind()
등의 시스템 호출 - Ethernet, PPP, ATM, ISDN 등이 있다.
24.3 디바이스 드라이버의 Major & Minor Number
Major Number(주 번호)
- 커널에서 디바이스 드라이버를 구분/연겨랗는데 사용
- 같은 디바이스 종류를 지칭. 1Byte (0~255 사이의 값)
Minor Number(부 번호)
- 디바이스 드라이버 내에 장치를 구분하기 위해 사용
- 각 디바이스의 부가적인 정보를 나타냄. 2Byte(부번호)
- 하나의 디바이스 드라이버가 여러 개의 디바이스 제어 가능
ex) ls -al /dev/sdb
24.4 디바이스 드라이버 구조
리눅스 시스템 구조 상의 디바이스 드라이버는 아래와 같다.
위의 Kernel area
쪽을 보면 디바이스 인터페이스 위에 디바이스 드라이버들이 있다. 문자 디바이스 드라이버는 버퍼캐시를 사용하지 않기 때문에 (그래서 나중에 ioremap_nocache함수를 사용함) 실습에서 많이 사용한다.
반응형
'임베디드 > [ Linux Kernel ]' 카테고리의 다른 글
[ Linux Kernel ] 22. 커널에 모듈 추가하기 (0) | 2020.10.30 |
---|---|
[ Linux Kernel ] 21. 모듈 프로그래밍 (0) | 2020.10.28 |
[ Linux Kernel ] 19. Ubuntu에서 Wi-Fi 연결하기 (0) | 2020.10.16 |
[ Linux Kernel ] 18. Kernel Module (0) | 2020.10.12 |
[ Linux Kernel ] 17. 인터럽트 (2) | 2020.08.16 |