2012-05-04 2 views
0

스택과 힙 충돌은 두 세그먼트를 다른 세그먼트에 둠으로써 막을 수 있다고 생각합니다. 그런 식으로 구현되지 않은 이유는 무엇입니까?스택 힙 충돌이 다른 세그먼트에 구현되지 않은 이유

+2

얘기하는 시스템의 어떤 종류의? 어느 쪽을 비교하고 있니? – TJD

+0

저는 일반적인 프로그래밍 언어 개념에 대해 말하고 있습니다. 예를 들어 C++ 컴파일러에서 ... – srjt

+2

@ user1096656 10000 개의 서로 다른 시스템에 대해 10000 개의 서로 다른 C++ 컴파일러가 있습니다. 이러한 시스템 중 일부에서 세그먼트 화 (또는 모든 형태의 보호 메모리)가 존재하지 않습니다. 많은 시스템에서 스택 힙 충돌 *이 세그멘테이션 오류 또는 페이지 오류를 일으 킵니다. 따라서 메모리 보호 기능이없는 시스템에서 스택 힙 충돌을 방지하기 위해 세분화가 사용되지 않는 이유는 무엇입니까? 답변 : 보호 된 메모리가 없기 때문입니다. 또는 왜 가드 페이지를 사용하는 시스템에서 세분화가 사용되지 않는지 묻고 있습니까? 또는 다른 것? – sepp2k

답변

0

컴파일러는 운영 체제의 ABI를 준수하는 코드를 생성합니다. 따라서 컴파일러의 메모리 모델은 실제로 운영 체제의 메모리 모델을 따릅니다. 겹쳐진 코드/데이터/스택 세그먼트를 가진 VA, 플랫 바운드 VA 또는 다른 OS에 대해 질문하는 경우, 그렇게 프로그래밍하기가 더 쉽고 메모리 관리가 크게 단순 해집니다. 힙 스택 충돌을 방지 할 수 있다는 것은 메모리 관리의 용이성면에서 OS가 느슨해지는 것에 대한 이득이 너무 작습니다 (평면 VA는 이미 을 복잡하게 관리 함은).

는 OS/2에 무슨 일이 있었는지를 참조하십시오 - 그것은 보호 모드에서 전체 분할을 사용 했 ...

관련 문제