Published on

가상메모리

Authors
  • avatar
    Name
    유사공대생
    Twitter

가상메모리

image

운영체제는 희소한 하드웨어 자원을 사용하려고 경합하는 프로그램들 사이의 자원 분배를 관리한다. 메모리도 역시 OS가 관리하는 자원이다. OS는 MMU를 사용해 사용자 프로그램에게 가상메모리(virtual memory)를 제공한다.

MMU는 프로그램의 가상 주소를 물리 메모리 주소로 변환해준다. 하지만 가상메모리는 그 이상이다. 페이지폴트 메커니즘으로 인해 프로그램은 필요한 만큼 많은 메모리가 있다고 생각할 수 있다.

요청받은 메모리가 사용가능한 메모리의 크기보다 크게 되면 OS는 현재 필요하지 않은 메모리 페이지를 더 느리지만 더 용량이 큰 대용량 저장장치인 디스크로 옮긴다.(swap out) 이런 스왑 아웃한 페이지에 프로그램이 접근하면 운영체제는 필요한 메모리 공간을 확보하고 요청받은 페이지를 다시 메모리로 불러온다.

이런 식으로 페이지를 처리하는 것을 요구불 페이징(demand paging)이라고 부른다.

스와핑이 일어나면 시스템 성능이 크게 저하된다. 하지만 메모리가 부족해서 실행도 못하는거보다는 느리더라도 스와핑을 통해 프로그램을 실행하는 편이 더 낫다. 가상 메모리 시스템은 성능 저하를 막기 위한 다양한 기법을 활용한다. 이런 기법 중 하나는 페이지 접근을 추적해서 스왑 아웃할 페이지를 결정하는 최소 최근 사용(LRU, least recently used) 알고리즘이다. 이 알고리즘을 사용하면 최근에 가장 자주 사용된 페이지는 물리 메모리에 그대로 남겨두고 최근에 가장 덜 사용한 페이지를 스왑 아웃한다.