커널에서 메모리 페이징

declspec의 이미지

유저 어플리케이션에서는
할당했던 메모리 영역이 페이징되는걸 전혀 신경쓸 필요가 없습니다
왜냐하면 MMU 가 알아서 페이지폴트 처리를 해주니까요

하지만 커널 디바이스드라이버를 제작할때는
할당된 메모리가 페이징되는걸 걱정해줘야 합니다

왜 커널 디바이스 드라이버를 작성할때는 페이징을 신경써야할까요?
MMU 가 이것도 같이 처리 못해주는 이유가 있나요?

익명 사용자의 이미지

커널 디바이스 드라이버 작성 시, 페이지 폴트 처리를 해줘야 한다는 것은 처음듣는 얘기이네요.

.init 섹션에 포함되어 있는 코드영역을 제외한 커널코드는 부팅 시 메모리에 한번 올라가게되면 해제 되지 않고,
가용가능한 메모리로 잡히지도 않습니다.

커널모듈도 insmod 에 전체모듈에 대해서 pagefault의 메카니즘을 이용해서 로딩이 되는 것으로 알고 있으나,
insmod 시에 전체가 로딩되며 rmmod 전에는 해제되지 않는 것으로 알고 있습니다.