강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 매커니즘 모듈(Modules)-모듈을 언로드하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 매커니즘 모듈(Modules)-모듈을 언로드하기

 

 





모듈은 rmmod 명령을 사용하여 제거할 수 있지만, 요구 시 로드된 모듈은 더 이상 사용되지 않을 때 kerneld에 의해 시스템에서 자동으로 제거된다.

 

 

 

kerneld의 타이머가 만료될 때마다, kerneld는 사용되지 않는 요구 시 로드된 모듈을 시스템에서 제거하는 시스템 콜을 부른다.

 

 

 

타이머의 값은 kerneld를 시작할 때 설정되는데, 필자의 시스템에서는 180초마다 검사하도록 설정되어 있다.

 

 

 

예를 들어 ISO9660 파일 시스템이 모듈로 되어 있는 곳에서 ISO9660 CDROM을 마운트했다면, CDROM을 언마운트한 후 조금 있으면 ISO9660 모듈이 커널에서 제거된다.

 

 

 

 

모듈은 커널의 다른 부분이 자신에 의존하고 있을 때에는 언로드될 수 없다.

 

 

 

예를 들어 하나 이상의 VFAT 파일 시스템이 마운트되어 있는 동안에는 VFAT 모듈을 언로드할 수 없다.

 

 

 

lsmod의 출력을 보면 모듈에 숫자가 같이 붙어 나오는 것을 볼 수 있을 것이다.

 

 

 

예를 들면 다음과 같다.

 

 

 

숫자는 이 모듈에 의존하고 있는 커널 요소의 개수이다.

 

 

 

위의 예에서는 ipt_MASQUERADEiptable_nat 모듈이 ip_nat 모듈에 의존하고 있으므로 숫자가 2가 된다.

 

 

 

 

321b99fa8ee3480b928de5ca587af27b_1686718481_5359.png
 

 

 

 

이 항목에는 또한 AUTOCLEANVISITED 플래그가 더 있다.

 

 

 

이 두 플래그는 요구 시 로드된 모듈에서 사용된다.

 

 

 

이들 모듈은 자동으로 언로드될 수 있다는 것을 시스템이 알 수 있도록 AUTOCLEAN이라고 표시된다.

 

 

 

VISITED 플래그는 모듈이 하나 이상의 다른 시스템 구성 요소에 의해 사용되고 있음을 말한다.

 

 

 

이는 다른 구성 요소가 그 모듈을 사용할 때마다 설정이 된다.

 

 

 

kerneld가 시스템에 사용되지 않고 있는 요구 시 로드된 모듈을 제거하라고 요청할 때마다 시스템은 자신에게 있는 모든 모듈을 뒤져서 그런 후보들을 골라낸다.

 

 

 

이는 단지 AUTOCLEAN이라고 표시되어 있고, RUNNING 상태에 있는 모듈만을 찾는다.

 

 

 

만약 그 후보의 VISITED 플래그가 설정되어 있지 않다면 그 모듈을 제거하고, 그렇지 않다면 VISITED 플래그를 지우고 시스템의 다른 모듈을 계속 살펴본다.

 

 

 

 

한 모듈이 언로드가 가능하다고 한다면, 그 모듈이 할당받은 커널의 자원을 해제할 수 있도록 모듈의 정리 루틴이 호출된다.

 

 

 

모듈의 자료 구조는 DELETED로 표시되고, 커널 모듈의 리스트와의 연결을 끊는다.

 

 

 

그 모듈이 의존하고 있는 다른 모듈은 더 이상 자신에 의존하지 않다는 것을 나타내도록 참조 목록이 수정된다.

 

 

 

모듈이 필요로 했던 모든 커널 메모리는 해제된다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,845 개
  • 현재 접속자 :  124 명