디바이스 드라이버 (Device Driver) - 1. 개요


  • 시스템이 지원하는 하드웨어를 응용 프로그램에서 사용할 수 있도록 커널에서 제공하는 라이브러리
  • 응용 프로그램이 하드웨어를 제어하려면 커널에 자원을 요청하고, 커널은 요청에 따라 시스템 관리
    ..

  • 디바이스 드라이버의 역할
    • 디바이스 드라이버는 하드웨어를 사용가능하게 만들어 줄 뿐 하드웨어를 어떻게 사용할지에 대한 결정은 응용 프로그램에 넘겨야 한다.
    • 디바이스 드라이버는 온갖 상황을 고려해 균형있게 작성한다.

  • 리눅스 디바이스 드라이버의 공통적 특성
    • 커널 코드
      • 디바이스 드라이버는 커널의 한 부분이므로, 커널의 다른 코드와 마찬가지로 잘못되면 시스템에 치명적인 피해를 줄 수 있다.
    • 커널 인터페이스
      • 디바이스 드라이버는 리눅스 커널이나 자신이 속한 서브시스템에 표준 인터페이스를 제공해야 한다.
    • 커널 메커니즘과 서비스
      • 디바이스 드라이버는 메모리 할당, 인터럽트 전달, wait queue와 같은 표준 커널 서비스를 사용할 수 있다.
    • Loadable
      • 대부분의 리눅스 디바이스 드라이버는 커널 모듈로서, 필요할 때 로드하고 더 이상 필요하지 않을 때 언로드 할 수 있다.
    • 설정 가능 (Configuration)
      • 리눅스 디바이스 드라이버를 커널에 포함하여 컴파일할 수 있다.
      • 어떤 장치를 넣을 것인지는 커널을 compile할 대 설정할 수 있다.


  • 디바이스 드라이버 종류
    • 문자 디바이스 드라이버
      • 임의의 길이를 갖는 문자열이나 자료의 순차성을 지닌 장치를 다루는 디바이스 드라이버
      • serial, console, keyboard, printer, mouse 등이 있다.
    • 블록 디바이스 드라이버
      • 일정 크기의 버퍼(블록 단위)를 통해 데이터를 처리하는 디바이스
      • 커널 내부의 파일시스템에서 관리하고 내부적인 버퍼가 있는 디바이스 드라이버
      • 하드 디스크, 램 디스크 등이 있다.
    • 네트워크 디바이스 드라이버
      • 네트워크 계층과 연결되어 네트워크 통신을 통해 네트워크 패킷을 송수신할 수 있는 기능을 제공
      • 이더넷, PPP 등이 있다.


+ Recent posts