링커, 로더, 실행 파일

위치 독립 코드(PIC)에 대한 설명으로 올바른 것은?

  1. A어떤 CPU에서도 똑같이 동작하는 기계어
  2. B실행 중에 자신의 위치를 계속 옮겨 다니는 기계어
  3. C메모리의 어느 주소에 읽어 들여도 코드를 고쳐 쓰지 않고 올바르게 동작하도록 만들어진 기계어
정답과 해설 보기

정답: C. 메모리의 어느 주소에 읽어 들여도 코드를 고쳐 쓰지 않고 올바르게 동작하도록 만들어진 기계어

공유 라이브러리는 프로세스마다 다른 주소에 읽어 들여질 수 있습니다. 위치 독립 코드에서는 함수나 데이터를 고정된 주소가 아니라 PC로부터의 거리나, 주소를 모아 둔 표(GOT)를 통해 참조합니다. 이렇게 하면 읽어 들이는 주소가 바뀌어도 코드 페이지를 고쳐 쓰지 않아도 되므로, 물리 메모리 상의 하나의 사본을 많은 프로세스가 공유할 수 있습니다.

  • A. 기계어는 CPU의 ISA마다 다릅니다.
  • B. 위치를 계속 옮기는 것은 아닙니다.
  • C. 올바릅니다. 공유 라이브러리에 필수적입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 공유 라이브러리에서 사용되는 GOT(전역 오프셋 테이블)의 역할로 올바른 것은?
  2. 동적 링크에서 PLT(프로시저 링키지 테이블)를 사용한 지연 바인딩(레이지 바인딩)을 하는 경우의 설명으로 올바른 것은?
  3. Linux에서 동적 링크 프로그램을 시작할 때 동작하는 동적 링커(ld.so 등)의 역할로 올바른 것은?
  4. ASLR(주소 공간 배치 무작위화)의 목적으로 올바른 것은?
  5. 실행 파일을 PIE(위치 독립 실행 파일)로 만드는 주된 이유는?

이 분야의 비교