DLL (Dynamic Link Library)
동적 링크 라이브러리로, 라이브러리라는 말에서도 알 수 있듯이 비슷하고 반복되는 로직, 함수를 따로 파일로 떼어내어 간편하게 재활용 하는 것이다. 그 중에서 컴파일 시점에 main 코드와 결합되지 않고, 프로그램을 실행하면 dll 파일을 필요할 때 호출한다. 그렇기에 실행파일과 dll파일은 독집적으로 존재한다고 볼 수 있다.
DLL 활용 장점
• 더 적은 리소스 사용
여러 프로그램이 같은 함수 라이브러리를 사용하는 경우 dll을 사용하면 디스크와 실제 메모리에서 로드되는 중복 코드를 줄일 수 있다.
• 손쉬운 배포와 설치
DLL 내의 함수를 업데이트하거나 수정해야하는 경우 DLL을 배포하고 설치할 때 프로그램을 DLL과 다시 연결하지 않아도 된다. 여러 프로그램이 같은 DDL을 사용하는 경우에도 모든 프로그램에 업데이트나 수정 내용이 적용된다.
• 실행 파일 크기를 줄일 수 있다.
DLL은 컴파일 시점에서 main코드와 결합하지 않고 프로그램 실행시 필요할 때 호출되므로 실행파일 크기를 줄여 메모리 절약을 할 수 있다.
DLL 종속성
프로그램이나 DLL이 다른 DLL의 DLL 함수를 사용하는 경우 종속성이 작용된다. 이 경우 해당 프로그램은 더 이상 자체 포함 프로그램이 아니며, 종속성이 손상되면 프로그램에 문제가 발생할 수 있다. 종속성이 손상되어 프로그램이 실행되지 않을 작업들
• 종속 DLL을 새 버전으로 업그레이드 하는 경우
• 종속 DLL을 수정하는 경우
• 종속 DLL을 이전 버전으로 덮어쓰는 경우
• 종속 DLL을 컴퓨터에서 제거하는 경우
DLL 파일을 사용하는 상황과 활용
[상황]
- "A" 프로그램이 특정 DLL 파일 "B"가 필요하다.
- "B" 파일은 핵심 Logic으로 전체 프로그램 성능을 좌우한다.
- "A" 실행 프로그램은 변경점이 없으며, "B" 파일의 알고리즘에 따라 제품별 성능차이가 있다.
[활용]
→ 실행파일 "A"와 DLL 파일 "B"가 분리되어 있기에 디버깅이 용이하다.
→ 정적 라이브러리 파일이 아니기에 "A"는 컴파일할 필요가 없다.
→ DLL 파일만 변경해서 배포 및 성능 테스트를 할 수 있다.
→ 기존 DLL 파일 "B"에 새로운 DLL 파일 "C"를 만들어서 성능을 높일 수 있다.
→ 여러 언로 버전으로 구성된 아키텍처에서 활용할 수 있다.
-> 특정 프로그램이 모듈별 실행되는 경우라면 DLL 처리하면 좋다.
DLL 파일 유의 사항
파일 존재 여부와 위치에 유의해야한다.DLL 파일은 여러 언어와 버전으로 만들어질 수 있지만 실행 파일과 DLL 파일간 호환성은 유의해야한다.DDL 간 종속성(위 설명)을 유의해야한다.
'System & Reversing 필기' 카테고리의 다른 글
어셈블리어 명령어 정리 (0) | 2023.03.12 |
---|---|
gcc 컴파일러( + .so, .a, .o, .c) (0) | 2023.03.12 |
어셈블리 핸드레이, 함수 프롤로그와 에필로그 (0) | 2023.03.11 |
컴퓨터 메모리 구조 (0) | 2023.03.11 |
어셈블리어 (0) | 2023.03.11 |