커널의 모듈(Module)은 리눅스 커널안에 포함되지 않고 필요시 동적으로 커널과 결합해서 사용하는 커널 프로그램이다. 이 말은 커널을 동적으로 변경으로 필요시 바꿀수 있다는 말과 일치하게 되며, 메모리의 공간적 여유도 확보에 유리할수 있다. (필요 없는 것들은 동작안시키면 되니깐...) 하지만 동적으로 커널과 연결되다 보니 초기 연결시 시간이 오래 걸리고 , 커널 모드 프로그램이므로 잘못된 모듈일 경우 심각한 오류를 발생시킬수 있다.

  모듈을 커널에서 올리고 내리는 명령어는 각각 insmod 와 rmmod 이다. 뭐 리눅스 명령어다 보니 manpage 나 이런거 참조하면 사용방법에 대해서 알수 있을것이다. 모듈이 커널에 올라가게 되면 모듈에서 다른 커널이나 모듈에 제공하는 함수들을 등록한다. 모듈이나 커널에서 제공하는 모든 함수 리스트는 /proc/kallsyms 에서 확인하면 된다.

cat /proc/kallsyms
[함수주소] [함수종류] [함수이름]
0xFFFC420 T Register_Driver

위와 같은 형태로 출력된다.

'프로그래밍 > 리눅스 드라이버' 카테고리의 다른 글

쓰레드 동기화(synchronization)  (0) 2013.08.14
make 간단 설명  (0) 2013.08.14
GCC 옵션 간단하게 정리하기  (0) 2013.08.14
모듈 프로그래밍 #2  (0) 2013.08.14
I/O Method  (0) 2013.08.14

+ Recent posts