[OS] Virtual Memory

East Silver·2022년 1월 1일
0

가상 메모리

가상 메모리(Virtual Memory)는 사용자에게 논리적 메모리와 물리적 메모리를 분리하여 인식하도록 한다. 이러한 분리는 적은 양의 물리적 메모리만 사용 가능할 때에도 프로그래머에게 대용량의 가상 메모리를 제공할 수 있다.

가상 메모리 개발 배경

프로그램의 일부분만 메모리에 올릴 수 있다면...
1. 물리 메모리 크기에 제약받지 않게 된다.
2. 더 많은 프로그램을 동시에 실행할 수 있게 된다. 이에 따라 응답시간은 유지되고, CPU 이용률과 처리율은 높아진다.
3. swap에 필요한 입출력이 줄어들기 때문에 프로그램들이 빠르게 실행된다.

가상 메모리가 하는 일

가상 메모리는 실제의 물리 메모리 개념사용자의 논리 메모리 개념을 분리한 것으로 정리할 수 있다.

가상 주소 공간

  • 한 프로세스가 메모리에 저장되는 논리적인 모습을 가상메모리에 구현한 공간이다. 프로세스가 요구하는 메모리 공간을 가상메모리에서 제공함으로써 현재 직접적으로 필요치 않은 메모리 공간은 실제 물리 메모리에 올리지 않는 것으로 물리 메모리를 절약할 수 있다.
  • 예를 들어, 한 프로그램이 실행되며 논리 메모리로 100KB 가 요구되었다고 하자. 하지만 실행까지에 필요한 메모리 공간(Heap영역, Stack 영역, 코드, 데이터)의 합이 40KB 라면, 실제 물리 메모리에는 40KB 만 올라가 있고, 나머지 60KB 만큼은 필요시에 물리메모리에 요구한다고 이해할 수 있겠다.

Demand Paging(요구 페이징)

프로그램이 실행되는 동안, 페이지 사용을 요구받은 경우에만 페이지에 적재한다.

페이지 교체

요구 페이징 에서 언급된대로 프로그램 실행시에 모든 항목이 물리 메모리에 올라오지 않기 때문에, 프로세스의 동작에 필요한 페이지를 요청하는 과정에서 page fault(페이지 부재)가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져오게 된다. 하지만, 만약 물리 메모리가 모두 사용중인 상황이라면, 페이지 교체가 이뤄져야 한다.(또는, 운영체제가 프로세스를 강제 종료하는 방법이 있다.)

페이지 교체 알고리즘

  • FIFO 페이지 교체
  • 최적 페이지 교체(Optimal Page Replacement)
  • LRU 페이지 교체(LRU Page Replacement)
  • LFU 페이지 교체(LFU Page Replacement)
  • MFU 페이지 교체(MFU Page Replacement)
profile
IOS programmer가 되고 싶다

0개의 댓글