리눅스 모듈 vs 디바이스
모듈은 다음과 같은 특징을 갖는다.
- 설치시 소스 커널소스를 다시 컴파일 하지 않고, 동적으로 추가 삭제 가능하다.
- 드라이버를 모듈에 포함 할 수 있다. 주로 이 목적으로 사용한다.
- MMU(Memory Management Unit)가 있는 CPU에서만 지원한다.
- 모듈 방식은 PNP 방식의 디바이스를 지원하기 위해서는 필수다.
디바이스는 다음과 같은 특징을 갖는다.
- 디바이스 파일들은 일반적으로 /dev 디렉토리의 하부에 저장된다.
- 디바이스 파일은 타입과 Major,Minor 넘버를 가진다.
- mknod를 사용해서 디바이스 파일을 생성한다.
- 네트워크 파일시스템이나 , 표준 inode 형식을 지원하지 않는 파일 시스템에는 디바이스 파일을 생성 할 수 없다.
문자 디바이스 Character Device Driver
: 임의의 길이를 갖는 문자열을 다루는 버퍼 없는 디바이스 드라이버
- 응용 프로그램은 open(), close(), read(), write() 와 같은 파일 처리 함수를 사용해서 처리한다.
- 스트림 지향적으로 사용 할수 있다.
블록 디바이스 Block Device Driver
: 커널의 파일 시스템이 관리하고 버퍼가 있는 디바이스
- 응용 프로그램에서 잘 사용하지 않는다.
- 디바이스 드라이버는 파일 시스템을 지원하는 구조이므로, 프로그램은 파일 시스템을 통해서 접근한다.
- 블록 지향적으로 사용 할수 있다.
- 스트림도 지원하지만 필수는 구현은 아니다.
네트워크 디바이스 드라이버 Network Device Driver
: 네트워크 층에서 사용하는 디바이스 드라이버
- 실질적으로 /dev 의 구조에 속하지 않으며, 네트워크 구조체 형식으로 동작 한다. 따라서 파일이 존재 하지 않느다.
- 응용 프로그램에서 직접적으로 사용 할수 없다.
- 일부 응용 프로그램에서는 시스템 콜을 사용하여 드라이버를 호출, 사용한다.
- 블록, 문자 디바이스와는 다르게 파일시스템에 의존하지 않는다.
No comments:
Post a Comment