커널 모드에서의 페이지 폴트...?
글쓴이: kkojiband / 작성시간: 금, 2003/10/31 - 3:55오후
그냥 시험 삼아 디바이스 드라이버 작성시에 strcpy 를 이용해서 접근할수없는 메모리 영역에 쓰기를 해봤는데요,
그냥 세그멘테이션 폴트 메세지만 뿌려주고 마네요...
커널 코드(fault.c)에 보니까 가상메모리영역내에 없는 메모리 접근시 유저 모드일때는 위의 메세지를 뿌려주고, 커널 모드일때는 다른 예외처리를 하던데 이건 왜 일까요?
커널 코드를 완벽히 분석해보는게 제일 좋은 방법이겠지만, 어렵네요...--;
고수님들 조언을 부탁드립니다~
Forums:
제가 알기론 리눅스 커널이 먹은 메모리 영역은 스와핑이 안됩니다.
제가 알기론 리눅스 커널이 먹은 메모리 영역은 스와핑이 안됩니다.
다른 예외처리라는 거는 아마도 커널 패닉시 나는 메시지를 뿌리는거 같네요.
Written By the Black Knight of Destruction
먼저 답변 감사드립니다~!근데 제가 질문을 잘못했습니다...--;
먼저 답변 감사드립니다~!
근데 제가 질문을 잘못했습니다...--;;
커널 모드에서 다른 예외처리를 하는데 이건 왜 일까요? 가 아니구요...--;
커널 모드에서 쓰기 금지된 영역에 쓰기를 하거나 유저 공간의 가상 메모리 영역으로 잡혀있지않은 영역에 대해 접근을 할때, strcpy 로 접근을 하면 copy_to_user 등과 같이 먼저 검사를 안하기 때문에 페이지 폴트가 일어날텐데요,
여기서 이상한건 fault.c 에 보면 유저 모드에서 페이지 폴트가 일어나면 그 메세지가 나오고, 커널 모드라면 패닉이 일어나는거같은데,
디바이스 드라이버에서 그렇게 해보니 패닉이 안 일어나고, 일반 유저 모드에서처럼 메세지가 뜨더라구요...
왜 이럴까요? 제가 뭔가 잘못 생각하고 있는걸까요??
이제 졸업이다...사랑하는 SKKULUG 후배들아 안녕~
어설프게나마 해결을 했습니다...페이지 폴트처리시,커널 모
어설프게나마 해결을 했습니다...
페이지 폴트처리시,
커널 모드에서 발생한 문제이면 먼저 오류를 처리하기 위해 준비된게 있는지 찾고, 있으면 거기로 점프를 해서 해결을 하고, 그게 없으면 '웁스' --; 패닉이 되는군요...
커널에서 웁스 라는 단어를 보니...하하...--;
이제 졸업이다...사랑하는 SKKULUG 후배들아 안녕~
댓글 달기