동적 적재 (Dynamic Loading)

이찬영·2021년 9월 1일
0

OS

목록 보기
27/35

동적 적재

프로세스가 실행되기 위해선 프로세스가 전체 미리 메모리에 올라와야하며 이 크기는 메모리의 크기를 초과해서는 안된다. 이러한 문제를 해결하기 위해 동적 적재를 해야 한다.

동적 적재란 각 루틴이 실제 호출 되기 전까지는 메모리에 올라오지 않고 재배치 가능한 상태로 디스크에 대기하고 있는다. 이때 해당 루틴이 호출 되면 메모리에 해당 루틴이 적재 돼있는지 확인 후 적재 되지 않았다면 요구된 루틴을 메모리로 가져온다. 이러한 동작은 재배치 연결 적재기(Relocatable linking loader)가 하게 되며 변경 사항들을 테이블에 기록한다.

  1. CPU가 해당 루틴 수행 요청
  2. 메모리에 해당 루틴 적재 됐는지 확인
  3. 적재 되지 않았다면 재배치 연결 적재기를 호출하여 필요한 루틴 적재
  4. 다시 CPU는 요청한 루틴을 수행

이러한 동적 적재는 필요할때만 적재되므로 아주 간혹 실행되지만 실행할 코드가 많은 경우 유리하다. 동적 적재는 프로그래머가 책임져야하며 운영체제가 책임지지 않는다. 운영체제는 그저 동적 적재를 구현하는 라이브러리만 제공한다.

0개의 댓글