[정보처리기사 필기] 응용 SW 기초 기술 활용 - 115. 가상기억장치 구현 기법 / 페이지 교체 알고리즘

1. 가상기억장치의 개요

  • 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것
  • 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법
  • 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리
  • 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용
  • 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있음
  • 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요
  • 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있음
  • 가상기억장치의 구현 방법 : 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌 수 있음

2. 페이징 Paging 기법

  • 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법
    • 페이지 : 프로그램을 일정한 크기로 나눈 단위
    • 페이지 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
  • 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있음
  • 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요
  • 페이지 맵 테이블 사용으로 비용이 증가, 처리 속도가 감소

3. 세그먼테이션 Segmentation 기법

  • 세그먼테이션의 개요
    • 세그먼트 : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위, 각 세그먼트는 고유한 이름과 크기를 갖음
    • 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
    • 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법
    • 세그먼테이션 기법을 이용하는 이유는 기억공간을 절약하기 위해서
    • 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블이 필요
    • 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키가 필요
    • 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있음
  • 세그먼테이션 기법의 일반적인 주소 변환
    • 주소 형식에 따른 주소와 세그먼트 맵 테이블의 구성
      • 가상 주소 : 세그먼트 번호를 나타내는 s, 세그먼트 내에 실제 내용이 위치하고 있는 곳까지의 거리를 나타내는 변위값 d로 구성
      • 실기억주소 : 완전주소 형태를 사용, 세그먼트의 기준 번지와 변위값을 더함
      • 세그먼트 맵 테이블 : 세그먼트 번호 s, 세그먼트의 크기 L(한계번지), 주기억장치 상의 기준번지(시작주소) b
    • 주소 변환 순서
      • 가상주소의 세그먼트 번호로 세그먼트 맵 테이블에서 해당 세그먼트의 기준번지와 세그먼트 크기를 구함, 세그먼트 번호는 세그먼트 맵 테이블에 대한 색인으로 사용
      • 가상주소의 변위값과 세그먼트의 크기를 비교
      • 변위값이 작거나 같으면 기준번지와 변위값을 더하여 실기억주소를 만들어 주기억장치를 액세스
      • 변위값이 크면 다른 영역을 침범하게 되므로 실행 권한을 운영체제에 넘기고 트랩을 발생시킴, 변위값이 크다는 것은 현재 찾는 세그먼트의 위치가 해당 세그먼트의 크기 (한계번지) 를 초과하였다는 의미

4. 페이지 교체 알고리즘

  • 페이지 부재가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이 때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법
    • 페이지 부재 : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우를 말함
    • 페이지 부재가 발생하면 해당 페이지를 디스크에서 주기억장치로 가져와야 함
  • 페이지 교체 알고리즘의 방법
    • OPT OPTimal replacement (최적교체)
      • 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
      • 벨레이디가 제안
      • 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
    • FIFO First In First Out
      • 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
      • 이해하기 쉽고, 프로그래밍 및 설계가 간단
    • LRU Least Recently Used
      • 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
      • 각 페이지마다 계수기 Counter 나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 가장 오래 전에 사용된 페이지를 교체
        • 계수기 : 각 페이지별로 존재하는 논리적 시계, 해당 페이지가 사용될 때마다 0으로 클리어시킨 후 시간을 증가시켜서 시간이 가장 오래된 페이지를 교체
    • LFU Least Frequently Used
      • 사용 빈도가 가장 적은 페이지를 교체하는 기법
      • 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용
    • NUR Not Used Recently
      • LRU와 비슷한 알고리즘
      • 최근에 사용하지 않은 페이지를 교체하는 기법
      • 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있음
      • 최근의 사용 여부를 확인하기 위해서 각 페이지마다 참조비트와 변형 비트가 사용
        • 참조 비트 Reterence Bit :  페이지가 호출되지 않았을 때는 0, 호출되었을 때는 1
        • 변형 비트 Moditied Bit : 페이지 내용이 변경되지 않았을 때는 0, 변경되었을 때는 1
      • 참조 비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정
        • 참조 비트 0 0 1 1
          변형 비트 0 1 0 1
          교체 순서 1 2 3 4
    • SCR Second Chance Replacement (2차 기회 교체)
      • 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것
      •  FIFO 기법의 단점을 보완하는 기법