2013-08-26 2 views
0

나는 아주 간단한 질문이있다. 테스트 할 수있는 환경이 없기 때문에 스스로 대답을 찾을 수 없습니다.페이지 밖으로 바이트 접근하기

페이지 가장자리에서 4 바이트를 액세스하면 어떻게됩니까?

mov eax, dword [0x100000+4095] 

내가하지 않으면 내가 0x101000 페이지에 액세스 할 때 상위 3 바이트 될 것입니다 무엇?

도와주세요.

+0

페이지가 매핑되지 않은 경우 운영 체제에서 페이지 오류가 발생하여 매핑됩니다. 페이지에 대한 액세스 권한이 없으면 운영 체제가 프로세스를 중단시킬 수 있습니다 (충돌 할 가능성이 높습니다). –

+0

어, 그래서 바이트는 그 다음 페이지에서 가져갈 것입니까? – user35443

+0

운영 체제에서 해당 페이지를 읽을 수 있으면 '예'입니다. –

답변

1

어떤 happiness는 주로 운영 체제에 따라 다릅니다. 정상적인 메모리 액세스 권한이 있으면 아무 일도 일어나지 않습니다. 그 값은 그 당시에 무엇이든간에 단순히 읽혀집니다. 페이지에 대한 액세스가 허용되지 않으면 OS가 처리해야하는 페이지 오류가 프로그램에서 생성됩니다.

페이지가 디스크에있는 경우 스왑 아웃 되었기 때문에 OS가 페이지를로드하고 중단 된 위치에서 프로그램을 다시 시작합니다. 당신의 프로그래머는 이것을 알아 채지 못할 것입니다. 페이지가 유효하지 않은 경우 OS가 예외를 발생시키고 OS에 따라이를 catch하거나 프로그램이 중단 될 수 있습니다.

액세스가 커널 수준에서 수행되고 해결할 수없는 경우 OS가 커널 패닉으로 인해 충돌 할 가능성이 높거나 잘 작성된 경우 OS가 드라이버를 비활성화하여 문제를 일으킬 수 있습니다.