글
■ 네트워크 디바이스 드라이버는 디바이스 파일로 접근하지 않고, 네트워크 오퍼레이션 구조체인 net_device를 사용한다.
(1) 동작 (데이터 송수신)
: 네트워크 디바이스 드라이버는 커널 소스에 포함되거나 모듈로 작성되어 동작하지만, 이 두 방식은 드라이버의 구동 방식만 다를 뿐 나머지는 같다.
● 등록 / 초기화
- 커널 부팅 이나 삽입하는 과정에 의해 네트워크 디바이스 드라이버가 시작되고, 가장 먼저 제어 대상이 되는 하드웨어를 검출.
- 네트워크 하드웨어가 검출이 되면, 네트워크 디바이스 드라이버를 초기화한 후 커널과 연결 가능한 데이터 구조를 등록.
- 리눅스가 정상적으로 수행되면, 초기화 스크립트는 이용해 하드웨어를 검출하고, 커널에 등록된 네트워크 인터페이스를 활성화.
- 인터페이스가 활성화될 때는 디바이스 열기 함수를 호출하고, 네트워크 환경에 맞추기 위한 디바이스 드라이버의 제어상태를 변경.
● 송신
- 응용 프로그램에서 프로토콜을 이용해 데이터를 전송하기 위한 함수들을 사용하면, 네트워크 디바이스 드라이버가 데이터를 전송한다.
● 수신
- 수신된 데이터는 인터럽트 핸들러나 폴링 루틴에 의해 네트워크 하드웨어에서 데이터를 얻어 커널에 전송.
- 전달된 데이터는 프로토콜에 따른 관리 큐에 저장.
- 이 데이터는 최종적으로 응용프로그램에서 가져가거나, 전달받을 응용프로그램이 존재하지 않으면 버려진다.
(2) 동작절차 정리
- 모듈의 로드나 커널 부팅에 의한 초기화 처리
- 모듈의 제거에 의한 종료 처리
- 네트워크 디바이스의 검출
- 네트워크 디바이스의 초기화 및 등록
- 네트워크 디바이스 열기와 닫기
- 네트워크 데이터 전송
- 네트워크 데이터 수신
- 인터럽트의 처리
- 네트워크 디바이스 제어 ioctl
- 멀티 캐스트 처리
- 설정 정보 재설정 처리
'L inux > Device Driver' 카테고리의 다른 글
네트워크 디바이스 드라이버 - 리눅스 네트워크 (1) | 2012.04.12 |
---|---|
Invalid module format - insmod error (0) | 2012.03.15 |
리눅스 커널 모듈 (0) | 2011.09.28 |
디바이스 파일 생성 (0) | 2011.09.28 |
디바이스 파일과 드라이버 함수 연결 (0) | 2011.09.28 |
RECENT COMMENT