페이지 폴트, 지연 로딩, 페이지 교체 정책

jhj603·2025년 9월 25일
0

페이지 폴트

페이지 폴트 : 프로세스가 어떤 가상 주소에 접근하려 했을 때, CPU의 MMU가 페이지 테이블을 확인해보니 해당 페이지가 물리 메모리에 존재하지 않을 때(유효한 프레임에 매핑되어 있지 않을 때) 발생하는 하드웨어 인터럽트(예외)

역할 : 페이지 폴트가 발생하면 CPU가 제어권을 운영체제에게 넘김. 운영체제의 페이지 폴트 핸들러가 호출되어 필요한 페이지를 디스크나 다른 곳에서 가져와 물리 메모리에 적재하는 작업 수행


지연 로딩(Lazy Loading)

지연 로딩(Lazy Loading) : 프로그램이 시작될 때 모든 데이터를 메모리에 올리지 않고, 실제로 데이터가 필요한 순간이 되어서야 비로소 메모리에 올리는 전략

개념 : 당장 사용하지 않는 데이터는 디스크에 그냥 두고, 페이지 폴트가 발생했을 때 해당 페이지만 RAM으로 가져옴.

장점
1. 빠른 프로그램 시작 : 처음부터 모든 걸 로딩하지 않으므로 프로그램 시작 속도가 매우 빨라짐
2. 메모리 절약 : 실제로 사용되는 페이지만 메모리를 차지하므로, 메모리를 훨씬 효율적으로 사용할 수 있음.


페이지 교체 정책(Page Replacement Policy)

페이지 교체 정책(Page Replacement Policy) : RAM이 꽉 찼을 때, 새로운 페이지를 위한 공간을 만들기 위해 어떤 기존 페이지를 디스크로 쫓아낼지 결정하는 규칙

개념 : 빈 프레임이 없을 때 페이지 폴트가 발생하면, 운영체제는 이 정책에 따라 희생양 페이지를 고름.

목표 : 앞으로 사용될 가능성이 가장 작은 페이지를 쫓아내, 페이지 폴트 발생 횟수를 최소화하는 것.

종류
1. FIFO(First-In, First-Out) : 가장 먼저 들어온 페이지를 가장 먼저 내보내는 가장 간단한 방식
2. LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 페이지를 내보내는 방식(가장 널리 쓰이고 효율적)
3. LFU(Least Frequently Used) : 참조 횟수가 가장 적은 페이지를 내보내는 방식


이 세 가지 개념은 하나의 시나리오로 연결됨

  1. 지연 로딩(Lazy Loading) 전략 채택 : 운영체제는 프로그램이 시작될 때 실행에 필요한 최소한의 코드만 RAM에 올림. 대부분의 데이터 페이지는 디스크에 남아있음.
  2. 페이지 폴트(Page Fault) 발생 : 프로그램이 실행되다가 RAM에 없는 (즉, 아직 로딩되지 않은)PAGE_A에 접근을 시도. 이때 페이지 폴트가 발생되어 운영체제에 전달됨.
  3. 운영체제의 대응 :
    • Case 1 : RAM에 빈 공간이 있을 때
      운영체제는 디스크에서 PAGE_A를 찾아 비어있는 프레임에 로드
      페이지 테이블을 업데이트하고, 중단됐던 프로그램을 다시 실행(Lazy Loading 성공)
    • Case 2 : RAM이 꽉 차 있을 때
      빈 프레임이 없다는 것을 확인
      이때 페이지 교체 정책(예 : LRU)을 가동해 희생양 페이지 PAGE_B를 선택
      PAGE_B의 내용이 디스크에 저장된 후 변경됐다면(dirty), 변경 내용을 디스크(스왑 공간)에 기록
      PAGE_B가 있던 자리에 디스크로부터 가져온 PAGE_A를 로드
      페이지 테이블을 업데이트하고, 중단됐던 프로그램을 다시 실행시킴.

지연 로딩이라는 효율적인 메모리 관리 전략 때문에 페이지 폴트가 필연적으로 발생하고, 이 페이지 폴트를 처리하는 과정에서 메모리가 부족하면 페이지 교체 정책을 통해 공간을 확보하는 흐름

profile
자라나라 실력 실력

0개의 댓글