[CS] 페이지 교체와 프레임 할당

정은아·2024년 2월 11일
post-thumbnail

운영체제가 수많은 페이지를 어떻게 관리하는 지 알아보자

요구 페이징

  • 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고, 필요한 페이지만을 메모리에 적재하는 기법이다
  • 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행하는 기법은 순수 요구 페이징이라고 한다.
  • 요구 페이징 시스템이 안정적으로 작동하려면 페이지 교체프레임 할당을 해결해야 한다.
  • 또한, 요구 페이징 기법을 페이지들을 적재하다 보면 언젠가 메모리가 가득찬다. 이때는 페이지 교체 알고리즘을 통해 쫓아낼 페이지를 결정한다.

요구 페이징 기본적인 양상
1. CPU가 특정 페이지에 접근하는 명령어 실행
2. 페이지가 메모리에 있으면, 프레임에 접근
3. 페이지가 메모리에 없으면, 페이지 폴트 발생
4. 페이지 폴트 발생 시, 해당 페이지를 메모리에 적재하고 다시 1번 수행

페이지 교체 알고리즘

  • 페이지 폴트를 가장 적게 일으키는 알고리즘을 좋은 페이지 교체 알고리즘이라고 한다.
  • 좋은 페이지 교체 알고리즘은 페이지 폴트 횟수를 통해 결정 된다. 그러한 페이지 폴트 횟수는 페이지 참조열을 통해 알 수 있다.
  • 즉, 연속된 페이지를 생략한 페이지 열이 페이지 참조열이다.

FIFO 페이지 교체 알고리즘

  • 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식이다.
  • 프로그램 실행 초기에 잠깐 실행되다가 이후에 사용되지 않을 경우에는 좋다.
  • 반면에, 프로그램 실행 내내 사용될 경우에는 좋지 않다.

최적 페이지 교체 알고리즘

  • CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘이다.
  • 즉, 사용빈도가 낮은 페이지를 교체하는 알고리즘이라고 할 수 있다.
  • 타 페이지 교체 알고리즘에 비해 페이지 폴트 발생 빈도가 가장 낮다.
  • 그러나 실제 구현이 어렵다.
  • 앞으로 오랫동안 사용되지 않을 페이지를 예측하기란 불가능에 가깝기 때문이다. 그래서 성능을 평하기 위한 목적을 사용된다.

LRU 페이지 교체 알고리즘

  • 최적 페이지 교체 알고리즘(오랫동안 사용되지 않을 페이지를 교체)을 따라하기 위해 만든 알고리즘이다.
  • 오랫동안 사용되지 않는 페이지를 교체하는 알고리즘이다.
  • 즉, 최근 사용 빈도가 적은 페이지는 앞으로도 사용되지 않을 것이라는 아이디어로 만들어진 알고리즘이다.
  • 이외에도 페이지 교체 알고리즘의 종류는 다양하다.

스래싱과 프레임 할당

  • 페이지 폴트는 프레임의 수와도 연관이 깊다.
  • 프레임이 적을 수록, 페이지 폴트가 많이 발생한다.
  • 이 처럼 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소용하여 성능이 저해되는 문제가 발생한다. 이를 스래싱이라고 한다.
  • 스래싱이 발생하는 근본적인 원인은 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문이다.
  • 그러기 때문에, 운영체제는 각 프로세스들이 무리 없이 실행하기 위한 최소한의 프레임의 수를 파악하고 프로세스들에 적절한 수만큼 프레임을 할당해줄 수 있어야 한다.
  • 즉, 프레임 할당 방식이 중요하다.
  • 모든 프로세스에 균등하게 프레임을 제공하는 방식은 균등 할당이라고 한다.
  • 반면에, 프로세스의 크기가 크면 많이 할당하고, 프로세스 크기가 작으면 프레임을 적게 나눠 주는 방식은 비례 할당이라고 한다.
  • 둘 다 필요로 한다.
  • 그러기 때문에 작업 집합 모델페이지 폴트 빈도를 통해 프레임 결정 방식을 정한다.
  • 작업 집합은 실행 중인 프로세스가 일정 시간 동안 참조한 페이지 집합을 의미한다.
  • 작업 집합 모델을 기반을 한 프레임 할당은 아래와 같다.
  • 페이지 폴트 빈도를 기반으로 한 프레임 할당은 아래와 같다.
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글