지연 로딩
객체나 리소스를 실제로 필요할 때까지 로드하지 않는 방법
메모리 사용량을 최적화하고 시스템 성능을 향상시키는 강력한 기법
- 가상 메모리 주소를 할당 했지만, 물리 메모리 주소와 매핑되어 있지 않은 상태 (물리 메모리에 적재도 되어 있지 않음)
- 배틀그라운드에서 필요한 부분만 렌더링하고 필요하지 않은 부분은 렌더링하지 않는 것과 유사 (이는 지연 로딩은 아니지만 유사)
익명 페이지와 파일 기반 페이지
[익명 페이지]
익명 페이지의 경우 가상 메모리만 할당되어 지연 로딩을 수행한다.
해당 가상 메모리 주소로 최초 접근이 발생하면, 주 페이지 폴트가 발생하고
물리 메모리 할당 후 메모리 공간을 0으로 초기화한 뒤 (Demand Zero Memory)
가상 메모리 주소와 물리 메모리 주소 매핑한다.
[파일 기반 페이지]
파일 기반 페이지의 경우 가상 메모리를 할당하고 디스크(보조 기억 장치)의 파일과 매핑하여 지연 로딩을 수행한다. (물리 메모리에 적재되지 않음)
해당 가상 메모리 주소로 최조 접근이 발생하면, 주 페이지 폴트가 발생하고
매핑된 디스크에서 파일을 읽어와 물리 메모리에 적재한 후 가상 메모리 주소와 물리 메모리 주소를 매핑한다.
Demand Zero Memory
새로운 페이지가 처음 요청될 때, 메모리에 할당하고, 해당 페이지를 0으로 초기화하는 기법
보안 및 일관성을 위해 0으로 초기화
- 사용 이유 -
모든 메모리를 바로 할당하지 않고, 필요할 때 할당하므로 [효율적인 메모리 사용]
초기화 되지 않은 메모리를 바로 접근할 경우, 이전 사용자가 남긴 민감한 데이터가 노출될 위험이 있다.[보안]
Copy on Write
페이지가 복사되기 전까지는 실제로 복사되지 않도록 하는 기법
주로 프로세스 간에 메모리를 공유할 때 사용된다.
Ex)
프로세스가 fork() 시스템콜 호출을 통해 자식을 생성할 때, 부모와 자식은 동일한 메모리 페이지를 공유하지만
한 쪽이 페이지를 변경하려고 할 때 실제 복사가 일어난다.
Memory Copy
메모리 블록을 다른 위치로 복사하는 과정
데이터를 안전하게 옮기거나 백업하는데 사용된다.
하지만 메모리 복사 시간이 많이 걸리므로, 시스템 성능에 영향을 줄 수 있다.