리눅스 디바이스 드라이버 | 장치 파일(Device File) | /dev 디렉토리

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

리눅스는 모든 것을 파일로 관리합니다. 리눅스에는 장치 파일(Device File)은 여러 프로그램에서 시스템에 설치된 하드웨어에 접근할 수 있게 하는 파일입니다. 디바이스를 구동하기 위해 리눅스 디바이스 드라이버가 필수 요구 사항입니다.

리눅스 시스템이 마우스 장치 파일을 참조해서 마우스의 조작을 하게 하거나 프린트의 출력 등을 담당하는 것을 생각할 수 있으며, 주로 스토리지를 마운트 하는데 많이 사용된다고 할 수 있습니다.

✅ 리눅스 장치 파일 | /dev 디렉토리

장치 파일은 /dev 디렉토리에 위치하며 주요 장치 파일의 종류는 다음과 같습니다.

장치 파일 종류설명
/dev/input/mice마우스
/dev/sro0, /dev/sr1CD 드라이브 0은 첫번째, 1은 두번째
/dev/sda /dev/sdbSATA 접속 장치: 하드 디스크 SSD, 플래시 메모리 등.
/dev/xvda1 /dev/xvda1 AWS와 같은 클라우드(EC2 인스턴스 등)의 스토리지
/dev/usb/xxx/xxxUSB 장치. 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

캐릭터 디바이스는 스트림 데이터를 캐릭터(문자) 단위로 처리하는 디바이스를 나타냅니다. 일반적으로 터미널, 키보드, 마우스 등이 캐릭터 디바이스에 해당합니다. 이러한 디바이스는 데이터를 한 번에 하나의 문자 또는 바이트씩 처리하며, 데이터의 흐름은 순차적입니다.

  • 특징
  • 버퍼와 캐시를 사용하지 않음.
  • 터미널, 키보드, 사운드 카드, 프린터 등
Character Device
Character Device File

2. Block Device

  • 특징
  • random access 가능
  • 버퍼 및 캐쉬 사용
  • 파일 시스템에 Mount 되어 관리됨
  • 하드디스크, SSD, RAM, CD-ROM
Block Device File
Block Device File

3. Network Device

대응하는 장치 파일이 없으며, 네트워크 통신을 통해 패킷을 송수신 할 수 있는 장치입니다.

  • 특징
  • 응용 프로그램과의 통신은 표준 파일 시스템 호출 대신 Socket 또는 Bind와 같은 시스템 호출
  • 이더넷, PPP 등

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • [Linux] Shell 확장 6가지와 Shell 인용 3가지

    echo 명령어를 사용해서 Shell 확장(Expansion)에 대해 알아 보겠습니다. 1. Shell 확장 Shell 확장(Expansion)이란 셸에서 프로그램을 실행하기 직전 사용자가 입력한 인자를 정해진 의미에 맞게 해석해서 입력 or 출력으로 전환하는 것을 의미합니다. 프로그램은 echo를 포함한 명령어와 쉘에서 실행하는 모든 기능과 명령어들을 의미합니다. echo 명령어로 인수(or 인자: Argument)가 표시됩니다. 1.1 경로명 확장(Pathname Expansion) 와일드카드가 작동하는 메커니즘을…

  • [Ubuntu] 우분투 설치(22.04.5) | 우분투 root 초기 비밀번호 생성

    오라클의 VitualBox로 우분투 설치를 진행해 보겠습니다. 먼저 IOS 파일을 다운로드 받기 위해 구글에서 [우분투 서버 다운로드]를 검색해서 설치하고자 하는 우분투 버전을 확인 후 다운로드를 진행합니다. 저의 경우는 22.04.5 버전을 설치하기로 했기에 예전 버전을 찾은 후 진행하였습니다. ✅ VitualBox 우분투 ISO 설정 다운로드가 완료 되었다면, VitualBox에서 [새로 만들기] 버튼을 누릅니다. 가상 머신 이름 입력…

  • 리눅스: RPM, YUM 차이

    RPM(Red Hat Package Manager)과 YUM(Yellowdog Updater, Modified)은 리눅스의 패키지를 설치하는 인스톨 프로그램입니다. 패키지 설치와 삭제, 업데이트를 관리하는 명령어입니다. RPM 리눅스를 초기에 설치 할 때는 tar, gzip 등의 확장자를 사용했습니다. 패키지 설치 시 사용자가 직접 컴파일을 하는 불편함이 있었습니다. Windows와 비교하면 Setup.exe와 비슷하게 프로그램을 설치하는 개념으로 생각할 수 있으며, *.rpm이라는 확장명을 가지게 됩니다. 불편함의…

  • 리눅스 head 명령어 & tail 명령어

    리눅스 head 명령어는 파일의 처음 10줄을 보여주는 명령어이며, tail 명령어는 파일의 마지막 10줄을 보여주는 명령어입니다. 옵션 없이 사용할 경우 각각의 머리와 꼬리 부분을 보여주는 것을 알 수 있습니다. head와 tail 명령어는 보통 서버의 access_log를 볼 때 주로 많이 사용됩니다. 두 명령어의 사용법과 테스트 서버에서 access_log를 각각의 명령어를 통해 확인 해 보겠습니다. ✅ 리눅스…

  • VirtualBox 복제 후 CentOS 7 네트워크 인터페이스 중복 문제 해결

    VirtualBox에 CentOS 7을 설치 후 복제 기능을 이용해서 CentOS 7을 복제 했습니다. 여기서 네트워크 인터페이스 중복 문제가 발생하여, 이 내용에 대해 확인해 봤습니다. ✅ 네트워크 인터페이스 중복 기존에 설정했던 고정 IP에 접속 후 nmtui로 서버에 접속해 보니 기존 서버에 있던 enp0s3 설정이 유선 연결 1로 변경된 것으로 확인되었습니다. 원인은 VirtualBox 복제 시 네트워크…

  • 리눅스 cat 명령어

    리눅스에서 텍스트 파일을 출력하는 간단한 ‘cat 명령어’는 명령어 뒤에 파일명을 적어 표준 출력(Standard Output)을 할 수 있습니다. cat은 “연결시키다”, “연관시키다” 등의 뜻을 가지고 있는 영어단어 “concatenate”에서 유래되었습니다. 1. cat 명령어 특징 출력과 비슷한 의미의 단어가 아닌 “concatenate“라는 단어에서 유래된 이유는 “|” pipe 명령어나 “>” redirection 명령어 등과 함께 사용하는 경우가 많기 때문입니다. 결국…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 6   +   2   =