본문 바로가기
한국으로/임베디드 리눅스

7.2 모듈

by 영킴. 2018. 7. 1.

7.2 모듈

7.2.1 모듈이란?

모듈은 커널 영역에 동적으로 로딩/언로딩되고, 로딩 후에 커널 코드와 동일하게 동작한다.
모듈을 사용하면 커널 코드에 직접 코드를 올려서 컴파일하지 않아도 되기 때문에, 커널 이미지가 작아지는 효과가 있다.
따라서, 필요할 기능을 때에 따라 모듈로 로드해서 사용하면 편리하다. (동작 속도도 느려지지 않는다)

모듈 명령

insmod: 모듈을 로딩한다.
rmmod: 모듈을 언로딩한다.
lsmod: 현재 로딩된 모듈을 출력한다.



7.2.2 모듈 매크로

module_init( function() )

모듈로 컴파일하면, insmod 명령 시 (로딩), init_module() 대신 function() 이 호출된다. 여기서 function()은 임의의 함수.
커널에 포함하여 컴파일하면, 커널 초기화 과정에서 function() 이 자동으로 호출된다.

module_exit()

모듈로 컴파일하면, rmmod 명령 시 (언로딩), cleanup_module() 대신 function() 이 호출된다.

커널에 포함하여 컴파일할 땐 언로딩이 필요없다. (의미없음)


이렇게 module_init 매크로를 쓰는 이유는 소스코드를 수정하지 않고도 '모듈 컴파일'과 '커널에 포함해 컴파일' 이 모두 가능하기 때문에 편리하기 때문이다.





'한국으로 > 임베디드 리눅스' 카테고리의 다른 글

9.2 지연 작업  (0) 2018.07.06
9.1 시간처리  (0) 2018.07.06
8.1 인터럽트  (0) 2018.07.06
7.3 문자 드라이버  (0) 2018.07.01
7.1 디바이스 드라이버  (0) 2018.07.01
5.4 파일시스템  (0) 2018.07.01
5.3 메모리 관리  (0) 2018.06.29
5.2 시스템 콜  (0) 2018.06.28