728x90
정적 라이브러리와 동적 라이브러리
- 라이브러리 파일을 정적으로 사용한다는 의미는 각 실행파일에 라이브러리를 별도로 저장해야 하지만 동적으로 사용하면 각 실행 파일이 라이브러리 파일을 공유하게 됨
- 동적 라이브러리 방식으로 사용하기 위해서는 프로그램이 실행될 때 링크를 걸어야 함
- DLL은 수정하고자 하는 일부만 바꿀 수 있다는 장점이 있음
- 정적 라이브러리는 프로그램에 미리 매핑되어 가상 메모리에 올라가 있고 프로그램의 실행될 때 가상 메모리의 일부를 메인 메모리에 올림
- 동적 라이브러리는 프로그램에 매핑은 되지만 별도의 DLL 파일로 존재해서 필요할 때 할당을 해줌
- 다른 두 프로그램이 정적 라이브러리 형태로 동일한 라이브러리 파일을 사용하는데 정적 라이브러리 영역이 메인 메모리에 올라가 있을 때 컨텍스트 스위칭이 일어나면 동일한 영역을 사용할 지라도 반환 후 새롭게 로딩하여 사용
- 동적 라이브러리 형태로 사용한다면 별도에 DLL 파일을 사용하기 때문에 메인 메모리에 있는 영역을 따로 반환하지 않고 사용
- 물리 메모리(HDD+RAM)에 DLL이 한 번 로드하면 계속 남아있지만 RAM에 계속 남아 있는 것이 아니고 사용하지 않을 때는 HDD에 스왑파일로 저장될 수 있음
- DLL을 사용하는 프로세스에서 DLL의 가상 메모리 주소는 같게 할당이 됨
728x90
'Programming > System Programming' 카테고리의 다른 글
윈도우즈 시스템 프로그래밍 정리(完) (0) | 2020.08.23 |
---|---|
윈도우즈 시스템 프로그래밍 - 20. 메모리 관리(3) (0) | 2020.08.23 |
윈도우즈 시스템 프로그래밍 - 20. 메모리 관리(2) (0) | 2020.08.23 |
윈도우즈 시스템 프로그래밍 - 20. 메모리 관리(1) (0) | 2020.08.23 |
윈도우즈 시스템 프로그래밍 - 19. 비동기 I/O와 APC(4) (0) | 2020.08.22 |