
가상 메모리는 컴퓨터가 실행 중인 프로세스를 위해 하드 디스크에 RAM의 일부를 저장하는 데 사용하는 페이징 파일이라는 것을 알고 있습니다. 그러나 가상 주소 공간은 얼마나 다릅니까? RAM인가요, 하드 디스크인가요, 아니면 둘 다인가요?
답변1
가상 주소 공간은 개별 프로그램이 실행될 때 보는 공간입니다. 프로그램 구성 방법에 따라 이 주소 공간은 운영 체제가 지원하는 최대 크기만큼 커집니다.
그런 다음 운영 체제 커널은 VAS의 주소를 실제 메모리(RAM 또는 시스템 페이지 파일)에 매핑하는 역할을 합니다.
이 설계를 사용하면 프로그램 자체는 리소스와 실제 주소를 인식하지 못하고 모든 시스템 메모리를 자체적으로 보유하거나 적어도 단일 프로세스가 사용할 수 있는 최대 메모리를 보유한 것처럼 작동할 수 있습니다.
간단히 말해서 프로그램은 VAS와 함께 작동하며 운영 체제는 실행 중인 프로그램에 보이지 않도록 VAS를 실제 스토리지에 매핑하는 작업을 처리합니다. 실행 중인 프로그램은 VAS만 볼 수 있습니다.
답변2
가상 주소 공간은 프로그램이 주소를 지정할 수 있는 메모리 크기에 대한 제한입니다.
이는 포인터 스타일에 의해 외부 경계로 제한됩니다. 순수 32비트 포인터는 이론상 4GB의 가상 공간을 처리할 수 있습니다. 실제 경계는 주소 공간의 상당 부분을 사용하므로 운영 체제 설계에 따라 다릅니다.나란히사용자 공간.
Win32에서는 기본 설정으로 2GB의 가상 주소 공간을 사용자 공간으로 허용합니다.
64비트 포인터는 훨씬 더 많은 주소를 지정할 수 있습니다. 실제로는 일반적으로 48비트가 허용되며 이에 대한 자세한 내용이 있습니다.이 슈퍼유저 답변.
이론적으로 누군가는 2GB의 사용자 공간이 물리적 메모리에 직접 매핑될 수 있는 충분한 RAM을 갖춘 물리적 컴퓨터를 구축할 수 있으므로(아마도 최소 3GB의 물리적 메모리가 필요함) 가상 메모리가 가상이 아닌 32비트 프로세스를 갖게 될 것입니다.
답변3
가상 주소 공간은 프로세스가 보는 것입니다. 예를 들어, 귀하의 이메일은 크기가 25GB인 받은 편지함에 들어 있습니다. 이것이 가상 주소 공간입니다.
가상 주소 공간은 모든 가상 주소 공간이 가상 주소 공간에 해당하는 것은 아니라는 사실을 구별하기 위한 것입니다.물리적주소 공간. 25GB의 받은 편지함 공간을 갖춘 20명의 이메일 사용자가 있다고 가정해 보겠습니다. 하지만 서버에는 100GB의 디스크 공간만 있습니다. 글쎄, 사람들은 일반적으로 가장 최근 이메일만 확인하기 때문에 오래된 이메일을 가져와 보관하고 최근 이메일만 서버에 보관할 수 있습니다.
예를 들어 서버에서 테이프 드라이브로 이메일을 보관하는 것은 컴퓨터에서 RAM의 일부를 디스크로 페이징하는 것과 유사합니다. 누군가가 오래된 이메일을 보러 갈 때, 테이프에 있는 오래된 이메일을 서버로 "페이징"하기만 하면 됩니다. 이메일 사용자는 그 차이를 전혀 알 수 없습니다.
같은 방식으로 컴퓨터의 각 프로세스에는엑스X * number of processes
실제 메모리 보다 적더라도 가상 주소 공간 .
가상 메모리가 바로 그것입니다. 가상 주소 공간. 그러나 가상 메모리는 사용 중인 가상 주소 공간일 뿐입니다.