모듈 insmod시 관련 질문입니다
글쓴이: 변유준 / 작성시간: 목, 2007/01/18 - 11:26오전
커널은 물리메모리에 항상 상주하는걸로알고 있습니다
그럼 커널안에 insmod 명령으로 모듈을 삽입시
이 모듈도 항상 물리메모리에 상주하게 되나요??
아니면 페이지 폴트 발생으로 필요시에만 물리메모리에
올라오게 되는지 궁금합니다.
proc/ksyms 파일에서 해당 모듈을 찾아
그 모듈에 text 영역이라고 판단되는곳에 주소를
가져와서
강제로 데이터를 바꿔주어 폴트를 발생시켜주는
프로그램을 이용하다가 이런 궁금증이 생겨습니다
해당모듈을 이용하는 프로그램 실행전에 비트를 바꿔버리고
실행하면 프로그램이 모듈을 이용할때 커널이 패닉에빠지는데요
프로그램 실행중에 text영역에 비트를 바꿔주면 그래도
실행되던 프로그램은 이상없이 수행은 되었습니다.
한참 생각하다가 전자는 코드부분을 메모리로 로드하기전에
변경하였기 때문에 모듈을 이용하면 잘못된 폴트가 발생되고
후자는 메모리로 text 영역에 코드부분이 메모리로 이미
올라왔기때문에 바꿔도 영향을 안주나?
생각하다가 이런글을 올리게 되었습니다.
어떻게 생각하시는지요...
읽어주셔서 감사합니다.
- 유준입니다 -
Forums:
vmalloc()으로 high-momory에
vmalloc()으로 high-momory에
kernel module관련 text, data가 들어가는 페이지를
할당하고 master kernel paging table을 변경합니다.
kernel-mode에서 kernel module 코드를 읽게 될 경우
page fault가(처음일 경우)
발생하고 master kernel paging table을 참조하여 valid한 경우
paging table을 갱신하고 아니라면(invalid) kernel oops가 나죠.
/***************************************
Being the one is just like being in love.
***************************************/
댓글 달기