첫째, 저장해야 할 RAM의 양이 놀라 울 정도로 적습니다. 실제로, 맵핑 된 더티 페이지 세트 ( "게으른 쓰기 저장") 만 플러시해야하며, 실행 가능 코드에 쓰여지고 재배치 된 모든 개인 페이지를 작성해야합니다.
- 실행 파일의 .text 세그먼트는 항상 파일 매핑에 의해 지원됩니다. 그것은 적어도 일부 DLL에 대해서도 마찬가지입니다 (그러나 전부는 아니지만 재배치 해야하는지 여부에 달려 있습니다).
- 유사 파일 매핑에 의해 백업 메모리가 폐기 될 수있다 (이 소 또는 RW 아니다 추정 하고 더러운).
- 지연 쓰기 저장은 여전히 발생해야하지만 그 이외의 캐시는 버릴 수 있습니다.
- 할당되었지만 기록되지 않은 메모리 (일반적으로 응용 프로그램 데이터의 대부분)는 제로 페이지에 의해 백업되어 버릴 수 있습니다.
- 에있는 메모리 페이지의 큰 부분은 "대기"상태 (실제 프로세스 당 주민이 Windows에서 작업 집합은 놀랍게도 어떤 점에서 백그라운드에서 페이지 파일에 복사 된 것이며, 폐기 될 수있다, 단순한 16메가바이트 작은) .
- 그래픽 카드와 같은 특정 장치에서 매핑 한 메모리 영역을 저장하지 않아도 될 수 있습니다. 사용자는 때때로 8GiB 또는 16GiB를 컴퓨터에 연결한다는 사실에 놀랐으며 1GiB 또는 2GiB는 명백한 이유없이 "사라졌습니다". 주요 그래픽스 API를 사용하려면 버퍼 내용이 "일부 조건에서"유효하지 않게 될 수있는 응용 프로그램이 필요합니다 (이것이 의미하는 바를 정확히 밝히지 않음) 따라서 그래픽 드라이버에 의해 고정 된 메모리도 폐기 될 것으로 예상하는 것은 무리가 없습니다. 어쨌든 화면이 어두워 질 것입니다.
둘째, 파일을 복사하는 것과는 달리 디스크를 저장해야하는 RAM 페이지 세트를 덤프하는 것은 드라이브의 관점에서 연속 된 단일 쓰기입니다. Win32 API는 이러한 작업을 위해 사용자 수준 기능 도 제공 합니다. 쓰기는 하드웨어에서 직접 지원되며 디스크가 물리적으로 데이터를 수용 할 수있는 한 빨리 작동합니다 (컨트롤러는 DMA를 통해 데이터를 직접 가져옵니다).
이 작업을 수행하기위한 여러 가지 전제 조건 (예 : 정렬, 블록 크기, 고정)이 있으며 캐싱과 함께 잘 작동하지 않으며 "지연된 쓰기 저장"(정상적인 작업에서 매우 바람직한 최적화)과 같은 것은 없습니다. ).
그것이 모든 쓰기가 아닌 이유입니다항상 그렇게 작동합니다. 그러나 시스템이 최대 절전 모드 파일을 저장하는 경우 모든 전제 조건이 자동으로 충족되고 (모든 데이터가 페이지 정렬, 페이지 크기 및 고정됨) 컴퓨터가 잠시 꺼지기 때문에 캐싱이 부적절 해졌습니다.
셋째, 단일 연속 쓰기는 디스크 회전 및 솔리드 스테이트 디스크 모두에 매우 유리 합니다.
스왑 파일과 최대 절전 모드 파일은 일반적으로 디스크에서 만들어지고 예약 된 가장 빠른 파일 중 일부입니다. 그들은 보통 하나, 최대 두 개의 조각을 가지고 있습니다. 따라서 섹터가 손상되고 디스크가 물리 섹터를 재할 당하지 않는 한 논리 순차 쓰기 는 회전 디스크 의 물리 순차 쓰기로 변환됩니다 .
대량의 연속적이고 연속적인 데이터가 기록 될 때 디스크에서 읽기-수정-쓰기 작업이 필요하지 않습니다. 이 문제는 매우 작은 단일 섹터를 쓸 수있는 회전하는 하드 디스크에서 덜 두드러집니다 (캐시를 방지하는 단일 바이트를 쓰지 않으면 일반적으로 장치는 원래 내용을 가져 오지 않고 수정 된 버전을 다시 쓸 필요가 없습니다). .
그러나 이것은 모든 쓰기가 512kB 블록 (일반적인 숫자이지만 더 클 수 있음)을 컨트롤러가 읽고 수정하고 다른 것으로 다시 써야한다는 것을 의미하는 SSD에서 매우 눈 에 띄는 것입니다. 블록. 원칙적으로 쓸 수는 있지만 덮어 쓸 수는 없습니다.) 플래시 디스크의 작은 단위는 큰 블록 만 지울 수 있으며 하드웨어가 작동하는 방식입니다. 이것이 대량 순차 쓰기에서 SSD가 훨씬 더 나은 이유입니다.