v응용 프로그램
ü시스템에 준비된 함수나 프로그램 자체적으로 선언된 함수를 이용해 특정 기능을 수행하도록
구현한 프로그램
.
ü리눅스에서 동작하는 응용프로그램은 하드웨어에 직접 접근 불가

-> 디바이스 파일이라는 특수 파일을 이용

v디바이스 파일
ü커널 내의 파일 시스템 구조에 의해 하드웨어를 제어하는 디바이스 드라이버 함수와 연결.

-> 따라서 응용프로그램은 하드웨어를 제어하기 위해, 저수준 파일 입출력함수를 사용하여,
디바이스 파일에 데이터를 쓰거나 읽고, 그 결과로 하드웨어를 제어하는 디바이스 드라이버 함수가 호출되어 동작.
 

 

 

 



v
노드번호는 장치 종류, 주번호 (Major Number), 부번호(Minor Number)로 구성
ü장치 종류 : 장치의 종류를 표현
ü주번호 : 커널에서 디바이스 드라이버 선택시 사용
ü부번호 : 디바이스 드라이버가 디바이스 선택시 사용
 
v디바이스 파일 생성 : mknod 명령어
ümknod device_file [b|c] major_num minor_num

 



v문자 디바이스 드라이버

ü파일 오퍼레이션 : 문자 디바이스 드라이버와 응용 프로그램을 연결하는 고리.
ü응용 프로그램이 저수준 파일 입출력함수를 사용하여, 디바이스 파일에 접근하면,
커널은 등록된 fops 참고하여, 대응하는 커널 함수를 호출함.
ü문자 드라이버 등록 및 제거
§등록

               int XXX_init()

{

  fops.open = XXX_open;
  fops.release = XXX_release;
  fops.write = XXX_write;
  fops.read = XXX_read;
  regster_chrdev(unsigned int major, const char *name, struct file_operations *fops);

}

§제거

               int XXX_exit()

{

  unregister_chrdev(unsigned int major, const char *name);

}


 

 

 




 

Posted by Programist
,