본문 바로가기
Department/System software

시스템 소프트웨어 과제#6

by mean. 2020. 7. 14.
728x90
반응형

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), 외부 기억 장치로부터 주 기억 장치로 옮기기 위하여 메모리 할당 및 연결, 재배치, 적재를 담당하는 서비스 프로그램이다.(instructiondata를 특정 메모리에 재배치해줌.)

로더의 기능 및 순서

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한다.

LoaderHigh-level-language로 작성하였을 때에는 프로그래머나 프로그램 코드를 이해하는 입장에서는 Low-level-language로 작성된 프로그램 코드를 이해하거나 개발을 할 때 보다 용이하다는 이점이 있다.

하지만 High-level-language는 기계와 더 친근하다기보다 사람, 즉 프로그래머와 더 친숙하다고 비유할 수 있으며, 이로 인해 Loader를 작성하여 실행 시 프로그램 Access speed가 더 떨어질 수 있으며, High-level-language는 프로그램 실행 시에 목적주소나 기억장소할당을 일반적으로 따로 지정하지 않으므로 프로그램 재배치 문제가 발생할 수 있다.

또한 적재할 때에도 동일한 이유로 문제가 발생할 수 있다.

그리고 이러한 문제점들로 인하여 메모리를 비이상적으로 과다하게 사용할 경우 또한 생길 수 있다.

위의 문제를 해결하기 위해서는 High-level-language에서 프로그램 코드를 작성 시 명령어들에 정보를 직접 메모리 주소를 할당해주거나 재배치가 일어날 모든 경우를 프로그램 코드에 추가하면 해결된다. 하지만 이렇게 될 경우 프로그램의 복잡도가 커지고 이로 인해 실행속도에 많은 영향을 끼칠 수 있다.

 

 

728x90
반응형