[ STUDY ]/CS

[ 운영체제 ] 가상 메모리 - 요구 페이징, 스레싱

김강니 2024. 11. 11. 21:20

1.5 가상 메모리

사용자가 프로그램을 실행하면 OS는 디스크에 저장된 데이터를 메모리로 로드한다.
하지만 메모리 공간은 한정되어 있고, 사용자는 동시에 여러 프로그램을 실행하고 싶어한다.
가상메모리는 이런 메모리 한계를 극복하는 방법이다.

 

 

1.5.1 가상 메모리란 ⭐️⭐️⭐️

가상 메모리란 프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 둔 상태로 프로세스를 실행하는 방식이다.

-> 프로세스 전체가 메모리에 올라오지 않아도 프로세스를 실행하는 데 문제가 없다는 점에서 착안됐다.

 

💡 가상 메모리의 장점

  1. 프로그램이 메모리 크기에 대한 제약을 덜 받는다
    프로그램 크기가 실제 RAM보다 커도 실행이 가능하다
  2. CPU이용률과 처리율을 높인다.(동시에 많은 프로그램을 실행하므로)
  3. 필요한 영역만 메모리에 로드해 스와핑 횟수를 줄인다.(프로그램 실행 속도를 높임)

 

1.5.2 요구 페이징

요구 페이징프로세스에서 필요한 페이지만 메모리에 로드하는 방식

 

 

💡 요구페이징 예

  • 논리 메모리
    프로세스는 논리 메모리에서 페이지 단위로 나누어 관리된다.

  • 물리 메모리
    실제 메모리에는 필요한 페이지만 프레임에 로드된다.

  • 디스크
    페이지가 RAM에서 필요없어지면 디스크로 스왑아웃한다.
    다시 필요해지면 페이지 폴트가 발생하고 디스크로부터 스왑인한다.

 

 

💡 페이지 테이블

페이지 테이블은 페이지에 해당하는 프레임이 존재하면 v(valid)값을, 존재하지 않거나 유효하지 않은 주소 값에는 i(invalid)값을 반환한다. 이 정보로 지금 물리 메모리에 필요한 페이지가 있는지 여부를 파악할 수 있다.

 

페이지 폴트

논리 메모리에서 요청한 페이지가 물리 메모리에 없을 때 페이지 폴트가 일어난다.

 

💡 페이지 폴트 발생 시 처리 과정

  1. 필요한 페이지가 물리 메모리에 있는지 없는지 페이지 테이블을 통해 확인
    i -> 페이지 폴트
    v -> 물리 메모리에 있음

  2. 페이지 폴트가 일어난 경우 참조하려는 페이지의 주소값이 유효하지 않은지 아니면 메모리에 로드되지 않은 영역인지 확인

  3. 로드되지 않은 영역이면 디스크에서 해당 영역을 찾아서 스왑인
    비어있는 프레임이 있으면 그냥 스왑인
    비어있는 프레임이 없으면 페이지 교체 알고리즘 사용

  4. 페이지 테이블에 새로 로드한 페이지 값을 v로 변경

  5. 프로세스 실행

 

1.5.3 스레싱

동시에 일정 수 이상의 프로그램을 실행했을 때 오히려 CPU 이용률이 떨어지는 상황

 

일정 수 이상으로 다중 프로그래밍을 하면 페이지 폴트가 자주 일어난다.
이럴 때 스왑 인, 스왑 아웃하는 작업이 빈번하게 일어나고 실질적으로 CPU이용률이 떨어지는 스레싱이 발생한다.

 

워킹 세트

지역성을 기반으로 자주 사용하는 페이지를 저장해 두는 것.

자주 사용하는 페이지를 물리 메모리의 프레임에 고정해 페이지 폴트가 빈번하게 발생하는 것을 방지