Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Chapter3.1-3.4] 스택은 정말 낮은 주소 방향으로만 커지는가? 🤔🤔 #10

Open
ella-yschoi opened this issue Jul 8, 2024 · 0 comments
Assignees

Comments

@ella-yschoi
Copy link
Member

ella-yschoi commented Jul 8, 2024

의문의 시작

  • 분명 책에서는 '프로세스 스택 영역의 높은 주소가 맨 위에 있고, 스택 영역은 낮은 주소 방향으로 커진다' 라고 했다.
  • 그런데 개인적으로 스택은 아래에서 위에서 커지는 것으로 알고 있었기에 약간의 인지 부조화가 있었다.
  • 마침 스터디 시간에도 이야기 나왔던 내용이라 더 찾아보았다.

그러니까 뭐가 다르냐면

image

출처: velog @토닉

보통 스택 영역이라 한다면, 위의 그림을 떠올렸다.
책 <컴퓨터 밑바닥의 비밀>의 그림과는 다르게 아래에서 위로 커지는 모습이다.


image

출처: illinois.edu/cs225

위의 그림은 이전 그림과는 다르게 스택 영역이 위에서 아래로 커지는 모습이다.


서칭해 보니..

  • 메모리 구조에서 스택 영역의 성장 방향은 프로세서 아키텍처와 운영체제에 따라 다를 수 있다고 한다.
  • (책에서도 설명하듯) 많은 전통적인 시스템 아키텍처에서 스택은 높은 메모리 주소에서 낮은 메모리 주소로 성장한다. 즉, 새 데이터가 스택에 추가될 때마다 스택 포인터는 감소한다.
  • 이는 주로 x86 아키텍처에서 볼 수 있다. 스택의 초기 주소가 높은 주소로 설정되고 함수 호출 및 로컬 변수들이 스택에 추가될 때마다 주소가 낮아지는 방향으로 스택이 확장되는 형태다.
  • 다만, 반대로 일부 다른 아키텍처에서는 스택이 낮은 메모리 주소에서 높은 메모리 주소로 커진다. 이 경우 새 데이터가 스택에 추가될 때마다 스택 포인터는 증가한다.
  • 예를 들어, 일부 RISC 아키텍처에서는 스택이 낮은 주소에서 높은 메모리 주소로 성장할 수 있다. (이 또한 '일부'임)

다만, 위의 설명은 인터넷 정보와 GPT와 Gemini 대답의 조합이라 다소 신빙성은 떨어질 수 있다.
더 정확하고 좋은 설명이 있다면 나누어주시길 바라며...


결론은 이렇다.

  • 일단 책 설명은 일반적으로 ~ 그럴 거라 생각하자. 특정 아키텍처나 환경을 예시로 든 것일 수도 있다.
  • 그러니 모든 컴퓨터나 모든 언어에서 100% 적용된다 생각하지 않는 게 좋을 것 같다.
  • 물론 기반이 되는 개념은 있겠지만, 기술은 계속해서 발전하니 이 책을 더 입체적으로 이해하면 좋겠다.

참고할만한 자료


@ella-yschoi ella-yschoi self-assigned this Jul 8, 2024
@ella-yschoi ella-yschoi changed the title [Chapter 3] 스택은 정말 낮은 주소 방향으로만 커지는가? 🤔🤔 [Chapter3.1-3.4] 스택은 정말 낮은 주소 방향으로만 커지는가? 🤔🤔 Jul 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant