힙과 스택의 물리적 표현은 무엇입니까?


9

프로그램 카운터가 카운트 할 수 있고 bss (블록 시작 기호)가 글로벌 데이터 인 명령어에 대한 메모리 뱅크가있는 프로세서에서 .bss 및 코드가 물리적 표현을 갖는 방법을 쉽게 이해할 수 있습니다. 그러나 로컬 변수 스택과 동적 메모리 힙이 있습니다. 이러한 것들이 회로에 물리적으로 어떻게 적용됩니까?

답변:


6

참고 : 나는 x86을 가장 잘 알고 있으며 널리 문서화되어 있습니다.

x86 (및 대부분의 다른 아키텍처)에서 스택은 다른 모든 것과 마찬가지로 메모리에 상주 합니다. 프로세서는 일반적으로 레지스터 (스택 포인터)에 저장되는 포인터를 통해 스택을 조작합니다. 푸시 및 팝 명령어는 스택 포인터의 값을 변경하여 스택의 상단 위치를 변경합니다.

힙은 소프트웨어 추상화 입니다. 이름에서 알 수 있듯이 할당자가 슬라이스하고 포인터를 전달하는 RAM의 덩어리 일뿐입니다. 물리적 측면에서 힙은 RAM의 다른 부분과 다르게 보이지 않습니다.

그러나 페이징 및 분할은 접선과 힙과 관련이 있습니다. 프로세스는 명시 적으로 소유하지 않은 RAM을 수정할 수없는 멀티 태스킹과 관련이 있습니다.


3
페이징은 일반적인 메모리 관리 (물리적 메모리가 논리 주소에 매핑되는 단위)에 대한 것보다 액세스 제한보다 더 중요하지만, 나중에 메모리 관리 장치의 추가 기능으로 적용되는 경향이 있습니다.
Chris Stratton

4

논리적으로 스택을 말하면 힙은 일반적으로 메모리입니다. 그러나 구현 수준에서는 기본적으로 캐시에서 제공되기를 바랍니다. 대부분의 시스템에는 캐싱 알고리즘을 통해 동적으로 접근하지만 캐시 또는 기타 일반적인 메모리보다 빠른 위치에 명시 적 위치를 지원하는 시스템이 있으며 특정 데이터가 다음과 같이 배치하는 데 우선 순위가 있어야한다는 힌트를 남길 수 있습니다. 우주 허가증.

저수준 소프트웨어 및 컴파일러 코드 생성기의 설계는 데이터 액세스 구성을 고려하여 캐시 활용률을 높이고 지속적인 캐시 누락을 초래할 수 있습니다.

일부 프로세서에는 리턴 주소 레지스터가 있습니다.이 레지스터는 일종의 1 차원 명시 적 스택 캐시의 기능을합니다 (여러 개의 하드웨어 스택이있는 프로세서도있을 수 있습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.