728x90

정적 라이브러리와 동적 라이브러리

- 라이브러리 파일을 정적으로 사용한다는 의미는 각 실행파일에 라이브러리를 별도로 저장해야 하지만 동적으로 사용하면 각 실행 파일이 라이브러리 파일을 공유하게 됨

- 동적 라이브러리 방식으로 사용하기 위해서는 프로그램이 실행될 때 링크를 걸어야 함

- DLL은 수정하고자 하는 일부만 바꿀 수 있다는 장점이 있음

- 정적 라이브러리는 프로그램에 미리 매핑되어 가상 메모리에 올라가 있고 프로그램의 실행될 때 가상 메모리의 일부를 메인 메모리에 올림

- 동적 라이브러리는 프로그램에 매핑은 되지만 별도의 DLL 파일로 존재해서 필요할 때 할당을 해줌

- 다른 두 프로그램이 정적 라이브러리 형태로 동일한 라이브러리 파일을 사용하는데 정적 라이브러리 영역이 메인 메모리에 올라가 있을 때 컨텍스트 스위칭이 일어나면 동일한 영역을 사용할 지라도 반환 후 새롭게 로딩하여 사용

- 동적 라이브러리 형태로 사용한다면 별도에 DLL 파일을 사용하기 때문에 메인 메모리에 있는 영역을 따로 반환하지 않고 사용

- 물리 메모리(HDD+RAM)에 DLL이 한 번 로드하면 계속 남아있지만 RAM에 계속 남아 있는 것이 아니고 사용하지 않을 때는 HDD에 스왑파일로 저장될 수 있음

- DLL을 사용하는 프로세스에서 DLL의 가상 메모리 주소는 같게 할당이 됨

728x90

+ Recent posts