Search
Duplicate
📒

[OS Stduy] 03-x. 가상 메모리 - 페이지 교체와 프레임 할당

상태
미진행
수업
OS Study
주제
OS
4 more properties
참고

요구 페이징

NOTE
프로세스를 메모리에 적재할 떄 모든 페이지를 적재하지 않고 필요한 페이지만 적재하는 기법을 요구 페이징이라 한다!
프로세스를 페이지에 올리는 방식도 잘 생각해야한다.
페이지 폴트가 발생할 떄 마다 하나씩 적재하는 방식을 순수 요구 페이징이라 한다!
요구 페이징 기법은 페이지를 적재하다 보면 메모리가 가득차게 되어 스왑 아웃을 해야한다.
이 때 어떤 페이지를 스왑 아웃 할 것인지를 결정하는 방법을 페이지 교체 알고리즘이라고 한다.
페이지 교체 알고리즘페이지 폴트를 적게 일으킬수록 좋은 알고리즘이다!
페이지 폴트 횟수페이지 참조열을 통해 알 수 있다. (CPU가 참조하는 페이지중 연속된 페이지를 생략한 페이지열을 의미)

FIFO 페이지 교체 알고리즘

NOTE
FIFO 페이지 교체 알고리즘 ⇒ 가장 먼저 올라온 페이지부터 교체함!
초기에 적재된 페이지는 초반에만 실행되고 말 수도 있지만, 실행 내내 사용하는 경우를 생각하면 비효율적인 방식이다.

2차 기회 페이지 교체 알고리즘

NOTE
페이지3은 참조 비트가 1이라서 0으로 수정하고 냅둔다.
교체 대상 페이지가 참조된 적 없는 페이지일 경우 교체한다.
참조된 적이 있는 페이지느 참조 비트를 0으로 만든 후 현재 시간을 적재 시각으로 설정한다.

최적 페이지 교체 알고리즘

NOTE
최적 페이지 교체 알고리즘 (너무 이상적인 방법)
CPU에 의해 참조되는 횟수를 고려하는 방식
자수 사용될 페이지는 남기고, 앞으로 오랫동안 사용하지 않은 페이지는 교체할 수 있도록 한다.
“앞으로 오랫동안 사용하지 않을 페이지”를 예측하기 어려워 이론 상의 지표임

LRU(least recently used) 페이지 교체 알고리즘

NOTE
FIFO와 비교하면 페이지 폴트가 많이 줄어듬
최근에 사용되지 않은 페이지는 앞으로도 사용되지 않을거라고 예측하는 방식
마지막 사용 시각을 토대로 사용한지 가장 오래된 페이지 교체

스레싱과 프레임 할당

NOTE
프레임의 수가 적은 경우에도 페이지 폴트가 자주 발생한다. 이게 과해지면 프로세스 실행 시간보다 페이징에 더 많은 시간을 소요하여 성능 저하가 발생한다!
열심히 페이지를 상하차하고 있다.
상하차를 어느 난이도 까지는 열심히하지만, 결국 죽어버린다 (이게 스레싱임)
메모리에서 동시 실행되는 프로세스가 늘어 멀티프로그래밍의 정도가 높아지면 어느 정도 까지는 CPU 이용률이 높아지지만, 어느 순간 스레싱이 발생해서 성능이 저하된다.
근본적인 원인은 각 프로세스가 필요로하는 최소한의 프레임수가 보장되지 않았기 떄문
요약하면 이런 그래프가 생성된다.

정적 할당 방식

NOTE
프로세스의 실행 과정은 고려하지 않고 단순히 프로세스 크기와 물리 메모리의 크기만 고려한 프레임 할당 방식
균등 할당
프로세스 개수에 따라 정확히 1/N 하여 할당
비례 할당
프로세스 크기에 따라 비례하게 할당하는 방식

동적 할당 방식

NOTE
프로세스의 실행을 보고 할당한 프레임 수를 결정하는 방식!
작업 집합 모델
프로세스가 일정 기간 동안 참조한 페이지 집합을 기억하여 작업 직합을 만든다.
이 작업 집합의 크기에 따라 프레임을 할당
페이지 폴트 빈도
페이지 폴트가 높다 ⇒ 프레임이 적으므로 늘린다
페이지 폴트가 낮다 ⇒ 프레임이 많으므로 줄인다.

번외

페이징의 이점 (쓰기 시 복사)

NOTE
이론적인 fork()로는 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가 통쨰로 복제된다. (생성 시간 및, 메모리가 낭비됨_
부모 프로세스와 동일한 자식 프로세스가 복제되면 동일한 프레임을 가리킨다! (단 쓰기 작업이 없다면 이 상황이 유지됨!)
기본적으로 프로세스는 자원을 공유하지 않기에, 쓰기작업으로 새로운 내용이온다면 별도의 공간에 메모리를 차지한다.

계층적 페이징

NOTE
프로세스 테이블의 크기를 줄이기 위해서 계층별로 나누는 방식!
페이지 테이블을 쪼개서, 가지고 있는 것
계층적 페이지 테이블을 참조하는 방법