반응형

17.1 디바이스 드라이버의 이해
17.1.1 디바이스 드라이버의 구조
- 모든 입출력 장치는 하드웨어로, 스스로 동작할 수 없음.
- 그래서 입출력 동작을 위해, 프로그램에 의해 제어가 되어야함.

 

입출력 장치 제어 프로그램의 주요 기능 3가지

- 위의, 입출력 장치 제어 프로그램의 주요 기능 3가지를 필수적으로 가져야함.

  - 첫째, 하드웨어 초기화

  - 둘째, 데이터 보내기 또는 쓰기.

  - 셋째, 데이터 받기 또는 읽기

 

- 입출력 장치의 제어는 애플리케이션 단에서 한다. (장치마다 일부 차이는 있음)

- 따라서, 운영체제에서 디바이스 제어하려면, 입출력 장치 제어 프로그램 + 사용자가 작성한 애플리케이션과 통신할 수 있는 정형화된 인터페이스. 이렇게 2가지가 필요함.

 

- 디바이스 드라이버는 표준화된 커널 인터페이스를 제공을 위한 자료구조를 가지고 있어야함. 왜냐하면, 애플리케이션에서 입출력 장치의 제어를 요청하기 위해서임.

 

- 리눅스 드라이버 구조

  - 문자 디바이스 드라이버

    - 시리얼 UART나, 프린트포트와 같이 바이트 단위 또는 수바이트 단위로 데이터를 교환하는 장치.

  - 블록 디바이스 드라이버

    - 디스크와 같이 수 킬로 바이트의 일정 크기의 블록 단위로 데이터를 교환하는 장치

  - 네트워크 디바이스 드라이버

    - 이더넷과 같은 통신 제어 장치, 네트워크로 연결된 다른 호스트와 데이터를 교환하는 장치

 

즉, 리눅스에 사용하는 3가지 드라이버는,

아래로는 하드웨어를 제어하고,

위로는 애플리케이션과 정보를 교환하기 위한 커널 인터페이스 자료구조를 가짐.

 

 

디바이스 파일

리눅스의 디바이스 드라이버는,

다른 RTOS와 달리 가상 파일시스템(VFS)에 의해 일반 파일시스템과 동일한 인퍼페이스를 제공함.

그래서, 애플리케이션은 일반 파일을 처리하는 경우, 파일 관리를 위한 시스템 콜을 호출하여 디바이스를 제어.

 

디바이스 파일은 특수 파일임. 디바이스 노드라고 불림.

디바이스 파일은 루트 파일시스템의 dev 디렉터리 (/dev)에 있음.

디바이스 파일은 디바이스 종류(블록/문자/네트워크)를 구분하는 정보와, 해당 드라이버를 선태갛기 위한 주/부번호, 장치에 대한 접근권한 정보를 가지고 있음.

 

 

 

반응형