답변:
참고 : 나는 x86을 가장 잘 알고 있으며 널리 문서화되어 있습니다.
x86 (및 대부분의 다른 아키텍처)에서 스택은 다른 모든 것과 마찬가지로 메모리에 상주 합니다. 프로세서는 일반적으로 레지스터 (스택 포인터)에 저장되는 포인터를 통해 스택을 조작합니다. 푸시 및 팝 명령어는 스택 포인터의 값을 변경하여 스택의 상단 위치를 변경합니다.
힙은 소프트웨어 추상화 입니다. 이름에서 알 수 있듯이 할당자가 슬라이스하고 포인터를 전달하는 RAM의 덩어리 일뿐입니다. 물리적 측면에서 힙은 RAM의 다른 부분과 다르게 보이지 않습니다.
그러나 페이징 및 분할은 접선과 힙과 관련이 있습니다. 프로세스는 명시 적으로 소유하지 않은 RAM을 수정할 수없는 멀티 태스킹과 관련이 있습니다.
논리적으로 스택을 말하면 힙은 일반적으로 메모리입니다. 그러나 구현 수준에서는 기본적으로 캐시에서 제공되기를 바랍니다. 대부분의 시스템에는 캐싱 알고리즘을 통해 동적으로 접근하지만 캐시 또는 기타 일반적인 메모리보다 빠른 위치에 명시 적 위치를 지원하는 시스템이 있으며 특정 데이터가 다음과 같이 배치하는 데 우선 순위가 있어야한다는 힌트를 남길 수 있습니다. 우주 허가증.
저수준 소프트웨어 및 컴파일러 코드 생성기의 설계는 데이터 액세스 구성을 고려하여 캐시 활용률을 높이고 지속적인 캐시 누락을 초래할 수 있습니다.
일부 프로세서에는 리턴 주소 레지스터가 있습니다.이 레지스터는 일종의 1 차원 명시 적 스택 캐시의 기능을합니다 (여러 개의 하드웨어 스택이있는 프로세서도있을 수 있습니다).