링커, 로더, 실행 파일
Linux 등의 일반적인 프로세스의 메모리 배치를 주소가 작은 쪽부터 나열한 것으로 올바른 것은?
- A텍스트 → 데이터 → BSS → 힙 → (빈 공간) → 스택
- B스택 → 텍스트 → 힙 → 데이터 → BSS
- C힙 → 스택 → BSS → 데이터 → 텍스트
정답과 해설 보기
정답: A. 텍스트 → 데이터 → BSS → 힙 → (빈 공간) → 스택
전형적인 배치에서는 주소가 작은 쪽부터 기계어인 텍스트, 초깃값이 있는 데이터, 0에서 시작하는 BSS가 놓이고, 그 위로 힙이 주소가 큰 쪽으로 늘어납니다. 스택은 주소가 큰 쪽에서 작은 쪽으로 늘어나며, 둘 사이의 넓은 빈 영역에 공유 라이브러리나 mmap 영역이 놓입니다. 실제 주소는 안전을 위해 ASLR에 의해 실행할 때마다 달라집니다.
- A. 올바릅니다. 힙은 위로, 스택은 아래로 늘어납니다.
- B. 스택은 주소가 큰 쪽에 놓입니다.
- C. 텍스트는 주소가 작은 쪽에 놓입니다.