Linux에서 가상 메모리 관리자의 목적은 무엇이며 Linux 시스템의 기존 "스와핑"과 어떻게 다른가요?
답변1
당신은 모든 것이 뒤섞여 있습니다. 스왑은 Linux VM의 일부입니다.
Linux의 메모리 관리를 설명하는 수많은 페이지가 있습니다.
https://www.tldp.org/LDP/tlk/mm/memory.html
https://www.kernel.org/doc/html/latest/admin-guide/mm/concepts.html
https://www.win.tue.nl/~aeb/linux/lk/lk-9.html
https://www.thegeekstuff.com/2012/02/linux-memory-management/
답변2
"가상 메모리"는 프로세스와 같은 사물이 일반적으로 0부터 CPU가 참조할 수 있는 가장 큰 주소까지 고유한 메모리 주소 공간을 얻는 것을 의미합니다. "페이지"(단위로 관리되는 메모리 블록)는 프로세스의 가상 주소 공간에서 실제 메모리의 페이지 등에 매핑됩니다. 메모리 관리 장치(CPU의 일부)는 프로세스의 "페이지 테이블"을 사용하여 프로그램 실행에서 참조하는 가상 주소를 해당 페이지가 매핑되는 물리적 주소로 변환합니다.
가상 페이지와 물리적 페이지 사이에는 일대일 대응이 없습니다. 일부 가상 페이지는 매핑되지 않으며 여러 프로세스의 가상 페이지는 동일한 물리적 페이지에 매핑될 수 있습니다.
"스와핑"을 사용하면 커널이 페이지(일반적으로 자주 사용되지 않는 페이지)를 물리적 메모리에서 디스크로 이동하여 다른 작업에서 사용할 수 있도록 해당 물리적 페이지를 확보할 수 있습니다. 프로세스가 디스크로 스왑된 페이지에 매핑된 가상 주소를 참조하려고 하면 "페이지 폴트"가 발생합니다. 커널은 사용 가능한 물리적 페이지를 찾고, 해당 물리적 페이지의 내용을 디스크로 교환하고, 원본 프로세스 페이지의 내용을 디스크에서 해당 물리적 페이지로 교환하고, 프로세스의 페이지 테이블을 업데이트하여 페이지 오류에 응답합니다. 연관된 가상 페이지가 새로운 물리적 페이지에 매핑됩니다. 이 시점에서 가상 주소에 대한 프로세스 참조가 계속될 수 있습니다.