Ubuntu에서 한번 로드된 드라이버모듈이 제거안된 상태도 계속 있는게 맞는것인가요?
안녕하세요.
Kernel Driver Module을 살펴보다가 의문점이 생겨서 이렇게 글남기게 되었습니다.
사용하는 Ubuntu는 Ubuntu 12.04(64bit)입니다.
부팅을 하고나서 USB를 꼳으면 lsmod로 확인 시 [usb_storage]라는 모듈이 추가적으로 올라가게 됩니다.
그렇다면 이 usb_storage라는 모듈은 USB를 꼳으면서 추가적으로 올라가게된 모듈이라는 말이 되는데요.
저는 여기서 그렇다면 꼳았던 USB를 제거하면 usb_storage라는 모듈이 사라질 것이라고 생각했습니다.
그런데 USB를 [안전하게 제거]를 통하여 제거하여도 usb_storage라는 모듈은 lsmod목록에 계속 떠 있는 것을 확인하였습니다.
제가 생각하기에는 usb_storage라는 Kerenl Module은 USB가 꼳히는 시점에 일정사이즈의 메모리를 점유하게 되는데 USB가 제거되어져있는 상태에서도 usb_storage가 메모리를 점유하고있는것은 비효율적처럼 느껴집니다.
만약에 이런 상황이라고 한다면 시스템이 부팅하고 장시간 켜져있는 상황이라면 그 사이에 필요에 의해서 삽입됫다가 제거된 디바이스에 대해서 로드된 모듈들은 제거되지않고 계속 올라가져 있는 상태라는 말인데
Ubuntu에서 이렇게 한번 load된 모듈을 제거하지 않고 계속 올라가져 있는 있는 이유가 있는것인가요?
예를 들어 모듈이 올라갔다 내려갔다 반복하면 시스템이 치명적이라던가..
조언 부탁드립니다.
꼳으면? 꽂으면. 자동으로 안 내려가면
꼳으면? 꽂으면.
자동으로 안 내려가면 수동으로
rmmod
해보시면 어떤가요?
세벌 https://sebuls.blogspot.kr/
네 수동으로 rmmod나 modprobe -r 해서
네 수동으로 rmmod나 modprobe -r 해서 모듈은 제거되는것을 보았습니다. 그런데 Ubuntu에서 USB 제거시 자동으로 모듈이 제거가 되지않는게 무슨 이유가 있을까 싶어서요
1. 자동으로 모듈을 내리는 것이 쉬운 일이
1. 자동으로 모듈을 내리는 것이 쉬운 일이 아니다.
2. 절실하게 필요하지가 않다.
이런 두가지 이유가 아닐까 합니다.
커널 버전 2.6 시절에 잠깐 있었다가 사라졌다고 하는데 확실히는 모르겠습니다.
http://lwn.net/Articles/63481/
https://www.howtoforge.com/community/threads/automatic-unloading-of-kernel-modules.40518/
http://www2.informatik.uni-freiburg.de/~danlee/fun/modused/
흠...
페이징같이 효율을 위한 것이 아닐까 싶은데요. 커널 모듈이 내려가는 시점은 확실히 구현하기 나름일 겁니다.
http://osr600doc.sco.com/en/HDK_concepts/ddT_dlkm.html
여기 보시면 수요에 따라 로드된 커널이 더이상 쓰이지 않는다면 자동으로 내려간다 해요. 근데 그 시점이 정확히 언제인지는 안 나와있어요.
아마 이것도 cached 메모리 같이 자원을 효율적으로 쓰기 위해 커널이 알아서 하는 것 같은데... 아마 지연하지 않고 바로 내리는 커널 기능도 있을 겁니다.
댓글 달기