본문 바로가기
컴퓨터공학기초 개념/운영체제

33. 가상메모리 - 페이지 폴트

by devraphy 2021. 7. 8.

- 이번 포스팅은 페이징 시스템에 대한 더 깊은 이해를 다룰 예정이다. 

 

1. 다양한 페이징 기법

- 페이징 시스템에서 가장 중요한 것은 프로세스의 데이터를 어느 시점에 어떤 데이터를 물리 메모리에 올리느냐는 것이다.

- 여기에서 두가지 페이징 기법이 등장한다. 

 

a) 선행 페이징(Anticipatory Paging, Pre-paging)

- 선행 페이징 기법은 프로세스의 모든 데이터를 미리 물리 메모리에 올려놓고 처리하는 것을 의미한다. 

- 사실상, 이 기법은 현실성이 많이 떨어지는 페이지 처리 방법이다. 

 

b) 요구 페이징(Demand Paging, Demanded Paging)

- 요구 페이징 기법은 프로세스의 모든 데이터를 물리 메모리에 적재하지 않고, 필요한 시점에만 메모리에 적재한다.

- 필요하지 않은 페이지 프레임은 다시 저장매체에 저장한다(물리 메모리에서 내린다). 

 


2. 페이지 폴트(Page Fault)

- 페이지 폴트는 인터럽트의 한 종류이다. 

- 어떤 페이지가 물리 메모리에 없을 때 발생하는 인터럽트로,

- 페이지 폴트가 발생하면 운영체제에서 해당 페이지를 물리 메모리에 올린다. 

 

a) 페이지 폴트와 인터럽트의 작동방식

 - 동작 순서는 다음과 같다. 

 

    1. CPU에서 특정 데이터에 대한 가상 주소를 요청한다.

    2. MMU에서 해당 가상주소를 기반으로 TLB를 조회한다.

        ▶ 조회 결과, 데이터가 있다면 바로 해당 데이터를 반환한다.

    3. 조회 결과, 데이터가 없다면 메인 메모리의 page table 접근하여 해당 가상 주소의 물리주소를 검색한다.

    4. 해당 물리주소가 메모리에 적재되어 있는지 없는지 확인한다. 

        ▶ 적재 되어 있다면 해당 물리주소의 데이터를 CPU에게 반환한다.

    5. 해당 물리주소가 메모리에 적재되어 있지 않은 경우, page fault 인터럽트가 발생하여 운영체제에게 전달된다. 

    6. 운영체제는 page fault를 전달 받고 해당 페이지를 갖고 있는 프로세스에 접근하여 해당 페이지를 물리 메모리에 적재한다. 

    7.  적재된 페이지에 대한 정보를 page table에 업데이트 한다. 

    8. 이 후 CPU에게 해당 가상주소에 대한 데이터 검색을 다시 진행할 것을 요청한다.

    9. CPU는 다시 한번 해당 가상주소에 대한 데이터를 요청한다.

    10. MMU는 해당 가상주소를 page table에서 검색하여 물리 주소를 찾아 데이터를 CPU에게 반환한다. 

 

- 문득 이런 생각이 들 수 있다. "너무 과정이 복잡하고 비효율 적인것 아닌가?"

 

b) 생각해보자

- 페이지 폴트가 자주 일어난다면 어떻게 될까? 

  ▶ 처리 시간이 오래 걸린다. 

 

- 페이지 폴트를 방지하려면 어떻게 해야할까?

  ▶ 앞으로 실행될 코드나 요청될 데이터를 포함한 페이지를 미리미리 메모리에 올린다.

  ▶ 완벽한 미래예측 = 신의 영역 

 

- 이러한 문제를 해결하기 위해서 다양한 페이지 교체 알고리즘이 있다. 

- 다음 포스팅에서는 이에 관한 내용에 대해서 알아보자. 

댓글