메모리 매핑을 사용하면 여러 프로세스가 페이지에 액세스할 수 있도록 여러 프로세스 간에 페이지가 "페이드 인"될 수 있습니다. 운영 체제가 페이징을 통해 이 문제를 어떻게 처리하는지 설명하시겠습니까?
답변1
CPU에는 메모리 관리 장치가 있습니다. 가상 메모리 주소를 실제 메모리 주소에 매핑합니다. 조회 테이블에 매핑하여 이를 수행합니다. 이 항목은 다음 위치에 캐시됩니다.TLB(번역 참조 버퍼). 각 프로세스에는 자체 매핑이 있습니다.
두 프로세스가 일부 물리적 메모리를 공유하는 경우 운영 체제는 프로세스 A의 가상 메모리 일부를 해당 물리적 메모리에 매핑하고, 프로세스 B의 가상 메모리 일부를 동일한 물리적 메모리에 매핑합니다. 두 프로세스 모두에서 동일한 가상 주소에 있을 필요는 없습니다.
답변2
가상 메모리가 존재하지 않으므로 가상이라는 이름이 붙습니다. 가상 메모리는 단순히 프로세스가 보고 사용하는 메모리 주소(32 또는 64비트 숫자)이며 실제 하드웨어 메모리를 가리킬 수 있습니다.
그것이 가리키는 하드웨어 메모리는 이미 다른 프로세스에서 사용 가능하므로 이러한 방식으로 프로세스 간에 메모리를 공유할 수 있으며 많은 작업이 이 방식으로 수행되었습니다.
특정 가상 메모리 영역에 대한 프로세스 액세스를 감지하는 메커니즘도 있는데, 이는 실제로 해당 주소에 액세스하기 전에 "뭔가를 수행합니다". 예를 들어 일부 하드웨어 메모리를 해당 위치에 매핑하거나 오작동하여 프로세스를 종료할 수 있습니다.
이는 모두 미리 정의된 기능과 크기가 있는 주소 공간 블록인 페이지를 통해 수행됩니다. 블록 크기는 일반적으로 고정되어 있으며 1~16KB(프로세서에 따라 다름)일 수 있습니다.