정의
DDL(Dynamic Link Library)를 이해하기 위해서는, Library의 의미와 Static Link, Dynamic Link의 차이를 이해해야 한다.
 
Library란?
간단한 코드(함수, 데이터 타입)를 재사용 가능하도록 모듈화한 것이다.
 
Static Link와 Dynamic Link의 차이점
라이브러리를 언제 메인 프로그램에 연결하느냐에 따라 구분된다.
  • 정적 링크(Static Link)
    • 컴파일 시점에 라이브러리가 링크에 의해 연결되어 실행 파일의 일부분이 된다.

  • 동적 링크(Dynamic Link)
    • 실행 파일에서 해당 라이브러리의 기능을 사용 시에만 라이브러리를 참조(혹 다운로드)하여 기능을 호출한다.
    • 프로그램 실행 시 DLL도 함께 메모리 공간으로 읽어와 내부 함수처럼 호출한다.
    • 필요한 시점에 메모리로 읽어오고 불필요하면 메모리에서 내릴 수 있다.

 
DLL의 이점
  • 적은 리소스
    • 한 코드를 여러 프로그램에서 사용하기 때문에 메모리가 절약된다.
    • 사용되는 디스크 공간을 줄일 수 있다.(정적 링크는 실행 파일에 라이브러리의 함수가 모두 포함되어 실행 파일 크기가 커진다.)
    • 운영체제와 프로그램이 더 빠르게 로드 및 실행된다.
  • 모듈식 아키텍쳐
    • 실행 파일은 DLL에 있는 함수를 Import, DLL은 실행파일에게 함수를 Export하는 것과 다름 없다.
    • Export할 함수에 대한 정보가 DLL에 기록되어 있어야 한다.
  • 손쉬운 배포 및 설치
    • DLL 하나만 업데이트해도 모든 프로그램에 그 내용이 적용된다.
  • 프로그래머의 분업이 용이하고 뛰어난 재사용성을 보유
    • 코드의 양이 적어지므로 디버깅이 용이하다.
 
DLL 사용상의 유의점
  • 프로그램이 DLL을 사용할 때 종속성*이라는 문제로 프로그램이 실행되지 않을 수 있다.
  • DLL은 해로운 파일일 수도 있기 때문에 신뢰할 수 있는지 확인해야 한다.
  • DLL 파일을 함부로 이동시키면 프로그램이 정상적으로 작동하지 않을 수 있다.
 
* DLL 종속성이란?
프로그램 혹은 DLL이 다른 DLL의 함수를 사용하는 경우 종속성이 작성된다.
이런 경우 해당 프로그램은 더 이상 자체 포함 프로그램이 아니며, 종속성이 손상되면 프로그램에 문제가 발생할 수 있다.
아래 예의 경우를 DLL 충돌이라 하며, 호환성이 적용되지 않으면 프로그램이 정상적으로 실행되지 않을 수 있다.
ex1) 종속 DLL을 새 버전으로 업그레이드하는 경우
ex2) 종속 DLL을 수정하는 경우
ex3) 종속 DLL을 이전 버전으로 덮어쓰는 경우
ex4) 종속 DLL을 제거하는 경우
 
출처 :
반응형

'■ 프로그래밍 언어 > C#' 카테고리의 다른 글

WPF  (0) 2021.03.17
pdb 파일  (0) 2021.03.15
LINQ  (0) 2021.02.14
비동기처리1 - Thread, Task  (0) 2021.01.07

+ Recent posts