링커, 로더, 실행 파일
공유 라이브러리에서 사용되는 GOT(전역 오프셋 테이블)의 역할로 올바른 것은?
- A라이브러리 함수의 이름을 알파벳순으로 나열한 목차이다
- B캐시에 다 들어가지 못한 데이터를 임시로 두는 표이다
- C외부 변수나 함수의 실제 주소를 모아 둔 표로, 실행 시 동적 링커가 채우고 코드는 이 표를 통해 참조한다
정답과 해설 보기
정답: C. 외부 변수나 함수의 실제 주소를 모아 둔 표로, 실행 시 동적 링커가 채우고 코드는 이 표를 통해 참조한다
위치 독립 코드는 다른 라이브러리에 있는 변수의 주소를 명령에 직접 쓸 수 없습니다. 그래서 각 모듈에 주소를 늘어놓은 표(GOT)를 준비하고, 코드는 PC로부터의 거리로 GOT의 항목을 읽어 거기에 들어 있는 주소를 사용합니다. 동적 링커는 읽어 들일 때 GOT에 실제 주소를 써 넣습니다. 고쳐 쓰는 것은 쓰기 가능한 데이터인 GOT뿐이므로 코드 페이지는 공유한 채로 둘 수 있습니다.
- A. 목차가 아니라 주소의 표입니다.
- B. 캐시와는 관계가 없습니다.
- C. 올바릅니다. 고쳐 쓰는 것은 데이터 표뿐이며 코드는 고쳐 쓰지 않습니다.