Windows에서 가상 메모리로 프로그램을 수동으로 보낼 수 있습니까?

Windows에서 가상 메모리로 프로그램을 수동으로 보낼 수 있습니까?

열려 있는 프로그램이 많고 컴퓨터의 메모리/CPU 사용률이 너무 높은 경우 상태를 잃지 않고(가상 메모리로 전송) 프로그램을 닫은 다음 나중에 프로그램을 다시 시작할 수 있습니다. 이는 OS에 의해 자동으로 수행되지만 OS는 사용자가 프로그램을 일시 중지하려는 시간을 알지 못하므로 모든 프로그램의 일부를 메모리에 유지하고 다른 부분을 가상 메모리로 바꾸려고 하면 결국 속도가 매우 느려집니다. 수동으로 전체 프로그램을 가상 메모리로 보낸 다음 원할 때 동일한 상태에서 검색하는 것이 좋은 기능이 될 것입니다. 이를 수행할 수 있는 도구가 있습니까? 아니면 쓸 수 있나요?

답변1

귀하의 프로그램은 항상 가상 메모리에서 실행됩니다. (페이지 파일 크기를 설정하는 대화 상자의 Windows 용어는 매우 오해의 소지가 있습니다.)

당신이 요구하는 것은 프로그램을 강제로 페이지 아웃시키는 기능입니다. 직접적으로 할 수 있는 방법은 없습니다.

따라서 모든 프로그램의 일부를 메모리에 유지하고 다른 부분을 가상 메모리로 바꾸려고 하면 결국 속도가 매우 느려집니다.

그런 일은 일어나지 않습니다. 액세스되지 않는 메모리 페이지는 항상 다른 용도로 해제할 수 있습니다(필요에 따라 디스크에 기록). OS는 액세스 여부에 관계없이 "모든 프로그램의 일부를 메모리에 유지하려고"하지 않습니다. 일반적으로 유휴 프로그램의 개인 페이지의 경우와 같이 액세스되지 않는 경우 다른 프로그램의 요구로 인해 압력이 가해질 때까지만 메모리에 유지됩니다. (그때까지는 페이징 아웃해도 소용이 없겠죠?)

Windows XP를 통해 앱의 Windows를 최소화하면 작업 세트가 강제로 제거되지만 XP는 이것이 사실인 마지막이라고 생각합니다.

하지만 정말로 이 작업을 수행하려면 VMmapSysInternals의 도구를 사용할 수 있습니다. 시작되면 프로세스를 선택하라는 메시지가 표시됩니다. 그런 다음 보기 | 빈 작업 세트.

그러나 이는 수정된 페이지 또는 대기 페이지 목록에만 페이지를 해제한다는 점에 유의하세요. (다른 프로세스의 작업 세트에 없는 페이지에만 적용됩니다.) 수정된 목록에 삭제된 페이지는 페이지 파일에 기록된 다음 대기 목록으로 이동됩니다. 대기 목록의 페이지는 "사용 가능"한 것으로 간주되지만 다른 용도로 용도가 변경될 때까지 원래 프로세스의 내용이 계속 포함됩니다.

최종 결과는 사용 가능한 메모리에 대한 압박이 있는 경우 Windows가 수행하는 작업과 정확히 동일합니다. 즉, 그러한 요구가 실제로 존재하기 전에 더 빨리 수행하는 것입니다.

자세한 내용은 물론 메모리 관리 장에 나와 있습니다.Windows 내부솔로몬, 루시노비치(Russinovich), 이오네스쿠(Ionescu).

관련 정보