가상 주소(Virtual Address)는 가상 메모리 주소(Virtual Memory Address)라고도 불리며, 애플리케이션이나 프로세스가 메모리에 접근하기 위해 사용하는 메모리 주소입니다. 이는 실제 메모리가 단편화되어 있어도 프로그램이 연속된 주소 블록을 사용하는 것처럼 동작할 수 있게 하는 시뮬레이션된 주소입니다.
프로그램이 실행될 때, 프로그램은 시스템의 실제 메모리보다 더 큰 가상 주소 공간을 가집니다. 이는 실제 메모리의 한계에도 불구하고 프로그램이 효율적으로 실행될 수 있게 해줍니다. 운영 체제는 메모리 매핑(memory mapping)이라는 과정을 통해 가상 주소를 관리하는 중요한 역할을 합니다.
메모리 매핑: - 메모리 매핑은 가상과 물리적 메모리 주소 간의 매핑을 처리하는 과정입니다. 프로그램의 최적 성능을 보장하기 위해 메모리 자원을 관리하고 할당합니다. - 운영 체제는 각 프로세스에 고유한 가상 주소 공간을 할당하여, 서로 독립적으로 메모리에 접근할 수 있게 합니다. 이는 프로세스 간 데이터나 메모리 위치가 간섭하지 않도록 보장합니다. - 가상 주소는 애플리케이션을 물리적 메모리 구성으로부터 보호하는 추상화 레이어를 제공합니다. 즉, 프로그램은 데이터가 실제로 저장된 물리적 주소를 알지 못한 채 가상 주소 공간과 상호작용합니다. - 운영 체제는 페이지 테이블이라는 매핑 테이블을 유지하여, 가상 주소가 물리적 주소와 어떻게 상응하는지에 대한 정보를 저장합니다. 이는 가상과 물리적 주소 간의 효율적이고 투명한 번역을 가능하게 합니다.
페이징: - 페이징은 제한된 물리적 메모리 자원 하에서 메모리를 관리하기 위해 운영 체제가 사용하는 기법입니다. - 물리적 메모리가 가득 차면, 운영 체제는 페이징을 사용하여 프로그램이 접근하려는 데이터를 수용하기 위해 물리적 메모리와 하드 드라이브와 같은 저장 장치 간에 데이터를 교환합니다. - 운영 체제는 메모리를 고정된 크기의 조각들로 나누고 이를 페이지라고 부릅니다. 각 페이지는 고유한 페이지 번호를 부여받습니다. 가상 주소도 동일한 크기의 페이지로 나뉩니다. 페이지 테이블에는 가상 페이지와 물리적 페이지 간의 매핑이 포함됩니다. - 프로그램이 가상 주소에 접근하려 하면, 페이지 테이블을 참조하여 해당 가상 주소에 상응하는 물리적 주소를 결정합니다. 해당 페이지가 현재 물리적 메모리에 없으면, 페이지 폴트가 발생하며, 필요한 페이지를 저장 장치에서 물리적 메모리로 가져옵니다.
가상 메모리는 컴퓨터 시스템의 기본 개념이며, 이를 이해하는 것은 시스템 운영자와 개발자에게 중요합니다. 그 이유는 다음과 같습니다:
가상 메모리가 어떻게 작동하는지 설명하기 위해 예를 들어봅시다:
가상 주소는 현대 컴퓨터 시스템에서 중요한 역할을 하며, 효율적인 메모리 관리와 프로그램의 효과적인 실행을 가능하게 합니다. 가상 메모리를 이해하는 것은 성능 최적화, 메모리 관련 오류 방지, 메모리 자원의 효율적 할당을 위해 시스템 운영자와 개발자에게 필수적입니다. 가상 주소를 활용함으로써, 프로그램은 제한된 물리적 메모리로도 원활하게 실행될 수 있습니다.