자격증

로더(Loader)란?

채윤아빠 2013. 1. 14. 23:26
728x90
반응형

로더(Loader)란

외부기억장치로부터 정보들을 주기억 장치로 옮기기 위하여 메로리 할당 및 연결, 재비치, 적재를 담당하는 서비스 프로그램

로더의 기능 및 순서

  1. 주기억 장치 할당(allocation) : 목적 프로그램이 적재될 주기억 장소 내의 공간을 확보
  2. 연결(linking) : 필요할 경우 여러 목적 프로그램들 또는 라이브러리 루틴과의 링크 작업. 외부기호를 참조할 때, 이 주소 값들을 연결
  3. 재배치(relocation) : 목적 프로그램을 실제 주기억 장소에 맞추어 재배치. 상대주소들을 수정하여 절대주소로 변경
  4. 적재(loading) : 실제 프로그램과 데이터를 주기억 장소에 적재. 적재할 모듈을 주기억장치로 읽어 들임

로더의 종류

  • 컴파일 즉시로더(Compile and Go) : 번역기가 로더의 역할까지 담당하는 것으로 프로그램의 크기가 크고 한 가지 언어 로만 프로그램을 작성할 수 있다. 실행을 원할 때마다 번역을 해야 한다. 이러한 특성 때문에 로더라고 하기에는 부적합하다.
  • 절대로더(absolute loader) : 단순히 번역된 목적프로그램을 입력으로 받아들여 주기억장치의 프로그래머가 지 정한 주소에 적재하는 기능을 가지는 간단한 로더.
    • 특징
      • 재배치라든지 링크등이 없음
      • 프로그래머가 절대 주소를 기억해야 함
      • 다중 프로그래밍 방식에서 사용할 수 없음
    • 작업분담
      • 링크 - 프로그래머
      • 기억장소 할당 - 프로그래머
      • 재배치 - 어셈블러
      • 적재 - 로더
  • 재배치 로더 (relocating loader) : 주기억 장치의 상태에 따라 목적 프로그램을 주기억 장치의 임의의 공간에 적재할 수 있도록 하는 로더
    • 작업분담
      • 링크-링커
      • 기억장소 할당-운영체제
      • 재배치-로더
      • 적재-로더
  • 링킹로더 (linking loader) : 하나의 부프로그램이 변경되어도 다른 모듈 프로그램을 다시 번역할 필요가 없도 록 프로그램에 대한 기억장소할당과 부 프로그램의 연결이 로더에 의해 자동으로 수행되는 프로그램으로 직접연결로더(DLL : Direct Linking Loader)가 대표적임
    • 작업분담
      • 링크-링킹로더
      • 기억장소 할당-운영체제
      • 재배치-링킹로더
      • 적재-링킹로더
  • 동적 적재(Dynamic Loading = Load on call) : 모든 세그먼트를 주기억장치에 적재하지 않고 항상 필요한 부분만 주기억장치에 적재하고 나머지는 보조기억 장치에 저장해두는 기법
  • 연결 편집기(Linkage editor) : 연결 편집기로 로드모듈을 만들어 놓으면 그 모듈을 기억 장치에 로드하여 바로 실행할 수 있도록 하는 방식으로 진보된 방식이며 요즘 사용하는 방식이다.
  • 동적 연결 (Dynamic Linking) : 실제 수행시 연결과 적재를 이행하는 기법으로 프로시저 세그먼트나 자료 세그먼트는 다른 어떤 프로시저가 수행도중에 실제로 그것을 요구할 때까지 프로그램의 어떤 세그먼트와도 연결되지 않음

기타

  • 수식으로 된 데이터 값의 결정
    • 절대상수 : 내부기호 사이의 수식으로 어셈블러가 결정. 예) SAVE-RESULT
    • 링크 재배치 상수 : 외부기호 사이의 차이를 나타내며 링크하면 결정. 예) B1-A1
    • 적재재배치상수 : 링크하여도 값이 결정되지 않고, 적재되어야 값이 결정. 예) B
  • 어셈블러가 링커 및 로더를 위해 모듈별로 제공하는 정보
    • 목적코드로 번역된 모듈들
    • 기호 표들(모듈의 길이, 외부에서 정의된 기호, 내부에서 정의된 기호)
    • 재배치링크 표(재배치되어야 할 주소 값들과 그 수정 방법)
  • 링커 및 로더의 패스 1이 만드는 정보
    • 각 모듈들을 단순링크 한 모듈
    • 총괄 기호 표
    • 총괄 재배치링크 표
  • 링커 및 로더의 패스 2가 만드는 정보
    • 주소 값들을 수정하여 적재모듈을 생성
    • 주소들을 재배치함
  • 어셈블러를 이중 패스(Two Pass)로 만드는 주된 이유는 전향 참조(Forward Reference)를 위함이다.

참고자료