[CS] Lazy Loading

wrld_worthy·2023년 12월 15일

CS

목록 보기
11/12

Lazy Loading

Lazy Loading은 프로그램이 실제로 필요로 하는 데이터나 코드를 메모리에 로드하는 것을 필요한 순간까지 지연시키는 방식을 말한다. 시스템의 메모리 사용을 최적화하고, 전반적인 성능 향상을 가저온다.

특징

  1. 지연된 페이지 로딩: 프로그램이 시작할 때, 몯느 코드나 데이터를 메모리에 즉시 로드하지 않는다.
    대신 해당 코드나 데이터에 접근하는 순간에만 해당 부분을 메모리에 로드한다.

  2. 효율적인 메모리 사용: 필요하지 않은 부분은 메모리에 로드되지 않으므로, 전체적인 메모리 사용량을 줄일 수 있다. 이는 특히 메모리가 제한적인 시스템에서 유용하다.

  3. 페이지 폴트를 통한 로딩: 프로그램이 아직 메모리에 로드되지 않은 주소를 참조하면 페이지 폴트가 발생하고, 이를 처리하는 과정에서 필요한 페이지가 메모리에 로드된다.

  4. 성능 최적화: 초기 로딩 시간이 단축되고, 사용되지 않는 코드나 데이터에 대한 메모리 낭비를 방지한다.

방식

  1. 프로그램 실행: 프로그램이 실행되면, 운영체제는 해당 프로그램의 실행 파일을 분석하고, 필요한 메모리 구조를 설정한다.

  2. 페이지 테이블 설정: 초기 페이지 테이블 설정 시, 실제 메모리에 존재하지 않는 페이지들은 Not Present상태로 표시.

  3. 메모리 접근 시도: 프로그램이 특정 메모리 주소에 접ㄱ느하려고 할 때, 해당 주소가 메모리에 존재하지 않으면 페이지 폴트가 발생한다.

  4. 페이지 폴트 처리: 운영체제는 페이지 폴트를 처리하기 위해 필요한 페이지를 디스크에서 찾아 메모리에 로드하고, 페이지 테이블을 업데이한다.

  5. 프로세스 재개: 페이지 로딩이 완료되면, 프로세스는 중단된 시점부터 실행을 재개한다.

장단점

장점

  • 메모리 사용량 감소
  • 초기 프로그램 로딩 시간 단축
  • 전체 시스템 성능 향상

단점

  • 페이지 폴트 처리로 인한 오버헤드 발생 가능성이 높아짐
  • 프로그램 실행 중 메모리 로딩으로 인한 지연 발생 가능성이 높아짐

0개의 댓글