질문


제가 xp를 쓰는데요..
인터넷하다보면

IEXPLORE.EXE - 응용 프로그램 오류
"0x77f83aef"에 있는 명령이 "0x023f7ed4"의 메모리를 참조했습니다.
메모리는"written"될 수 없었습니다.

프로그램을 마치려면 [확인]을 클릭하십시오.

이렇게 오류메시지가 뜨는데요..

이것의 원인은 뭐고, 처방은 무엇인가요..ㅠㅠ

해결


원인을 살펴보면

프로그램이 실행된 다는 것은 디스크에 있는 프로그램을 메모리에 로딩한다는 의미입니다
프로그램들이 실행할 때는 메모리를 순차적으로 사용하는것이 아니고
랜덤하게 주소를 지정 받습니다.

사용할 메모리 영역을 할당받는 과정에서 생기는 대표적인 Error 입니다.

프로그램을 만들때 메모리를 할당하는 방식이 2가지 있습니다.
직접 메모리 주소를 할당하는 방식과

윈도우에게 메모리를 할당하게 끔
윈도우에 메모리 주소를 상대주소로 넘겨주는 방식 2가지를 사용하는데

보통은 윈도우에서 메모리를 할당할 수 있도록 상대주소를 사용합니다.

프로그램이 실행되면서 윈도우는 프로그램에서 주소를 넘겨받아서
주로 가상메모리(디스크)에 주소를 할당해서 프로그램을 실행시킵니다

이 과정에서 윈도우에서 해당 메모리 주소를 이미 다른 프로그램에 의해 사용하고
있거나,
프로그램이 사용할 메모리의 주소를 할당을 하지 못할 때 이런 에러가 납니다.

해결은

1. 가상메모리를 늘리는 방법
2. 쓰지 않는 프로그램을 삭제를 함으로써 디스크의 남은 공간을 많이 확보하는 방법
3. 바이러나 악성코드 체크

2, 3번째 방법을 더 권장합니다.

추가정보


read, written 등을 할 수 없다는 말이 모두 같은 종류의 에러입니다.

익스플로러 경우에는 플러그-인 되는 프로그램들이 워낙에 많기 때문에
정황을 분석해 볼 필요가 있습니다.

다른 플래시나 자바등의 컨트롤을 다운받아서 실행하면서
나타날 수도 있기 때문입니다.

윈도우는 메모리 운영시 디스크를 사용하는 가상메모리를 참 즐겨 사용합니다.
이런 가상메모리가 어떤식으로 사용되고 있는지 살펴보면

페이징은 프로그램을 실행할때 자주 사용되지 않는 부분의 작업 메모리를
하드디스크로 옮기는 방식을 통해, 활용 가능한 메모리 공간을 증가시키기 위한 방법 하나입니다
이때, 한번에 옮겨지는 메모리 용량 단위를 페이지라 부릅니다


프로그램 실행이 들어오면

윈도우에서 메모리 관리를 할때는 페이지표가 있어서

1 .현재 사용중인 프로그램들을 다시 디스크에 만들어진 페이지고 옮기고
2. 메인 메모리에 빈 공간을 만든 후
3. 실행 요청이 들어온 프로그램에 대한 디스크(가상메모리)에 페이지를 먼저 만들고
4. 다시 메인메모리(ram)에서 디스크에 있는 페이지를 읽어서 프로그램을 실행하게 됩니다.

많이 발생하는 에러가 "메모리 참조를 잘못했다는 ...." 그런 에러들 입니다

메모리에 관련된 에러는 딱 잘라서 이것이 문제라고 설명할 수 없습니다.
전체적인 윈도우의 운영상태를 파악을 해서 이것 외에
다른 요인이 없는지 확인하는것도 중요합니다.

대부분의 이런 read, wirte에러가 나오면 악성코드를 먼저 의심을 해보세요