그래서 나는 가상 메모리를 읽었으며 모든 것이 간단하고 실용적입니다. 그러나 나는 하나의 주요 개념을 질식시키고 있습니다.
가상 메모리가 주 메모리에 저장되어 있다면 왜 처음부터 사용합니까? 왜 메인 메모리를 사용하지 않습니까?
나는 여기에 뭔가 빠져 있다고 확신하지만 아직 무엇을 이해하지 못합니다.
그래서 나는 가상 메모리를 읽었으며 모든 것이 간단하고 실용적입니다. 그러나 나는 하나의 주요 개념을 질식시키고 있습니다.
가상 메모리가 주 메모리에 저장되어 있다면 왜 처음부터 사용합니까? 왜 메인 메모리를 사용하지 않습니까?
나는 여기에 뭔가 빠져 있다고 확신하지만 아직 무엇을 이해하지 못합니다.
답변:
가상 메모리를 사용하면 2GB 컴퓨터에서 10 x 1GB 응용 프로그램을 동시에 실행할 수 있습니다.
VM은 프로그램을 메모리에로드하고 데이터를위한 메모리를 제공하는 대신 프로그램에 필요한 메모리를위한 디스크 공간 (페이징 파일 또는 이와 동등한 공간)을 할당하지만 "요청 페이징"을 사용하여 작은 부분을 실제 메모리에만로드합니다. 프로그램 및 데이터에 대해 덜 사용되는 부품 (예 : 드물게 사용되는 서브 루틴)은 실제 메모리에로드되지 않을 수 있습니다. 다른 프로그램에 실제 메모리가 필요한 경우 실제 메모리의 사용되지 않은 부분이 사용되며, 가장 오래된 클린 페이지가 삭제되지 않으면 클린 페이지가 남아 있지 않으면 메모리의 "더러운 페이지"가 페이징 파일에 기록됩니다 ( 페이지는 프로그램 이진 파일에서로드 된 원본과 동일하므로 추가 사본을 저장할 필요가 없습니다. VM은이 모든 것을 추적합니다.
과거에는 스와핑 (swaping)이라는 별도의보다 절실한 메모리 관리 방법도 필요했습니다. 요즘 용어는 거의 동의어로 사용됩니다.
이점은 다음과 같습니다.
MMU (Memory Management Unit)가 있는 시스템 (즉, 가상 메모리 지원)
컴파일러 / 링커는 필요에 따라 주소를 자유롭게 사용할 수 있습니다. 코드가 실행되는 동안 MMU는 가상 주소를 실제 주소로 변환합니다.
MMU가없는 시스템 : 컴파일러와 링커는 시스템 메모리에 따라 주소를 할당해야합니다. 다른 작업의 메모리 영역을 사용해서는 안됩니다.
장점 : 컴파일러 / 링커는 시스템의 메모리 맵을 신경 쓸 필요가 없습니다.
Coming to your Question:
If virtual memory is stored in main memory, then why even use it in the first place?Why not just use main memory?
가상의 기억 / 주소는 물리적 주소 / 메모리의 표현입니다. 이 표현은보다 쉬운 멀티 태스킹 구현, 메모리 관리, 시스템 메모리 세부 사항없이 태스크 개발을 달성하는 데 도움이됩니다.