Virtual Memory 란?

곽지욱·2024년 3월 28일

OS

목록 보기
1/2
post-thumbnail

가상 메모리 (Virtual Memory)

  • 실제 메모리 크기와 상관없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법이다.
  • 예를 들어 100MB 메모리 크기에서 200MB 크기의 프로세스를 수행할 수 있도록 하는 것이다
  • 가상 메모리는 왜 필요할까?
  • 물리적 공간의 제한을 극복하기 위해 만들어진 기술이다. 프로그램을 동작하기 위해서는 실제 프로그램 파일 메모리에 할당되어 프로세스가 처리된다. 하지만 실제 메모리의 용량은 제한적이기 때문에 메모리 용량 이상의 주소 할당 요청을 하면 보통 덜 사용하고 있는 프로그램은 보조 기억 장치로 옮겨진다.

가상 메모리의 단점

  • 페이지 교체에 따른 오버헤드가 발생할 수 있다. 페이지를 교체할 때마다 해당 페이지의 데이터를 디스크에 쓰거나 읽어와야 하므로 시스템 성능에 영향을 줄 수 있다.

  • page fault가 발생할 수 있다. 이는 필요한 페이지가 현재 물리 메모리에 없어 디스크에 읽어와야 할 때 발생한다.


가상 메모리의 장점

  • 보조 기억장치 공간을 사용하여 메인 메모리(RAM) 크기보다 더 큰 공간 사용이 가능하다 (확장성)

  • 물리 주소를 연속적인 주소로 바꿔준다. (물리적으로 별개의 메모리면 주소가 비 연속적)

즉, 사용자가 프로그램을 실행하면 드라이브에서 메모리로 메모리에서 CPU로 가져다 사용하게 되는데 16GB 메모리를 사용한다고 가정할 때, 프로그램의 총 메모리크기가 30GB 정도 된다면 해당 프로그램에서 필요한 부분만 메모리에 올리게 되기 때문에 실행이 가능한 것이다.

페이지?

  • 페이지란 어떠한 프로세스를 일정 크기로 나눌 때에 미리 정해진 크기(단위)를 페이지라고 한다.

  • 가상 메모리는 실제 물리적인 메모리보다 큰 공간으로 프로그램이 필요로 하는 데이터를 저장할 수 있도록 해주는데, 이를 가능하게 하는 기법이라고 할 수 있다.

  • 페이지 테이블은 가상 주소와 물리 주소를 매핑하는 테이블이다.

  • 예를들어 사용자가 롤을 한다고 가정해보자, 사용자가 화살에 맞았을 때 CPU는 메모리에서 화살의 정보를 가져와야한다. 하지만 CPU는 어떠한 메모리 주소에 '화살'의 정보가 있는지 알 수가 없기 때문에 그러한 정보를 알려주는 것이 페이지 테이블이다.

  • 화살정보가 들어있는 프로세스가 A-2라는 메모리 안의 가상주소에 존재한다고 하였을 때 해당 프로세스가 존재하는 메모리의 실제주소(물리주소) '3' 이면 페이지 테이블에는

A-2(가상주소) : 3(물리주소)

  • 이라고 구성되어 있는 것이다.

페이지 교체

  • 페이지 교체(Swap) 은 가상 메모리 시스템에서 중요한 개념이다. 만약 모든 페이지가 물리 메모리에 들어갈 수 없는 상황이라면 어떤 페이지를 메모리에 올릴지를 결정해야하는데 , 이때 사용되는 것이 페이지 교체 알고리즘이다.

  • 페이지 교체 알고리즘에는 다양한 종류가 있는데, 대표적으로 FIFO(First-In-First-Out) , LRU(Least Recently Used), LFU(Least Frequently Used) 등이 있다.


결론

  • 가상메모리는 물리적 메모리의 한계를 극복하기 위해 사용한다.
  • 메모리크기가 한정되어 있기 때문에 가상메모리에 프로그램을 보관해두게 되는데, 이때 사용되는 것이 페이징이다.
  • 페이지는 가상 메모리에 저장할 프로그램을 일정 크기로 나누는 단위를 말하고, CPU가 가상 메모리에서 물리적 메모리로 프로그램을 swap 할 때 여러가지 페이지 교체 알고리즘이 사용되며,

  • 이때 CPU는 페이지 테이블에서 가상 주소와 물리주소를 매칭하여 프로그램을 불러들인다.

0개의 댓글