리눅스 디바이스 드라이버 | 장치 파일(Device File) | /dev 디렉토리
리눅스는 모든 것을 파일로 관리합니다. 리눅스에는 장치 파일(Device File)은 여러 프로그램에서 시스템에 설치된 하드웨어에 접근할 수 있게 하는 파일입니다. 디바이스를 구동하기 위해 리눅스 디바이스 드라이버가 필수 요구 사항입니다.
리눅스 시스템이 마우스 장치 파일을 참조해서 마우스의 조작을 하게 하거나 프린트의 출력 등을 담당하는 것을 생각할 수 있으며, 주로 스토리지를 마운트 하는데 많이 사용된다고 할 수 있습니다.
✅ 리눅스 장치 파일 | /dev 디렉토리
장치 파일은 /dev 디렉토리에 위치하며 주요 장치 파일의 종류는 다음과 같습니다.
장치 파일 종류 | 설명 |
---|---|
/dev/input/mice | 마우스 |
/dev/sro0, /dev/sr1 | CD 드라이브 0은 첫번째, 1은 두번째 |
/dev/sda /dev/sdb | SATA 접속 장치: 하드 디스크 SSD, 플래시 메모리 등. |
/dev/xvda1 /dev/xvda1 | AWS와 같은 클라우드(EC2 인스턴스 등)의 스토리지 |
/dev/usb/xxx/xxx | USB 장치. xxx는 USB 장치의 번호 |
/dev/tty | 가상 터미널 |
/dev/null | 아무 것도 표시하지 않은 장치 파일로 출력 내용을 없앨 때 리다이렉트(>)로 사용 |
✅ 리눅스 디바이스 드라이버(Device Driver)
리눅스에서 각종 마우스, 키보드, 스토리지, 프린터 등의 장치(Device)를 구동하기 위해 디바이스 드라이버가 필수적으로 요구됩니다. 디바이스 드라이버는 장치 파일을 추상화 시켜 사용자 프로그램이 인터페이스를 통해 디바이스에 접근할 수 있도록 해 주는 프로그램입니다.
1. 사용자 관점에서 디바이스 드라이버
- 사용자는 디바이스 자체에 대한 정보를 알 필요 없음
- 디바이스는 하나의 파일로 인식
- 파일에 대한 접근을 통해 Real Device에 접근 가능
2. 리눅스에서 디바이스
- 리눅스에서 디바이스는 특별한 파일로 취급되고 엑세스가 가능함.
- 각각의 디바이스는 Major Number 와 Minor number를 소유.
- Major number : 커널에서 디바이스 장치 구분
- Minor number : 같은 종류의 디바이스들을 구분
ll -a
✅ 리눅스 디바이스 드라이버의 구조와 종류
1. Character Device
캐릭터 디바이스는 스트림 데이터를 캐릭터(문자) 단위로 처리하는 디바이스를 나타냅니다. 일반적으로 터미널, 키보드, 마우스 등이 캐릭터 디바이스에 해당합니다. 이러한 디바이스는 데이터를 한 번에 하나의 문자 또는 바이트씩 처리하며, 데이터의 흐름은 순차적입니다.
2. Block Device
3. Network Device
대응하는 장치 파일이 없으며, 네트워크 통신을 통해 패킷을 송수신 할 수 있는 장치입니다.