디바이스 드라이버 유형
•문자 디바이스 드라이버
– 가장 보편적 디바이스 드라이버
• 블록디바이스드라이버
– 블록단위로 입출력 데이터를 저장하는 장치를
다룸
• 네트워크 디바이스 드라이버
14.
장치파일 생성
• mknod명령어 사용
– ex)mknod /dev/example [c|b] 주번호 부번호
• 생성파일 inode의 i_name : 파일이름
i_rdev : 주번호 부번호
i_mode : 장치 파일 유형
15.
개발자 입장에서 디바이스드라이버
• 사용자 태스크는 시스템 콜을 통해 장치
파일에 접근한다. 이 때 호출가능한 함수
는 파일 오퍼레이션 구조체에 정의 되있다.
• 반대로 드라이버 개발자는 파일 오퍼레이
션 구조체에 정의되어 있는 함수를 디바이
스 드라이버 내에 구현해 줌으로써 필요한
인터페이스를 제공한다.
리눅스에서 각 디바이스가사용하는 주 번호
• 현재 실제 사용중인 주 번호
– cat /proc/devices
Major Character devices Block devices
0
1 Memory device RAM disk
2 Pseudo-TTY Floppy disk
3 Pseudo-slaves IDE disk
…
231~239 Unassigned
240~254 Locl / Experimental use
255 Reserved
블록 디바이스 드라이버
•블록 디바이스 드라이버는 문자 디바이스 드라이버와는 달리 사용
자의 read()/write()와 1:1 로 사상되지 않는다.
• 대신 리눅스 버퍼캐시를 이용하여 통신,
->블록단위로 입출력을 하기 때문
• 버퍼캐시와 블록 디바이스 드라이버간의 통신은 큐를 사용한다.
• 큐에 들어온 요청을 살펴보고 적절한 동작을 수행