가상 메모리

Taehun Jeong·2023년 2월 20일
0
post-thumbnail

가상 메모리

보조기억장치의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 큰 용량을 가진 것처럼 사용하는 기법이다. 메모리를 추상화한 것!

가상 메모리는 프로세스가 존재하는 메모리가 지나치게 많은 요구에 의해 오염되는 것을 방지하기 위해서 제안된 개념. RAM과 하드디스크를 추상화하여 하나의 메모리 스페이스의 추상화된 인터페이스 제공.

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

단편화

주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간을 말한다.

  • 내부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
  • 외부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈 공간으로 빈 공간으로 남아있는 분할된 전체 영역

페이징

가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법이다.

  • 페이지를 일정한 크기로 나눈 단위를 페이지(page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(page frame)이라고 한다.
  • 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다.
  • 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요하다.
  • 페이지 맵 테이블 사용으로 비용이 증가되고, 처리 속도가 감소된다.

세그멘테이션

가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행하는 방법이다.

  • 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(segment)라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다.
  • 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다.
  • 세그멘테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위함이다.
  • 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블이 필요하다.
  • 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키가 필요하다.
  • 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.

페이지 교체 알고리즘

페이지 부재(Page Fault)

CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우를 말한다. 페이지 부재가 발생하면 해당 페이지를 디스크에서 주기억장치로 가져와야 한다.

페이지 교체 알고리즘은 페이지 부재가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법. 페이지 교체 알고리즘의 종류에는 OPT, FIFO, LRU, LFU, NUR, SCR 등이 있다.

  • OPT(최적 교체) : 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법. 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
  • FIFO : 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 오래 있었던 페이지를 교체하는 기법
  • LRU : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법. 각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오래 전에 사용된 페이지를 교체
  • LFU : 사용 빈도가 가장 적은 페이지를 교체하는 기법. 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용됨
  • NUR : LRU와 비슷한 알고리즘, 최근에 사용하지 않은 페이지를 교체하는 기법. 최근의 사용 여부 확인을 위해 각 페이지마다 참조 비트와 변형 비트를 사용
  • SCR : 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위함. FIFO의 단점 보완

References

2022 시나공 정보처리기사 필기
널널한 개발자 TV) 짧게 개념만 이해하는! 가상 메모리 구조

profile
안녕하세요

0개의 댓글