가상 메모리

컴퓨터 시스템은 단일 프로세스 또는 다수의 프로세스를 동시에 처리할 수 있어야 합니다. 이를 위해서는 각 프로세스에 메모리 공간이 할당되어야 합니다. 그러나 컴퓨터의 실제 메모리 용량에는 한계가 있기 때문에, 때로는 처리해야 할 프로세스의 메모리 요구량이 실제 메모리 용량을 초과하는 상황이 발생할 수 있습니다.

이러한 문제를 해결하기 위해 등장한 기술이 바로 가상 메모리입니다. 가상 메모리는 컴퓨터 시스템의 성능과 효율성을 크게 향상시키는 핵심 기술로, 실제 메모리 용량의 한계를 극복하고 다중 프로그램 실행 환경에서 메모리를 효율적으로 관리할 수 있게 해줍니다.

가상 메모리는 다중 프로그램 실행 환경에서 특히 유용합니다. 여러 프로세스가 동시에 실행되는 환경에서는 각 프로세스가 필요로 하는 메모리 공간이 서로 겹치는 경우가 많습니다. 가상 메모리를 사용하면 이러한 충돌을 방지하고, 각 프로세스가 독립적으로 자신의 메모리 공간을 사용할 수 있습니다.

이러한 이유로 가상 메모리는 현대 컴퓨터 시스템에서 필수적인 기술로 자리 잡고 있습니다. 가상 메모리를 효율적으로 관리함으로써 컴퓨터 시스템의 성능과 효율성을 향상시키는 것이 가능해지며, 다중 프로그램 실행 환경에서도 원활한 작업을 보장할 수 있습니다.

가상 메모리는 컴퓨터의 제한된 실제 메모리 용량을 넘어서도 다수의 프로그램과 프로세스를 실행할 수 있게 해주는 메모리 관리 기술로, 실제 메모리와 저장 장치의 일부를 활용하여 컴퓨터가 더 많은 메모리를 사용하는 것처럼 만듭니다.

개요

가상 메모리는 주 기억장치의 일부를 디스크 상의 스왑 파일 등의 보조 기억장치와 연결하여, 프로그램이 필요로 하는 메모리 영역을 물리적인 주 메모리와 가상적인 보조 기억장치 사이에서 자동으로 이동시킵니다. 이로써, 실제로 필요한 부분만 메모리에 적재하여 메모리 공간을 효율적으로 관리할 수 있습니다.

컴퓨터에는 프로세서가 직접 접근하여 데이터를 읽고 쓸 수 있는 주 메모리로 사용되는 휘발성 메모리인 RAM(Random Access Memory), 프로그램과 데이터가 저장되어 있는 비휘발성 메모리로, 프로세서가 읽기만 가능하고 쓰기는 불가능한 ROM(Read-Only Memory), 전기적으로 지우고 다시 프로그래밍할 수 있는 비휘발성 메모리로, 주로 BIOS 등의 설정 정보를 저장하는 데 사용되는 EEPROM(Electrically Erasable Programmable Read-Only Memory) 등 다양한 종류의 메모리가 존재합니다.

이 중에서 가상 메모리는 주로 RAM과 함께 사용됩니다. 가상 메모리는 실제 물리적인 RAM 외에 추가적인 가상 주소 공간을 만들어 사용하는 기법으로 이를 통해 프로그램이 필요로 하는 메모리 공간을 실제 물리적인 RAM 크기보다 훨씬 크게 사용할 수 있습니다.

가상 메모리 설정은 컴퓨터가 메모리 부족 상황에서 데이터를 임시로 저장하는 기능입니다. 이를 페이징이라고도 합니다. 예를 들어, 현재 메모리에 들어갈 수 없는 큰 데이터를 처리해야 할 때, 시스템은 그 데이터를 하드 드라이브에 옮겨놓고 필요할 때마다 그곳에서 불러오는데, 이 과정에서 시간이 소요됩니다.

macOS 맥북 Apple에서 악성 소프트웨어가 있는지 확인할 수 없음 경고

가상 메모리의 구성 요소

가상 메모리는 페이지와 프레임을 기본 단위로 사용하여 메모리를 관리합니다. 페이지 테이블은 각 페이지의 위치를 매핑하고, 스왑 파일은 주 메모리와 보조 기억장치 간 데이터 교환을 담당합니다.

  • 페이지(Page)와 프레임(Frame): 가상 메모리는 페이지와 프레임이라는 단위로 관리됩니다. 페이지는 프로그램의 논리적인 단위로, 일정한 크기로 나뉘어져 있습니다. 이 크기는 보통 4KB에서 8KB 정도로 설정됩니다. 프레임은 주 메모리의 물리적인 단위로, 페이지와 동일한 크기를 갖습니다. 페이지와 프레임 간의 매핑은 페이지 테이블을 통해 이루어집니다.
  • 페이지 테이블(Page Table): 페이지 테이블은 각 페이지가 실제 메모리에서 어느 위치에 있는지를 매핑하는 역할을 합니다. 각 프로세스마다 페이지 테이블이 별도로 유지되며, 페이지 번호와 프레임 번호의 매핑 정보를 포함합니다. 페이지 테이블은 보통 메모리 내에 위치하며, 주소 변환(Address Translation) 단계에서 사용됩니다. 또한, 페이지 테이블은 크기가 크기 때문에 효율적인 관리를 위해 다양한 기법이 사용됩니다. 예를 들어, 다단계 페이지 테이블(Multi-level Page Table)이나 역페이지 테이블(Inverted Page Table) 등이 있습니다.
  • 스왑 파일(Swap File): 스왑 파일은 주 메모리와 보조 기억장치 간 데이터 교환을 위한 파일입니다. 주로 하드 디스크에 위치하며, 프로그램의 일부가 현재 주 메모리에 적재되어 있지 않을 때 해당 부분을 스왑 파일에 저장하고, 필요할 때 다시 주 메모리로 가져옵니다. 스왑 파일은 가상 메모리 시스템의 성능에 큰 영향을 미치므로 디스크의 속도나 용량 등이 중요한 요소가 됩니다. 또한, 스왑 파일의 크기나 위치 등은 운영체제 설정에 따라 다를 수 있습니다.

작동 방식

가상 메모리는 프로세스가 실행될 때, 필요한 페이지를 요청하면 페이지 폴트(Page Fault)가 발생하여 페이지 부재를 야기합니다. 이때 운영체제는 페이지 폴트 핸들러를 통해 필요한 페이지를 스왑 파일에서 주 메모리로 읽어옵니다. 페이지 교체 알고리즘을 통해 주 메모리에서 공간이 부족한 페이지를 스왑 아웃하여 보조 기억장치로 옮기고, 필요한 페이지를 스왑 인하여 주 메모리로 가져옵니다.

  1. 각 프로그램에 가상 주소 공간 할당: 가상 메모리는 각 프로그램에 대해 실제 메모리 주소가 아닌 가상 메모리 주소를 할당합니다. 이 가상 주소 공간은 프로그램이 데이터를 저장하고 액세스하는 데 사용됩니다. 가상 주소 공간은 일반적으로 프로그램이 요구하는 메모리 양을 나타내며, 물리적인 메모리의 제약을 고려하지 않고 사용됩니다.
  2. 페이지 테이블 사용: 페이지 테이블은 가상 주소를 실제 메모리 주소로 변환하는 데 사용됩니다. 각 프로세스는 자체 페이지 테이블을 가지고 있으며, 페이지 테이블의 항목은 가상 주소 페이지가 실제 메모리에 저장된 위치를 나타냅니다. 페이지 테이블은 빠른 주소 변환을 위해 주 메모리에 상주합니다.
  3. 요구 페이징: 프로그램이 가상 주소에 접근하려고 할 때, 운영 체제는 해당 페이지가 실제 메모리에 있는지 확인합니다. 만약 페이지가 실제 메모리에 없는 경우, 페이지 폴트가 발생하고 운영 체제는 해당 페이지를 디스크에서 읽어와 실제 메모리로 로드합니다. 이 과정을 요구 페이징이라고 합니다.
  4. 페이지 교체: 실제 메모리가 부족할 때, 운영 체제는 페이지 교체 알고리즘을 사용하여 메모리 공간을 확보합니다. 사용되지 않는 페이지를 디스크로 밀어내고 새로운 페이지를 로드하여 실제 메모리에 할당합니다. 페이지 교체는 메모리 관리의 중요한 측면으로, 다양한 알고리즘이 존재하여 최적의 성능을 위해 선택됩니다.
윈도우 10에서 파일 탐색기를 내 PC에서 시작하는 방법

가상 메모리 장단점

가상 메모리는 멀티태스킹 가능성과 메모리 사용량 증가 등의 장점을 제공하지만, 페이지 교체로 인한 성능 저하와 시스템 복잡성 증가 등의 단점도 존재합니다.

장점

  • 멀티태스킹 가능: 가상 메모리는 여러 프로그램이 동시에 실행될 수 있도록 합니다. 각 프로그램은 자체적인 가상 주소 공간을 가지고 있으며, 이를 통해 프로그램 간에 메모리가 격리되어 독립적으로 실행될 수 있습니다.
  • 메모리 사용량 증가: 실제 메모리보다 더 많은 메모리를 사용할 수 있도록 합니다. 가상 메모리는 실제 메모리의 용량 한계를 극복하여, 더 많은 프로그램이 실행될 수 있도록 합니다. 이는 시스템의 확장성을 향상시키고, 더 많은 프로세스를 동시에 처리할 수 있도록 합니다.
  • 프로그래밍 용이: 프로그램 개발자가 메모리 관리에 대해 직접 신경 쓸 필요가 없습니다. 가상 메모리 시스템은 프로그램이 필요로 하는 메모리를 자동으로 관리하므로, 프로그래머는 더욱 추상화된 레벨에서 프로그래밍을 할 수 있습니다. 이는 프로그램의 개발 및 유지보수를 더욱 편리하게 만듭니다.
Windows에서 유니코드 지원하지 않는 프로그램 유니코드 강제 적용하기

단점

  • 성능 저하: 페이지 교체가 발생하면 프로그램 실행 속도가 느려질 수 있습니다. 페이지 교체는 디스크와 메모리 간의 데이터 이동을 동반하므로, 이러한 과정에서 발생하는 지연으로 인해 프로그램의 응답 시간이 지연될 수 있습니다.
  • 시스템 복잡성 증가: 가상 메모리를 사용하면 메모리 관리 시스템이 더 복잡해집니다. 페이지 테이블의 관리, 페이지 교체 알고리즘의 선택, 스왑 파일의 관리 등 다양한 요소를 고려해야 하므로 시스템의 복잡성이 증가할 수 있습니다.

가상 메모리 설정 시 참고 사항

가상 메모리 설정 시, 설치된 RAM 용량의 1.5배 또는 2배를 최대 크기로 설정하고, 초기 크기는 최대 크기의 1/2 또는 1/3 수준으로 설정하는 것이 권장됩니다. 시스템 메모리에 따라 적절한 페이징 파일 크기를 설정하고, 페이징 파일을 관리하여 시스템 성능을 최적화할 수 있습니다. 자세한 내용은 가상 메모리 설정 시 참고 사항(링크 업데이트 예정)을 확인하세요.

Windows에서 유니코드 지원하지 않는 프로그램 유니코드 강제 적용하기

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

Leave a Comment