가상기억장치

몽이·2022년 7월 1일
0

운영체제

목록 보기
9/9

가상기억장치

1) 가상기억장치의 개요

(1) 가상기억장치의 개념

  • 보조기억장치의 일부를 주기억장치처럼 사용하여, 용량이 큰 프로그램을 실행할 수 있도록 하는 기법이다.
  • 프로그램을 여러 개의 작은 블록으로 나누어 가상기억장치에 저장해 둔 뒤에 필요한 블록만 주기억장치에 할당하여 처리하는 것이다.
  • 스와핑 기법에서 발전된 것으로, 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다.
  • 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌 수 있다.

(2) 페이징 기법

  • 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재하는 기법이다.
  • 외부 단편화는 발생하지 않지만, 내부 단편화는 발생할 수 있다.
  • 페이지의 위치정보를 저장하는 페이지 맵 테이블을 사용해야 하므로 비용이 증가하고 처리 속도가 감소된다.

(3) 세그먼테이션 기법

  • 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위(세그먼트)로 나눈 후 주기억장치에 적재하는 기법이다.
  • 각 세그먼트는 고유한 이름과 크기를 가지며 기억공간을 절약할 수 있다.
  • 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다.
  • 내부 단편화는 발생하지 않지만, 외부 단편화는 발생할 수 있다.
  • 세그먼트의 위치정보를 저장하는 세그먼트 맵 테이블과 서로의 영역을 침범하지 않게 하는 기억장치 보호키가 필요하다.
    세그먼트시작주소번호크기(길이)
    012004000
    18005700
    210002000
    35003200
    • 논리주소(세그먼트, 상대주소) : 실제 물리주소 = 세그먼트 시작주소 + 상대주소
    • 상대주소가 번호크기보다 큰 경우 에러(트랩) 발생

2) 페이지 교체 알고리즘

(1) 페이지 교체의 개념

  • 페이지 프레임이 비어있을 때, 차례대로 페이지를 적재한다.
  • 페이지 부재(Page Fault)가 발생하고 페이지 프레임에 빈 공간이 없을 때, 주기억장치에 적재하는 프레임을 교체하는 방식을 결정하는 기법이다.

(2) OPT(OPTimal replacement)

  • 가장 오랫동안 사용하지 않을 페이지를 교체하는 방법이다.
  • 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘이다.
    • 페이지 적중률(Hit Ratio) = 1 - (페이지 부재 횟수 / 참조 횟수)

(3) FIFO(First In First Out)

  • 가장 먼저 적재된(오래된) 페이지를 교체하는 기법이다.
  • 이해하기 쉽고, 프로그래밍 및 설계가 간단하다.
  • 예 : 참조 페이지가 [1, 3, 3, 1, 5, 4, 2, 4]이고 페이지 프레임이 3인 경우의 페이지 부재 횟수

(4) LRU(Least Recently Used)

  • 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이다.
  • 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체한다.

(5) LFU(Least Frequently Used)

  • 사용 빈도가 가장 적은 페이지를 교체하는 기법이다.
  • 자주 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용된다.

(6) NUR(Not Used Recently)

  • LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법이다.
  • 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.
  • 최근 사용 여부를 확인하기 위해서 각 페이지마다 참조 비트와 변형 비트가 사용된다.
    • 참조 비트 : 호출되지 않을 때 0, 호출되었을 때 1
    • 변형 비트 : 변형되지 않을 때 0, 변경되었을 때 1
      참조 비트변형 비트교체 순서
      001
      012
      103
      114

(7) SCR(Second Change Replacement)

  • FIFO 기법의 단점을 보완하는 기법이다.
  • 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법이다.

3) 기타 관리 사항

(1) 페이지 크기

  • 페이지 크기가 작을 경우, 페이지 단편화가 감소되고 이동시간이 줄어든다 .
    • 효율적인 Working Set 유지와 Locality 일치성 상승
    • 페이지 맵 테이블 크기 상승으로 인한 매핑 속도, 입출력 속도 저하
  • 페이지 크기가 클 경우, 페이지 단편화가 증가되고, 이동시간이 늘어난다.
    • 비효율적인 Working Set과 Locality 일치성 저하
    • 페이지 맵 테이블 크기 감소로 인한 매핑 속도, 입출력 속도 상승

(2) Locality(구역성)

  • 프로세스가 실행되는 동안 일부 페이지를 집중적으로 참조하게 되는 성질이다.
  • 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법 중의 하나로, 가상 기억장치 관리의 이론적 근거이다.
  • 스래싱을 방지하기 위한 워킹 세 이론의 기반으로 시간 구역성과 공간 구역성이 있다.
  • 시간 구역성(Temporal Locality) : 하나의 페이지를 일정 시간 동안 집중적으로 접근하는 현상이다.
    • 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음
    • 시간 구역성이 이루어지는 기억 장소 : Loop, Stack, Sub Routine, Counting, Totaling에 사용되는 공간
  • 공간 구역성(Spatial Locality) : 일정한 위치의 페이지에 집중적으로 접근하는 현상이다.
    • 한 번 참조한 페이지의 근처 페이지를 계속 참조할 가능성이 높음
    • 공간 구역성이 이루어지는 기억 장소 : Array Traveral, 순차적 코드 실행, 같은 영역에 있는 변수를 참조하는 공간

(3) 워킹 셋(Working Set)

  • 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합(Set)이다.
  • 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정된다.
  • 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹셋은 시간에 따라 변경된다.

(4) 페이지 부재 빈도(PFF : Page Fault Frequency) 방식

  • 페이지 부재 빈도 방식은 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식이다.
  • 페이지 부재율을 지속적으로 감시하고 있다가 부재율이 상한선을 넘어가면 좀 더 많은 페이지 프레임을 할당하고, 부재율이 하한선을 넘어가면 페이지 프레임을 회수하는 방식이다.

(5) 프리페이징(Prepaging)

  • 처음의 과도한 페이지 부재를 방지하기 위해 필요가 예상되는 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법이다.
  • 적재된 페이지들 중에서 사용되지 않는 페이지가 많을 수도 있다.

(6) 스래싱(thrashing)

  • 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상이다.
  • 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로써 나타나는 현상으로 전체 시스템의 성능이 저하된다.
  • 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나면서 CPU의 이용률은 급격히 감소하게 된다.
  • 스래싱 현상을 방지하는 방법은 아래와 같다.
    • 다중 프로그래밍의 정도를 적정 수준으로 유지
    • 페이지 부재 빈도를 조절하여 사용
    • 워킹 셋을 유지
    • 부족한 자원을 증설하고, 일부 프로세스를 중단
    • CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영
profile
풀스택 개발자가 되는 날까지 달리자!

0개의 댓글