로더 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
14번째 줄: | 14번째 줄: | ||
* Compile-and-Go 로더 | * Compile-and-Go 로더 | ||
** 컴파일러의 작업이 끝나면 바로 오브젝트 코드의 시작 주소로 실행을 옮기도록 한 것으로, 초기 로더가 별도로 존재하기 전에 사용 | ** 컴파일러의 작업이 끝나면 바로 오브젝트 코드의 시작 주소로 실행을 옮기도록 한 것으로, 초기 로더가 별도로 존재하기 전에 사용 | ||
** 단일 일관(Batch) 작업만 수행 | ** 단일 일관(Batch) 작업만 수행 | ||
* 절대(Absolute) 로더 | * 절대(Absolute) 로더 | ||
** 컴파일러에 의해 지정된 절대 주소의 메모리로 오브젝트 코드를 적재하며, 초기의 로더가 이에 해당됨 | ** 컴파일러에 의해 지정된 절대 주소의 메모리로 오브젝트 코드를 적재하며, 초기의 로더가 이에 해당됨 | ||
** 실행 코드는 오직 단일한 연속 공간 내에서만 실행 | ** 실행 코드는 오직 단일한 연속 공간 내에서만 실행 | ||
* 재배치(Relocation) 로더 | |||
* 재배치(Relocation) 로더 | |||
** 컴파일러에 의해 상대 주소로 오브젝트 코드가 생성되며, 이를 적재하는 시점에서 할당 정책에 의해 적재할 메모리 공간을 선정하고, 그 공간의 시작 주소와 상대 주소를 더하여 절대 주소로 계산하여 적재 | ** 컴파일러에 의해 상대 주소로 오브젝트 코드가 생성되며, 이를 적재하는 시점에서 할당 정책에 의해 적재할 메모리 공간을 선정하고, 그 공간의 시작 주소와 상대 주소를 더하여 절대 주소로 계산하여 적재 | ||
** 코드는 오직 단일한 연속 공간 내에서만 실행됨 | ** 코드는 오직 단일한 연속 공간 내에서만 실행됨 | ||
* 직접 연결(Direct-Linking) 로더 | * 직접 연결(Direct-Linking) 로더 | ||
** 실행 코드가 몇 개의 세그먼트로 나누어져 있고, 각각의 세그먼트는 별도의 메모리 공간에 배치되며, 이때 각 변수의 주소는 직접 지정 방식에 의해 절대 주소로 변환 | ** 실행 코드가 몇 개의 세그먼트로 나누어져 있고, 각각의 세그먼트는 별도의 메모리 공간에 배치되며, 이때 각 변수의 주소는 직접 지정 방식에 의해 절대 주소로 변환 | ||
** 실행 코드는 실행 전에 복수의 연속된 세그먼트로 나뉘어 적재됨 | ** 실행 코드는 실행 전에 복수의 연속된 세그먼트로 나뉘어 적재됨 | ||
* 동적(Dynamic) 로더 | * 동적(Dynamic) 로더 | ||
** 실행 코드는 세그먼트로 분리되어 | |||
** 각각의 세그먼트는 실행 시점에 적재되며, 최종의 주소도 이때 결정됨 | ** 실행 코드는 세그먼트로 분리되어 있어나, 가상 기억 공간 내의 주소로 링크 | ||
* 동적 연결(Dynamic-Linking) 로더 | ** 각각의 세그먼트는 실행 시점에 적재되며, 최종의 주소도 이때 결정됨 | ||
** 세그먼트와 페이지로 분리되며 가상 기억 공간 내에서도 상대 주소로 적재됨 | |||
* 동적 연결(Dynamic-Linking) 로더 | |||
** 세그먼트와 페이지로 분리되며 가상 기억 공간 내에서도 상대 주소로 적재됨 | |||
로더는 실행 시점에서 세그먼트를 페이지 단위로 실제 메모리에 적재하면, 이때 각 변수의 절대 주소를 바인딩 함 | |||
== 관련 항목 == | == 관련 항목 == | ||
* [[링커|링커(Linker)]] | * [[링커|링커(Linker)]] | ||
[[분류:운영체제]] | [[분류:운영체제]] |