컴퓨터언어/운영체제

가상기억장치 다중프로그래밍 - 페이징 기법

bbanpro 2020. 6. 30. 01:11
728x90
반응형

👍 페이징기법

페이징 기법은 큰 프로그램을 가상기억장치에 그대로 둔 채, 크기가 동일한 "페이지" 단위로 쪼개어 당장 필요한 부분만 그때그때 주기억장치에 적재하는 것이다.

주기억장치에는 페이지와 같은 크기의 "페이지 프레임"이라는 공간이 있어, 페이지의 적재를 기다리고 있다.

페이지가 페이지 프레임으로 들어오는 적재 과정을 "페이지 인(스와프 인)"이라고 하고, 반대를 "페이지 아웃(스와프 아웃)"이라고 하며, 이를 "스와핑(페이지교체)"이라고 통칭한다.

 

오버레이 vs 스와핑

오버레이 스와핑
공통점 : 작은 메모리에 큰 프로그램을 올리기 위한 방법론
요즘은 쓰이지 않는 초창기 단일프로그래밍 방식 현재 쓰이는 방식
주기억장치만 이용 가상기억장치 이용
프로그램을 쪼개어 순차 실행 프로그램을 페이지 단위로 쪼개어 교체 실행(임의로딩 + 횟수중복가능)

 

즉 스와핑은 주기억장치와 가상기억장치 사이에서의 페이지 이동을 일컫는 말인데, 원활한 작동을 위해서는 현재 어떤 페이지가 적재되어 있고 어디가 비어 있는지 등을 제대로 로깅(logging)해줄 필요가 있다.

따라서 주기억장치와 가상기억장치 사이에는 페이지의 이동 기록을 담당하는 "페이지 사상테이블"이 있다.

 

필요한 페이지가 페이지 사상테이블에 이미 존재하여 빠른 실행이 가능한 것을 "Page Hit"라고 하며, 반대로 존재하지 않아 페이지 사상테이블에 새로 등록시키고 디스크에서 로딩해야 하는 것을 "Page Fault"라고 한다.

 

스레싱?

프로그램을 쪼갠 페이지의 크기가 작을수록 조밀해지고 오차가 작아지기 때문에 내부단편화는 줄어든다. 하지만 지나치게 작아진다면, 기록해야 할 페이지 수가 증가하여 페이지 사상테이블의 크기도 커지고, Page Fault의 확률도 커져 정작 프로그램 실행은 안하고 조각만 바꿔끼는 이상한 일만 할 수 있다.

이처럼 작은 페이지로 인한 성능 저하를 스레싱이라고 한다.

페이지가 작을 때 페이지가 클 때
특정한 참조 지역성만을 포함하기 때문에 기억장치의 효율이 좋다 참조되는 정보와는 무관한 많은 양의 정보가 메모리에 남는다
총 담아야 할 페이지 총수가 많으므로 페이지 테이블이 복잡하다 페이지 테이블이 복잡하지 않으므로 관리가 용이하다
총 입출력 시간이 늘어난다 하나의 페이지를 디스크로부터 입출력하는 데 소모하는 시간이 많다
내부단편화가 거의 발생하지 않지만, 마지막 하나 남은 조각이 페이지 테이블보다 작다면 내부단편화가 발생한다.
728x90
반응형