2016-03-13

리눅스 모듈 vs 디바이스

리눅스 모듈 vs 디바이스


모듈은 다음과 같은 특징을 갖는다.
  1. 설치시 소스 커널소스를 다시 컴파일 하지 않고, 동적으로 추가 삭제 가능하다.
  2. 드라이버를 모듈에 포함 할 수 있다. 주로 이 목적으로 사용한다.
  3. MMU(Memory Management Unit)가 있는 CPU에서만 지원한다.
  4. 모듈 방식은 PNP 방식의 디바이스를 지원하기 위해서는 필수다.


디바이스는 다음과 같은 특징을 갖는다.
  1. 디바이스 파일들은 일반적으로 /dev 디렉토리의 하부에 저장된다.
  2. 디바이스 파일은 타입과 Major,Minor 넘버를 가진다.
  3. mknod를 사용해서 디바이스 파일을 생성한다.
  4. 네트워크 파일시스템이나 , 표준 inode 형식을 지원하지 않는 파일 시스템에는 디바이스 파일을 생성 할 수 없다.

문자 디바이스 Character Device Driver
: 임의의 길이를 갖는 문자열을 다루는 버퍼 없는 디바이스 드라이버
  1. 응용 프로그램은 open(), close(), read(), write() 와 같은 파일 처리 함수를 사용해서 처리한다.
  2. 스트림 지향적으로 사용 할수 있다.
블록 디바이스 Block Device Driver
: 커널의 파일 시스템이 관리하고 버퍼가 있는 디바이스
  1. 응용 프로그램에서 잘 사용하지 않는다.
  2. 디바이스 드라이버는 파일 시스템을 지원하는 구조이므로,  프로그램은 파일 시스템을 통해서 접근한다.
  3. 블록 지향적으로 사용 할수 있다.
  4. 스트림도 지원하지만 필수는 구현은 아니다.
네트워크 디바이스 드라이버 Network Device Driver
 : 네트워크 층에서 사용하는 디바이스 드라이버
  1. 실질적으로 /dev 의 구조에 속하지 않으며, 네트워크 구조체 형식으로 동작 한다. 따라서 파일이 존재 하지 않느다.
  2. 응용 프로그램에서 직접적으로 사용 할수 없다.
  3. 일부 응용 프로그램에서는 시스템 콜을 사용하여 드라이버를 호출, 사용한다.
  4. 블록, 문자 디바이스와는 다르게 파일시스템에 의존하지 않는다.

No comments:

Post a Comment