추천, 2024

에디터의 선택

링커와 로더의 차이점

링커 및 로더는 프로그램 실행에 중요한 역할을하는 유틸리티 프로그램입니다. 프로그램의 소스 코드는 실행 전에 각 순서로 컴파일러, 어셈블러, 링커, 로더를 통과합니다. 한편으로, 링커 는 어셈블러에 의해 생성 된 객체 코드를 받아 들여 결합하여 실행 가능 모듈을 생성합니다. 반면에, 로더는 이 실행 가능 모듈을 메인 메모리에로드하여 실행합니다. 비교 차트를 사용하여 링커와 로더의 차이점을 설명합시다.

비교 차트

비교의 근거링커짐을 싣는 사람
기본소스 프로그램의 실행 가능 모듈을 생성합니다.실행 가능 모듈을 주 메모리에로드합니다.
입력어셈블러에 의해 생성 된 객체 코드를 입력으로 사용합니다.링커가 생성 한 실행 모듈을 사용합니다.
기능이 모듈은 소스 코드의 모든 객체 모듈을 결합하여 실행 모듈을 생성합니다.실행을 위해 주기억 장치의 실행 가능 모듈에 주소를 할당합니다.
유형 / 접근 방식링키지 에디터, 다이나믹 링커.절대로드, 변동 가능로드 및 동적 런타임로드.

링커 정의

어셈블러는 소스 프로그램의 개체 코드를 생성하고 링커로 넘깁니다. 링커는이 오브젝트 코드를 사용하여 프로그램의 실행 코드 를 생성하고이를 로더에 넘깁니다.

고급 언어, 프로그램에는 일부 내장 라이브러리헤더 파일이 있습니다 . 소스 프로그램은 정의가 내장 라이브러리에 저장된 일부 라이브러리 함수를 포함 할 수 있습니다. 링커는이 기능을 내장 라이브러리에 연결합니다. 내장 라이브러리가 발견되지 않으면 컴파일러에 알리고 컴파일러는 오류를 생성합니다.

때때로 큰 프로그램은 모듈 이라고하는 서브 프로그램으로 나뉩니다. 이제이 모듈들이 컴파일되고 어셈블 될 때 소스 프로그램의 객체 모듈이 생성됩니다. 링커는 모든 개체 모듈을 결합 / 연결하여 원본 프로그램의 단일 실행 파일을 생성해야합니다. 링커에는 두 가지 유형이 있습니다.

링키지 편집기 : 재배치 가능한 실행 가능 모듈을 생성하는 링커입니다.

Dynamic Linker :로드 모듈 / 실행 모듈이 생성 될 때까지 일부 외부 모듈의 연결을 연기하거나 연기합니다. 여기서 링크는로드 시간 또는 런타임 중에 수행됩니다.

로더의 정의

현재 실행해야하는 프로그램은 컴퓨터의 주 메모리에 있어야합니다. 링커에 의해 생성 된 프로그램의 실행 파일 / 모듈을 실행을 위해 주 메모리에로드하는 것은 운영 체제의 프로그램 인 로더 의 책임입니다. 메인 메모리의 실행 가능 모듈에 메모리 공간을 할당합니다.

로딩 접근 방식에는 세 가지가 있습니다.

  • 절대로드
  • 재배치 가능로드
  • 동적 런타임로드

절대로드 :이 방법은 매번 같은 주 메모리 위치에 프로그램의 실행 파일을로드합니다. 그러나 프로그래머가 모듈을 메인 메모리에로드하기위한 할당 전략을 알아야하는 것처럼 몇 가지 단점 이 있습니다. 프로그램에서 일부 삽입 및 삭제를 포함하여 프로그램을 수정해야하는 경우 프로그램의 모든 주소를 변경해야합니다.

재배치 가능 로딩 : 이 접근법에서 컴파일러 또는 어셈블러는 실제 주 메모리 주소를 생성 하지 않습니다 . 상대 주소를 생성합니다.

동적 런타임로드 :이 접근법에서는 프로그램의 절대 주소가 실행 모듈의 명령이 실제로 실행될 때 생성됩니다. 매우 유연하며로드 가능한 모듈 / 실행 가능 모듈 을 메인 메모리의 모든 영역에 로드 할 수 있습니다. 실행중인 프로그램은 중간에 중단 될 수 있으며 디스크로 스왑 아웃 될 수 있으며 이번에는 다른 주 메모리 주소로 메인 메모리로 돌아갈 수 있습니다.

링커와 로더의 주요 차이점

  1. 링커와 로더의 주요 차이점은 링커가 프로그램의 실행 파일을 생성하는 반면 로더는 링커에서 얻은 실행 파일을 메인 메모리에 로드하여 실행합니다.
  2. 링커는 어셈블러에서 생성 한 프로그램의 객체 모듈 을 받아들입니다. 그러나 로더는 링커에서 생성 한 실행 모듈을 받아들입니다.
  3. 링커는 프로그램의 모든 객체 모듈을 결합하여 실행 모듈 을 생성하며 객체 모듈의 라이브러리 함수 를 고급 프로그래밍 언어의 내장 라이브러리 에 연결합니다. 반면에 로더는 메인 메모리 의 실행 모듈에 공간을 할당합니다 .
  4. 링커는 링크 편집기동적 링커 로 분류 될 수 있지만 반면에 로더는 절대 로더, 재배치 가능 로더동적 런타임 로더 로 분류 될 수 있습니다.

결론:

링커는 어셈블러에서 프로그램의 개체 모듈을 가져 와서 함께 연결하여 프로그램의 실행 모듈을 생성합니다. 그런 다음 실행 모듈은 로더에 의해 실행을 위해 주 메모리로로드됩니다.

Top