CAFE

ㆍ컴퓨터과학과ㆍ

시스템 프로그래밍 요점정리(5) - 링커와 로더

작성자☆come what may☆|작성시간10.08.20|조회수557 목록 댓글 0

제5장 링커와 로더

- 여러 개의 목적 프로그램을 결합하여 하나의 실행가능한 프로그램을 구성할 수 있는데 이 연결작업은 링커 또는 연결 편집기에 의해서 수행된다.

- 연결 작업은 하나의 로드 모듈(load module)로 생성되는데, 각 모듈 내에 다른 모듈에서 정의된 라벨을 참조하는 외부 참조가 있으면 이들을 전부 해결하여 하나의 수행 가능한 프로그램을 해석하고, 통합된 로드 모듈은 적재 작업에 의해 주기억 장치에 적재된다.

- 로드 모듈이 적재되는 위치에 따라 각 명령어의 번지 부분을 조정해야 할 경우도 있는데 이를 재배치라 하고 이런 기능을 수행하는 것이 로더이다.

1 링커(Linker)

1) 서로 독립적으로 작성되고 번역된 모듈 사이에 연관을 맺어주는 작업을 연결(linking)이라 한다.

2) 각 모듈 내에서 자기 모듈 내에 정의되지 않은 기호를 사용하기 위해서는 외부 기호를 선언해야 하며 언어 번역기에 의해 처리된 목적 모듈을 재배치 가능 모듈이라 한다.

3) 링커와 로더의 수행과정



P48 그림 [링커와 로더의 수행과정]


4) 연결 편집의 기능

⸁ 연결 기능(Module linking)

· 모듈러 프로그래밍이 가능케 함

· 프로그래머에 의해 프로그램이 여러 개의 부 프로그램으로 분할되어 제어구간들에 분할되거나 서로 다른 언어로 작성될 수 있게 함

· 연결 과정중에 모듈간 기호 참조는 해결되며, 출력결과는 보조기억 장치에 저장

⸂ 편집기능

· 제어문장을 사용하여 어떤 구간을 대치, 삭제, 재배열하는 것

· 프로그램 수정은 편집기능으로 인해 상당히 쉬워지고, 효율적

· 주어진 제어문장의 내용에 따라 원시 프로그램의 전체가 아닌 수정된 구간만이 재번역 및 재연결 편집

⸃ 라이브러리 호출 기능(library call mechanism)

· 입출력 제어 루틴과 표준 함수의 처리는 주로 연결 편집기에 의해 이루어지며, 입출력 관련 문장과 표준 함수 등의 호출은 해당 서브 루틴으로 대치되어 로드 모듈에 포함

· 사용자 프로그램에 기술된 각종 입출력 명령을 마크로라 부르며 이들에 대응하는 라이브러리 함수가 로드 모듈에 추가

2 로더의 형태

로더는 목적 모듈을 받아 이 프로그램이 실행될 수 있도록 준비한 후 제어를 적재된 프로그램에 넘겨주어 그 프로그램이 실행되도록 역할을 수행

⸁ 연결(linking)

각 모듈 내의 코드나 자료에 대한 상징적 기호형태의 참조나 호출을 실제 번지로 변환 하여 연결, 결합하는 것

⸂ 할당(Allocation)

적재할 프로그램을 위해 기억 장소를 배정하는 것

⸃ 재배치(Relocation)

로드 모듈 내의 재비치 가능한 번지들을 할당된 기억 공간의 절대번지에 일치하도록 조정하는 것

⸄ 적재(loading)

실제로 재배치 완료된 로드 모듈과 자료를 주기억 장치에 저장

1) 로더 형태의 구분

⸁ 컴파일러에 의한 로더

⸂ 일반적 로더


p 50 그림 [컴파일러에 의한 로더와 일반적인 로더의 비교]

⸃ 절대 로더

· 가장 간단한 방식으로 기능은 단순히 언어변역기의 출력을 입력으로 받아 주기억 장치 의 지정된 장소에 적재하는 역할

· 절대 로더가 사용되는 경우, 로더의 기억 장소 할당기능과 모듈 연결기능은 프로그래머가 수행하고, 재배치 기능은 어셈블러가 하며, 기억 장소에 적재하는 일반 로더가 수행

⸄ 절대 로더의 단점

·전체 프로그램을 한꺼번에 번역해야 하고 하나의 서브 루틴이 변경되면 프로그램 전체를 다시 번역해야 함

·프로그래머가 각 프로그램이 시작될 번지를 어셈블러에게 알려 주어야 함.

·프로그래머는 서브 루틴 사용시 각 서브 루틴의 주기억 장치 내의 번지를 미리 알고 있어야 함

·절대번지 방식이므로 서브 루틴을 효율적으로 사용하기 어렵다.


p 51 [절대로더]


⸅ 재배치 로더

·절대 로더는 프로그램이 번역될 때 각 명령어의 절대번지가 결정된다는 단점을 가지고 있다.

·재배치 로더는 프로그램 번역시 절대번지를 지정하지 않고 번역된 프로그램을 실제 주기억 장치에 적재할 때 절대번지를 결정하므로 적재 시작 번지도 재배치 로더에 의해 지정

·여러 개의 프로시져 세그먼트, 하나의 자료 세그먼트를 공유

·각 세그먼트는 하나의 모듈로서 하나의 서브 루틴, 함수, 주 프로그램 또는 자료집합으로 구성된다.

·BSS로더는 고정길이의 직접 번지 명령어 형식을 가진 컴퓨터에서 사용

·BSS의 단점

* 전달 벡터에 의한 연결은, 제어 전달은 유용하지만, 다른 프로시져 세그먼트에 있는 자 료, 즉 외부자료의 적재와 저장에는 적합하지 않다.

* 전달 벡터는 목적 프로그램의 크기를 증가시킴

2) 세그먼트

연속적 단어 또는 바이트들의 정보집합으로 로더가 인식하는 프로시져나 자료의 최소단위

⸁ 세그먼트의 정보

·프로시져 내용물 및 세그먼트 상대 번지

·세그먼트의 전체 크기

·세그먼트 내에서 참조하는 외부기호와 위치

·세그먼트 내에서 정의된 모든 내부 기호들과 각각의 상대번지


 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼