컴퓨터언어/운영체제

페이징 기법 관련 용어 정리

bbanpro 2020. 6. 30. 18:46
728x90
반응형

👍 페이징 기법

주기억장치(메모리)만을 이용하여 프로그램을 여러 개 적재하기에는 멀티태스킹을 중시하는 현대에 맞지 않다.

프로그램을 여러 개 돌린다는 것은 쪼갠 조각들을 제한된 메모리에 꽉꽉 눌러담았다는 뜻이고, 실행 개수가 많을수록 하나의 프로그램 동작에 필요한 소스코드가 덜 적재되어 결국 성능저하를 일으키기 때문이다.

이는 결국 큰 프로그램 전체를 순차 적재함으로써 나타나는 메모리 용량 문제다.

따라서 각 프로그램을 모두 다루는 것이 아니라 당장 필요한 부분만을 골라 그때그때 적재하는 방법이 필요해졌고, 동시에 주기억장치가 아닌 보조기억장치의 특정 부분(가상기억장치)에서 용량제한 없이 프로그램의 실행을 담당하도록 한 것이 "가상기억장치 다중프로그래밍 방식"이다.

그리고 가상기억장치 내에서 프로그램을 분할한 조각들을 "페이지", 이를 적재할 메모리 내 공간을 "페이지 프레임"이라고 하며, 이때 페이지 프레임의 크기가 균일한 것을 "페이징 기법", 제각각인 것을 "세그먼테이션 기법"이라고 한다.

당장 필요한 페이지를 선정하는 과정은 "페이지 교체 알고리즘"이 담당한다.


👍 스와핑

 

페이징 기법에서 페이지가 주기억장치와 가상기억장치 사이를 왔다갔다하는 것을 "스와핑"이라고 한다.

스와핑 중에서 가상기억장치에서 주기억장치로 적재되는 것을 "Page In 또는 Swap In", 해제되는 것을 "Page Out 또는 Swap Out"이라고 한다.

오버레이가 주기억장치 단일프로그래밍이자 순차실행이었다면, 스와핑은 가상기억장치 다중프로그래밍이자 임의교체실행이다.


👍 페이지 사상테이블

 

주기억장치와 가상기억장치 사이에서 현재 적재되어야 할 페이지가 무엇이고, 여태까지의 스와핑에 대해 기록한 표데이터


👍 Page Hit / Page Fault

 

프로그램 실행에 필요한 페이지가 주기억장치에 있어 빠른 접근이 가능한 것을 Page Hit, 그렇지 않고 가상기억장치까지 갔다오고 페이지 사상테이블에 기록해야 하는 것을 Page Fault(페이지 부재)라고 한다.

Page Fault는 오류가 아니다.


👍 스레싱

 

동시에 실행하는 프로그램이 많을수록 각 프로그램이 가질 수 있는 페이지의 크기는 작아진다.

페이지의 크기가 작아지면 어떤 페이지 프레임에는 남는 공간이 생긴다(내부단편화).

내부단편화가 사라지는 것은 메모리 효율 면에서 좋지만, 페이지가 너무 많이 작아지면 사소한 것까지 코드가 분할되어 Page Fault의 확률이 커지고, 그만큼 페이지를 많이 교체해야 프로그램 동작이 가능해지므로 성능이 저하된다.

이렇게 지나친 Page Fault로 성능이 저하되는 현상을 스레싱이라고 한다.

스레싱을 방지하기 위해 구역성 또는 작업집합을 이용한다.


👍 Locality(구역성 / 지역성)

 

같은 프로그램이라도 집중해서 사용하는 기능이 다르다.

즉 프로그램의 모든 정보를 균일하게 참조하지 않는다.

예를 들어, 워드프로세서에서 언제는 "인쇄" 기능을, 언제는 "보고서" 기능을, 언제는 "표" 기능을 집중해서 쓴다.

따라서 페이지 교체도 전체를 대상으로 산발적으로 하는 것이 아니라, 특정 부분을 집중하여 연관된 페이지들을 대상으로 한다면 Page Fault를 줄일 수 있다.

시간 구역성 : 반복문, 부프로그램(서브루틴), 스택, 집계(Count)

공간 구역성 : 배열순회(Traverse), 순차적 코드, 변수 선언


👍 Working Set(작업집합)

 

"자주 사용"되기 때문에 교체되면 Page Fault 증가의 주범이 되는 페이지를 메모리에 고정시키고, 아예 교체 대상에서 제외하는 것

Page Falut를 줄일 수 있고, 작업집합은 언제든지 변경 가능하다.

728x90
반응형