로더: Difference between revisions

From CS Wiki
No edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 2: Line 2:


== 기능<ref>[http://q.fran.kr/문제/3791 정보처리기사 2016년 2회]</ref> ==
== 기능<ref>[http://q.fran.kr/문제/3791 정보처리기사 2016년 2회]</ref> ==
* Allocation
* 할당(Allocation)
* Linking
** 프로그램을 주기억 장치에 적재하기 위해 공간을 확보
* Relocation
* 연결(Linking)
** 주기억장치의 일부 공간을 논리적 주소 공간으로 연결
* 재배치(Relocation)
** 주기억 장치의 공간에서 위치를 조정
* 적재(Loading)
** 프로그램을 주기억 장치에 물리적, 논리적으로 배치
 
== 종류<ref>[http://q.fran.kr/문제/6774 정보처리기사 2015년 2회]</ref> ==
* Compile-and-Go 로더
** 컴파일러의 작업이 끝나면 바로 오브젝트 코드의 시작 주소로 실행을 옮기도록 한 것으로, 초기 로더가 별도로 존재하기 전에 사용
** 단일 일관(Batch) 작업만 수행    
* 절대(Absolute) 로더
** 컴파일러에 의해 지정된 절대 주소의 메모리로 오브젝트 코드를 적재하며, 초기의 로더가 이에 해당됨
** 실행 코드는 오직 단일한 연속 공간 내에서만 실행    
* 재배치(Relocation) 로더
** 컴파일러에 의해 상대 주소로 오브젝트 코드가 생성되며, 이를 적재하는 시점에서 할당 정책에 의해 적재할 메모리 공간을 선정하고, 그 공간의 시작 주소와 상대 주소를 더하여 절대 주소로 계산하여 적재
** 코드는 오직 단일한 연속 공간 내에서만 실행됨    
* 직접 연결(Direct-Linking) 로더
** 실행 코드가 몇 개의 세그먼트로 나누어져 있고, 각각의 세그먼트는 별도의 메모리 공간에 배치되며, 이때 각 변수의 주소는 직접 지정 방식에 의해 절대 주소로 변환
** 실행 코드는 실행 전에 복수의 연속된 세그먼트로 나뉘어 적재됨    
* 동적(Dynamic) 로더
** 실행 코드는 세그먼트로 분리되어 있으나, 가상 기억 공간 내의 주소로 링크
** 각각의 세그먼트는 실행 시점에 적재되며, 최종의 주소도 이때 결정됨    
* 동적 연결(Dynamic-Linking) 로더
** 세그먼트와 페이지로 분리되며 가상 기억 공간 내에서도 상대 주소로 적재됨
** 로더는 실행 시점에서 세그먼트를 페이지 단위로 실제 메모리에 적재하면, 이때 각 변수의 절대 주소를 바인딩 함


== 관련 항목 ==
== 관련 항목 ==
* [[링커|링커(Linker)]]
* [[링커|링커(Linker)]]
== 출처 ==
*종류 출처 [https://middleware.tistory.com/entry/%EB%A1%9C%EB%8D%94%EC%9D%98-%EC%A2%85%EB%A5%98 무강 블로그]


[[분류:운영체제]]
[[분류:운영체제]]

Latest revision as of 03:21, 11 November 2023

어떤 프로그램을 실행하기 위해 해당 목적 프로그램을 메모리에 적재하고 배치 주소를 옮기는 프로그램

기능[1][edit | edit source]

  • 할당(Allocation)
    • 프로그램을 주기억 장치에 적재하기 위해 공간을 확보
  • 연결(Linking)
    • 주기억장치의 일부 공간을 논리적 주소 공간으로 연결
  • 재배치(Relocation)
    • 주기억 장치의 공간에서 위치를 조정
  • 적재(Loading)
    • 프로그램을 주기억 장치에 물리적, 논리적으로 배치

종류[2][edit | edit source]

  • Compile-and-Go 로더
    • 컴파일러의 작업이 끝나면 바로 오브젝트 코드의 시작 주소로 실행을 옮기도록 한 것으로, 초기 로더가 별도로 존재하기 전에 사용
    • 단일 일관(Batch) 작업만 수행    
  • 절대(Absolute) 로더
    • 컴파일러에 의해 지정된 절대 주소의 메모리로 오브젝트 코드를 적재하며, 초기의 로더가 이에 해당됨
    • 실행 코드는 오직 단일한 연속 공간 내에서만 실행    
  • 재배치(Relocation) 로더
    • 컴파일러에 의해 상대 주소로 오브젝트 코드가 생성되며, 이를 적재하는 시점에서 할당 정책에 의해 적재할 메모리 공간을 선정하고, 그 공간의 시작 주소와 상대 주소를 더하여 절대 주소로 계산하여 적재
    • 코드는 오직 단일한 연속 공간 내에서만 실행됨    
  • 직접 연결(Direct-Linking) 로더
    • 실행 코드가 몇 개의 세그먼트로 나누어져 있고, 각각의 세그먼트는 별도의 메모리 공간에 배치되며, 이때 각 변수의 주소는 직접 지정 방식에 의해 절대 주소로 변환
    • 실행 코드는 실행 전에 복수의 연속된 세그먼트로 나뉘어 적재됨    
  • 동적(Dynamic) 로더
    • 실행 코드는 세그먼트로 분리되어 있으나, 가상 기억 공간 내의 주소로 링크
    • 각각의 세그먼트는 실행 시점에 적재되며, 최종의 주소도 이때 결정됨    
  • 동적 연결(Dynamic-Linking) 로더
    • 세그먼트와 페이지로 분리되며 가상 기억 공간 내에서도 상대 주소로 적재됨
    • 로더는 실행 시점에서 세그먼트를 페이지 단위로 실제 메모리에 적재하면, 이때 각 변수의 절대 주소를 바인딩 함

관련 항목[edit | edit source]

출처[edit | edit source]