링커, 로더, 실행 파일

Linux 등의 일반적인 프로세스의 메모리 배치를 주소가 작은 쪽부터 나열한 것으로 올바른 것은?

  1. A텍스트 → 데이터 → BSS → 힙 → (빈 공간) → 스택
  2. B스택 → 텍스트 → 힙 → 데이터 → BSS
  3. C힙 → 스택 → BSS → 데이터 → 텍스트
정답과 해설 보기

정답: A. 텍스트 → 데이터 → BSS → 힙 → (빈 공간) → 스택

전형적인 배치에서는 주소가 작은 쪽부터 기계어인 텍스트, 초깃값이 있는 데이터, 0에서 시작하는 BSS가 놓이고, 그 위로 힙이 주소가 큰 쪽으로 늘어납니다. 스택은 주소가 큰 쪽에서 작은 쪽으로 늘어나며, 둘 사이의 넓은 빈 영역에 공유 라이브러리나 mmap 영역이 놓입니다. 실제 주소는 안전을 위해 ASLR에 의해 실행할 때마다 달라집니다.

  • A. 올바릅니다. 힙은 위로, 스택은 아래로 늘어납니다.
  • B. 스택은 주소가 큰 쪽에 놓입니다.
  • C. 텍스트는 주소가 작은 쪽에 놓입니다.
이 분야 연습하기 분야로 돌아가기

링커, 로더, 실행 파일의 다른 문제

  1. 프로세스의 힙과 스택을 사이에 넓은 빈 공간을 두고 서로 반대 방향으로 늘어나도록 배치할 때의 이점으로 올바른 것은?
  2. 정적 링크에 대한 설명으로 올바른 것은?
  3. 동적 링크(공유 라이브러리)의 이점으로 올바른 것은?
  4. 동적 링크를 사용한 프로그램을 다른 컴퓨터에 복사해 실행했더니 시작되지 않았다. 가장 가능성이 높은 원인은?
  5. 정적 라이브러리(.a 파일)와 함께 링크할 때 링커가 실행 파일에 포함시키는 것으로 올바른 것은?

이 분야의 비교