728x90
반응형
링커와 로더의 역할
링킹
- 모듈들을 연결
주기억 장치 할당
- 적재될 기억공간의 확보
재배치
- 기호들을 재배치
적재
- 재배치가 완료된 모듈을 적재
부 프로그램의 호출
링커가 해야할일
- 호출된 모듈의 주소를 알 수 있도록 하는 일
외부 기호의 참조
각 모듈들이 컴파일 되어도 외부 기호들은 확정된 상대주소를 가질 수 없고 링커에 의해 연결되어야만 상대 주소값을 가진다.
주기억 장치의 할당
- 로더의 요구에 의해 요구가 수행
- 운영체제 안에는 기억장치 관리 모듈 존재
- 부분 할당과 전체 할당으로 구분
재배치 및 적재
- 번역 후, 재배치 가능 코드가 생성됨
- 프로그램의 시작위치가 기준점
- 재배치 작업은 각 명령어의 주소부분에 행해짐
- 컴파일러가 재배치 정보 생성
- 재배치 비트(주소가 바뀌어야 할 것인지를 나타내는)를 이용하는 방법
- 기호표에 재배치 하여야 할 기호들을 표시하는 방법
로더의 종류와 형태
- 컴파일 즉시로더
- 절대 로더
- 재배치로더
- 링킹 로더
- 동적 로더
컴파일 즉시 로더의 개념
- 가장 간단한 방법
- 로더의 기능은 거의 어셈블러가 수행
- 로더의 기능은 단순히 실행을 제어
- 어셈블러가 적재 -> 기억장소낭비
- 목적모듈이 보조기억장치에 저장 안됨 어셈블러의 재번역이 요구됨
- 서로 다른 언어로 작성된 모듈들끼리 연결불가
- 모든 모듈이 한꺼번에 번역 -> 모듈화가 어려움
절대 로더의 개념
- 출력결과는 보조기억장치에 저장
- 로더는 번역시 정해진 위치에 적재만 수행
- 프로그래머가 어셈블러에게 적재주소 지정
- 각 모듈의 적재주소 지정
로더의 4가지 역할을 수행하는 주체
링크
- 프로그래머
기억장소 할당(번지 지정)
- 프로그래머
재배치
- 어셈블러
적재
- 절대 로더
재배치 로더의 개념
- 적재 모듈을 주기억장치에 적재
- 상대주소를 절대주소로 변환
- 외부기호의 참조
- 모듈의 이름 기호 참조
- 외부 모듈에서 정의된 기호 참조
링킹 로더의 개념
- 재배치링크 및 적재를 한꺼번에 수행
- 두 단계의 패스로 구성 (패스1과 패스2로 구성)
패스1 기능
- 모듈에 기억장소 할당
- 외부기호들의 주소 확정
- 외부기호표 작성
패스2 기능
- 모든 상대주소를 절대 주소로 변환
- 외부기호표 참조 후 적재
링킹 로더의 수행 과정
링킹 로더의 4가지 역할을 수행하는 주체
- 링크 ---- 링킹 로더
- 기억장소 할당 ---- 운영체제
- 재배치 ---- 링킹 로더
- 적재 ---- 링킹 로더
링커
- 목적 모듈로부터 재배치 정보를 만들어 로더에게 제공
링킹 로더
- 목적모듈로부터 코드를 만들어 기억 장치에 적재(링커 + 로더)
동적 로더의 개념
- 재배치로더와 링킹로더의 단점 보완
- 기억장소의 효율적 활용
- 서브루틴들의 상호 호출관계 파악
- 오버레이 구조를 활용
동적 적재시 서브루틴의 호출관계
동적 적재시 기억 장소의 변화
728x90
반응형
최근댓글