v응용 프로그램
ü시스템에 준비된 함수나 프로그램 자체적으로 선언된 함수를 이용해 특정 기능을 수행하도록
구현한 프로그램.
구현한 프로그램.
ü리눅스에서 동작하는 응용프로그램은 하드웨어에 직접 접근 불가
-> 디바이스 파일이라는 특수 파일을 이용
v디바이스 파일
ü커널 내의 파일 시스템 구조에 의해 하드웨어를 제어하는 디바이스 드라이버 함수와 연결.
-> 따라서 응용프로그램은 하드웨어를 제어하기 위해, 저수준 파일 입출력함수를 사용하여,
디바이스 파일에 데이터를 쓰거나 읽고, 그 결과로 하드웨어를 제어하는 디바이스 드라이버 함수가 호출되어 동작.
v노드번호는 장치 종류, 주번호 (Major Number), 부번호(Minor Number)로 구성
ü장치 종류 : 장치의 종류를 표현
ü주번호 : 커널에서 디바이스 드라이버 선택시 사용
ü부번호 : 디바이스 드라이버가 디바이스 선택시 사용
v디바이스 파일 생성 : mknod 명령어
ümknod device_file [b|c] major_num minor_num
v문자 디바이스 드라이버
ü파일 오퍼레이션 : 문자 디바이스 드라이버와 응용 프로그램을 연결하는 고리.
ü응용 프로그램이 저수준 파일 입출력함수를 사용하여, 디바이스 파일에 접근하면,
커널은 등록된 fops을 참고하여, 대응하는 커널 함수를 호출함.
커널은 등록된 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);
}
'Linux' 카테고리의 다른 글
CentOS 6.3 커널 컴파일 하기 (0) | 2014.11.29 |
---|---|
vi 편집기 설정 방법 (0) | 2014.11.29 |
Linux 환경 CentOS 6.3 root 비밀번호 분실 대처 방법 (0) | 2014.11.29 |
모듈 프로그래밍 (Module Programming) (0) | 2014.11.29 |
Linux USB 마운트 방법 (0) | 2014.11.29 |