Lazy Loading
Lazy Loading은 프로그램이 실제로 필요로 하는 데이터나 코드를 메모리에 로드하는 것을 필요한 순간까지 지연시키는 방식을 말한다. 시스템의 메모리 사용을 최적화하고, 전반적인 성능 향상을 가저온다.
특징
- 지연된 페이지 로딩: 프로그램이 시작할 때, 몯느 코드나 데이터를 메모리에 즉시 로드하지 않는다.
대신 해당 코드나 데이터에 접근하는 순간에만 해당 부분을 메모리에 로드한다.
- 효율적인 메모리 사용: 필요하지 않은 부분은 메모리에 로드되지 않으므로, 전체적인 메모리 사용량을 줄일 수 있다. 이는 특히 메모리가 제한적인 시스템에서 유용하다.
- 페이지 폴트를 통한 로딩: 프로그램이 아직 메모리에 로드되지 않은 주소를 참조하면 페이지 폴트가 발생하고, 이를 처리하는 과정에서 필요한 페이지가 메모리에 로드된다.
- 성능 최적화: 초기 로딩 시간이 단축되고, 사용되지 않는 코드나 데이터에 대한 메모리 낭비를 방지한다.
방식
- 프로그램 실행: 프로그램이 실행되면, 운영체제는 해당 프로그램의 실행 파일을 분석하고, 필요한 메모리 구조를 설정한다.
- 페이지 테이블 설정: 초기 페이지 테이블 설정 시, 실제 메모리에 존재하지 않는 페이지들은
Not Present상태로 표시.
- 메모리 접근 시도: 프로그램이 특정 메모리 주소에 접ㄱ느하려고 할 때, 해당 주소가 메모리에 존재하지 않으면 페이지 폴트가 발생한다.
- 페이지 폴트 처리: 운영체제는 페이지 폴트를 처리하기 위해 필요한 페이지를 디스크에서 찾아 메모리에 로드하고, 페이지 테이블을 업데이한다.
- 프로세스 재개: 페이지 로딩이 완료되면, 프로세스는 중단된 시점부터 실행을 재개한다.
장단점
장점
- 메모리 사용량 감소
- 초기 프로그램 로딩 시간 단축
- 전체 시스템 성능 향상
단점
- 페이지 폴트 처리로 인한 오버헤드 발생 가능성이 높아짐
- 프로그램 실행 중 메모리 로딩으로 인한 지연 발생 가능성이 높아짐