디바이스 드라이버 (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) 메커니즘 ?
'Linux Driver' 카테고리의 다른 글
디바이스 드라이버 (Device Driver) - 3. file_operations 구조체 (0) | 2018.09.10 |
---|---|
캐릭터 디바이스 드라이버 (Character Device Driver) (0) | 2018.08.30 |
디바이스 드라이버 (Device Driver) - 1. 개요 (1) | 2018.08.29 |
커널 모듈 (Kernel Module) (0) | 2018.08.29 |
디바이스 드라이버를 위한 커널 서비스 (Kernel Service for Device Driver) - 2. 인터럽트 처리 (0) | 2018.08.29 |