728x90
반응형

 

링커와 로더의 역할

 

링킹

  • 모듈들을 연결

주기억 장치 할당

  • 적재될 기억공간의 확보

재배치 

  • 기호들을 재배치

적재

  • 재배치가 완료된 모듈을 적재

 

부 프로그램의 호출

[그림1] 부 프로그램의 호출

 

링커가 해야할일

  • 호출된 모듈의 주소를 알 수 있도록 하는 일

 

외부 기호의 참조

[그림2] 외부 기호의 참조

 

각 모듈들이 컴파일 되어도 외부 기호들은 확정된 상대주소를 가질 수 없고 링커에 의해 연결되어야만 상대 주소값을 가진다.

 

 

주기억 장치의 할당

  • 로더의 요구에 의해 요구가 수행
  • 운영체제 안에는 기억장치 관리 모듈 존재
  • 부분 할당과 전체 할당으로 구분

 

재배치 및 적재

  • 번역 후, 재배치 가능 코드가 생성됨
  • 프로그램의 시작위치가 기준점
  • 재배치 작업은 각 명령어의 주소부분에 행해짐
  • 컴파일러가 재배치 정보 생성
  1. 재배치 비트(주소가 바뀌어야 할 것인지를 나타내는)를 이용하는 방법
  2. 기호표에 재배치 하여야 할 기호들을 표시하는 방법

 

로더의 종류와 형태

  • 컴파일 즉시로더
  • 절대 로더
  • 재배치로더
  • 링킹 로더
  • 동적 로더

 

컴파일 즉시 로더의 개념

  • 가장 간단한 방법
  • 로더의 기능은 거의 어셈블러가 수행
  • 로더의 기능은 단순히 실행을 제어
  • 어셈블러가 적재 -> 기억장소낭비
  • 목적모듈이 보조기억장치에 저장 안됨 어셈블러의 재번역이 요구됨
  • 서로 다른 언어로 작성된 모듈들끼리 연결불가
  • 모든 모듈이 한꺼번에 번역 -> 모듈화가 어려움

 

절대 로더의 개념

  • 출력결과는 보조기억장치에 저장
  • 로더는 번역시 정해진 위치에 적재만 수행
  • 프로그래머가 어셈블러에게 적재주소 지정
  • 각 모듈의 적재주소 지정

 

 

로더의 4가지 역할을 수행하는 주체

 

링크

  • 프로그래머

기억장소 할당(번지 지정)

  • 프로그래머

재배치

  • 어셈블러

적재

  • 절대 로더

재배치 로더의 개념

  • 적재 모듈을 주기억장치에 적재
  • 상대주소를 절대주소로 변환
  • 외부기호의 참조
  • 모듈의 이름 기호 참조
  • 외부 모듈에서 정의된 기호 참조

링킹 로더의 개념

  • 재배치링크 및 적재를 한꺼번에 수행
  • 두 단계의 패스로 구성 (패스1과 패스2로 구성)

패스1 기능

  • 모듈에 기억장소 할당
  • 외부기호들의 주소 확정
  • 외부기호표 작성

패스2 기능

  • 모든 상대주소를 절대 주소로 변환
  • 외부기호표 참조 후 적재

 

 

링킹 로더의 수행 과정

[그림3] 링킹 로더의 수행 과정

 

 

링킹 로더의 4가지 역할을 수행하는 주체

  • 링크 ---- 링킹 로더
  • 기억장소 할당 ---- 운영체제
  • 재배치 ---- 링킹 로더
  • 적재 ---- 링킹 로더

 

링커

  • 목적 모듈로부터 재배치 정보를 만들어 로더에게 제공

링킹 로더

  • 목적모듈로부터 코드를 만들어 기억 장치에 적재(링커 + 로더)

 

동적 로더의 개념

  • 재배치로더와 링킹로더의 단점 보완
  • 기억장소의 효율적 활용
  • 서브루틴들의 상호 호출관계 파악
  • 오버레이 구조를 활용

 

동적 적재시 서브루틴의 호출관계

[그림4] 동적 적재시 서브루틴의 호출관계

 

동적 적재시 기억 장소의 변화

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기