디바이스 드라이버 (Device Driver) - 2. 디바이스 파일










2.1 디바이스 파일의 목적


  • Device Driver가 사용할 장치 파일을 만든다.
  • 유저가 Device Driver File을 이용해 장치를 사용할 수 있다.
  • 장치 파일을 생성하기 위해서는 mknod를 통해서 장치 파일을 생성한다.





2.2 디바이스 파일의 생성


  • mknod의 사용
- 일반적으로 /dev 경로에 생성한다.
- 장치 파일은 user와 Device Driver를 연결해주는 매개체이다.
- devfs에서 관리된다.


$ mknod /dev/name type major minor 



예) mknod /dev/SK c 252 0


  • 파일의 구성
- dentry 구조체 : 경로를 관리하는 구조체

- inode 구조체 : 파일을 관리하는 구조체

- 부모는 dentry.d_subdirs, 자식들은 dentry.d_child와 double linked list로 구성되어 있다.




2.3 디바이스 파일 동적 할당


  • udev
- 디바이스 파일을 자동으로 생성할 목적으로 만들어진 데몬

- /dev를 수동 생성 방법을 대체할 방법론
- 시스템 디바이스(sysfs)에서 정보를 취합할 API 제공

- udev는 sysfs와 밀접한 관계가 있으며, 각 디바이스의 탐지, 인식, 제거, 변경 등의 event를 커널 레벨에서 관리하기 위하여 hotplug 기능이 필수적이다.

- UNIX 계열의 device driver는 file 형태.

- kernel에 device driver가 loading하면 사용 가능 상태가 된다.

- Device driver에 사용하기 위해서는 반드시 /dev 밑에 device node file이 있어야 application이 접근 가능하다.


  • udev 탄생 배경

- /dev 밑에 디바이스 파일 노드를 만드는데 기존 방식의 문제 발생
- 너무나 많은 device node file를 만들어야 함
- kernel device model이 도입되면서 hotplug 관련 처리 문제를 해결할 수 있게 됨???


  • udev 데몬의 동작











- netlink를 통해 uevent를 udev 데몬에게 알린다.

netlink란?

커널과 유저 인터페에스 프로세스 사이에서 IPC를 하는 소켓과 비슷한(socket-like) 메커니즘 ?













+ Recent posts