2024. 12. 12. 20:56ㆍSTUDY/내가 궁금해서 끄적한 내용
문득 스택만 높은 영역에서 낮은 영역으로 저장된다는 부분에 의문점이 들어 작성한 글이다.
1. 스택 포인터의 역할
스택은 스택 포인터라는 레지스터로 관리된다. 이 레지스터는 스택의 최상단을 가리키는 메모리 주소를 저장한다.
- 푸쉬(push) : 데이터를 스택에추가할때, SP를 감소시키고 데이터를 저장한다.
- 팝(pop) : 데이터를 스택에서 제거할 때, 데이터를 읽고 SP를 증가시킨다.
위 두 연산은 각각 감산 또는 가산 연산 한번으로 단일 메모리 접근만으로 처리된다. 이러한 간결성은 하드웨어 설계와 명령어 실행을 단수화하고 효율적이다.
2. 커널 영역을 침범하지 않으면서 전체적인 영역을 일정하게 차지하기 위함
스택이 높은 영역에서 낮은 영역으로 가기 때문에 커널 영역에 침범하지 않는 매우 중요한 이유도 존재한다.
그렇다고 해도 스택을 동일하게 낮은 영역에서 높은 영역으로 할당해도 되지 않는가?
그냥 고집 한번 부린다고 생각하고 위의 이유가 있더라도 스택도 낮은 영역에서 높은 영역으로 저장되게끔하고 메모리의 크기를 더 크게 할당하면 안되나? 라는 생각을 잠깐 해봤다.
근데 생각해보면 그러면 메모리의 영역을 너무 크게 잡아먹는다.
조금 더 생각해보니 스택이 반대로 할당하기 때문에 힙과 스택의 영역을 맥스 서로의 처음 할당되는 공간까지 늘어날 수 있는 구조를 가질 수 있다는 걸 생각했다.
만약 힙을 위한 영역 별도, 스택도 낮은 영역에서 높은 영역으로 할당하기 위한 영역 별도를 설정하게 되면 메모리의 전체 할당 크기도 커질뿐더러, 반대로 할당함으로써 얻는 최대 크기의 이득도 얻지 못한다...!
https://jihyeong-ji99hy99.tistory.com/19
'STUDY > 내가 궁금해서 끄적한 내용' 카테고리의 다른 글
디버깅모드로 전환시 멈추는 현상 (0) | 2022.10.06 |
---|---|
개발자로써 커리어를 쌓으면서 느낀 점 (0) | 2022.09.28 |