링커, 로더, 실행 파일
ELF 파일에서 「섹션」과 「세그먼트」의 차이로 올바른 것은?
- A섹션은 Windows용, 세그먼트는 Linux용 호칭이며 내용은 같다
- B섹션은 링커가 다루는 세밀한 단위이고, 세그먼트는 로더가 메모리에 읽어 들이는 단위로서 권한이 같은 섹션을 묶은 것이다
- C세그먼트는 디스크에만 있고 메모리에는 읽어 들여지지 않는다
정답과 해설 보기
정답: B. 섹션은 링커가 다루는 세밀한 단위이고, 세그먼트는 로더가 메모리에 읽어 들이는 단위로서 권한이 같은 섹션을 묶은 것이다
ELF에는 두 가지 관점이 있습니다. 링커는 .text, .rodata, .data, .bss 등의 세밀한 섹션을 단위로 결합과 재배치를 수행합니다. 로더는 프로그램 헤더에 적힌 세그먼트를 단위로 메모리에 대응시키며, 예를 들어 읽기와 실행 세그먼트에 .text와 .rodata를, 읽기와 쓰기 세그먼트에 .data와 .bss를 모읍니다. 권한별로 모으면 페이지 단위의 보호를 설정하기 쉬워집니다.
- A. 둘 다 ELF의 용어이며 역할이 다릅니다.
- B. 올바릅니다. 링크를 위한 관점과 실행을 위한 관점입니다.
- C. 세그먼트야말로 메모리에 읽어 들이는 단위입니다.