EXERCISES Section 3.1
Problem 3: What would be the advantages and disadvantages of writing a loader using a high-level programming language? What problems might you encounter and how might these be solved?
(문제점 3 : 고급 프로그래밍 언어를 사용하여 로더를 작성할 때의 장단점은 무엇입니까? 어떤 문제가 발생할 수 있으며 어떻게 해결할 수 있습니까?)
먼저 로더(Loader)란, 외부 기억 장치로부터 주 기억 장치로 옮기기 위하여 메모리 할당 및 연결, 재배치, 적재를 담당하는 서비스 프로그램이다.(instruction과 data를 특정 메모리에 재배치해줌.)
로더의 기능 및 순서
1. 주 기억 장치 할당(allocation) : 목적 프로그램이 적재될 주 기억 장소 내의 공간을 확보한다.
2. 연결(Linking) : 필요할 경우 여러 목적 프로그램 또는 라이브러리 루틴과 링크작업, 외부기호를 참조할 때, 이 주소 값 들을 연결한다.
3. 재배치(relocation) : 목적 프로그램을 실제 주 기억 장소에 맞추어 재배치. 상대주소를 절대주소로 변경한다.
4. 적재(loading) : 실제 프로그램과 데이터를 주 기억 장소에 적재한다. 적재할 모듈을 주 기억 장치로 읽어 들인다.
절대로더(Absolute Loading)
- 프로그래머가 지정한 주소로 주 기억 장치에 적재하는 기능을 가지는 간단한 로더이다.
- 프로그래머나 컴파일러가 명시한 주소에 배치
• 특징
1. 재배치(Relocation)라든지 링크(Linking) 기능이 없다.
2. 프로그래머가 절대 주소를 기억해야한다.
3. 다중 프로그래밍 방식에서는 사용할 수 없다.
• 작업분담
1. 링크 - 프로그래머
2. 기억장소할당 - 프로그래머
3. 재배치 - 어셈블러
4. 적재 - 로더
재배치 로더(Relocation loader)
- 주 기억 장치의 상태에 따라 목적 프로그램을 주 기억 장치의 임의 공간에 적재할 수 있도록 하는 로더.
- 실제 메모리 주소를 변환해야 하는 상대 주소를 포함할 때 수행한다.
• 작업분담
1. 링크 - 링커
2. 기억장소 할당 - 운영체제
3. 재배치 - 로더
4. 적재 - 로더
동적 적재(Dynamic Loading)
- 모든 세그먼트를 주 기억장치에 적재하지 않고 항상 필요한 부분만 주 기억장치에 적재하고 나머지는 보조기억 장치에 저장해두는 기법이다.
- 프로그램의 모듈을 처음 사용하는 시점에 Loading한다.
Loader를 High-level-language로 작성하였을 때에는 프로그래머나 프로그램 코드를 이해하는 입장에서는 Low-level-language로 작성된 프로그램 코드를 이해하거나 개발을 할 때 보다 용이하다는 이점이 있다.
하지만 High-level-language는 기계와 더 친근하다기보다 사람, 즉 프로그래머와 더 친숙하다고 비유할 수 있으며, 이로 인해 Loader를 작성하여 실행 시 프로그램 Access speed가 더 떨어질 수 있으며, High-level-language는 프로그램 실행 시에 목적주소나 기억장소할당을 일반적으로 따로 지정하지 않으므로 프로그램 재배치 문제가 발생할 수 있다.
또한 적재할 때에도 동일한 이유로 문제가 발생할 수 있다.
그리고 이러한 문제점들로 인하여 메모리를 비이상적으로 과다하게 사용할 경우 또한 생길 수 있다.
위의 문제를 해결하기 위해서는 High-level-language에서 프로그램 코드를 작성 시 명령어들에 정보를 직접 메모리 주소를 할당해주거나 재배치가 일어날 모든 경우를 프로그램 코드에 추가하면 해결된다. 하지만 이렇게 될 경우 프로그램의 복잡도가 커지고 이로 인해 실행속도에 많은 영향을 끼칠 수 있다.
'Department > System software' 카테고리의 다른 글
시스템 소프트웨어 과제#8 (0) | 2020.07.14 |
---|---|
시스템 소프트웨어 과제#7 (0) | 2020.07.14 |
시스템 소프트웨어 과제#5 (0) | 2020.07.14 |
시스템 소프트웨어 과제#4 (0) | 2020.07.14 |
시스템 소프트웨어 과제#3 (0) | 2020.07.14 |