윈도우7

윈도우 비스타의 가상 메모리, 프리페치, 슈퍼페치, EMD

sungtg 2008. 2. 25. 12:05

윈도우 비스타의 새로운 메모리 시스템인
‘수퍼페치(SuperFetch)와 외장 메모리 디바이스(EMD : External Memory Devices)를 이용한 가상 메모리 확장 방식이 새롭게 추가됐다.

램 가격이 낮아지면서 가상 메모리를 변경하는 대신, 램을 추가하는 것만으로도 시스템 성능을 향상시킬 수 있게 됐다. 물론 지금도 윈도우 운영 시스템에서 가상 메모리를 사용할 수 있지만 램을 늘리면 가상 메모리에 대한 윈도우의 의존도를 줄일 수 있다.
따라서 대부분의 사용자들이 전처럼 가상 메모리를 고려하는 경우는 거의 드물다.

윈도우 비스타에서는 XP와 달리 메모리 운영부분에 
메모리 향상 시스템 ‘수퍼페치(SuperFetch)와 외장 메모리 디바이스(EMD : External Memory Devices)를 이용한 가상 메모리 확장 방식이 새롭게 추가됐기 때문이다.

가상 메모리

동작중인 프로세스를 모두 필요로 하는 메모리가 시스템의 램 용량을 초과하지 않는 경우라 하더라도 비스타를 포함한 모든 윈도우 운영 시스템이 언제나 모든 프로세스는 가상 메모리 주소가 자동으로 할당된다.

동작중인 모든 프로세스가 이용하는 메모리가 사용할 수 있는 램 용량을 초과하면
운영 시스템은 가상 주소 공간에서 불러온 램의 메모리 공간 페이지를 하드 디스크로 이동해
램이 다른 용도로 사용될 수 있도록 한다.
이렇게 불러온 페이지는 파티션의 핵심인 페이지파일.sys(Pagefile.sys) 파일에 저장된다.

운영시스템은 임시로 가상 메모리로 불러온 운영 프로세스가 필요하면
해당 프로세스가 포함된 가상 메모리를 램으로 돌려보낸다.

이 경우 운영 시스템은 방금 전 램으로 돌려보낸 프로세스에 대한 공간을 만들기 위해
램에서 다른 페이지의 메모리를 이 페이지로 다시 가져와야 한다.

이같은 메모리 페이지 이동은 스와핑으로, 해당 페이징 파일은 스왑 파일로 종종 표현된다.
스와핑은 수많은 오버헤드를 필요로 한다.

프리페치(Prefetch)

윈도우 비스타의 수퍼페치는 프리페치(Prefetch)라고 불리는 윈도우 XP에 채용된 기술을
이용한 것이다.

프리페칭은 운영 시스템이 디스크에서 가져온 데이터의 주요 부분과 코드를 실질적으로
필요로 하기 전에 메모리에 로드시킨다.
프리페칭의 동작을 통해 시스템의 성능을 실질적으로 향상시키려면 바이러스 애플리케이션이 로드될때 뿐만 아니라 시스템이 부팅될 때에도 윈도우 XP 캐시 매니저가 디스크와 램간,
램과 가상 메모리간에 이동되는 데이터를 모니터링해야 한다.

캐시 매니저가 이러한 상황을 체크함으로써 디렉토리 맵과
각각의 애플리케이션이나 프로세스에 언급된 모든 파일이 만들어진다.
그리고 나서 이들 맵이 \Windows\Prefetch 폴더에 .pf 확장자 파일로 저장된다.

일단 맵 파일이 생성되면 캐시 매니저가 애플리케이션을 로딩할 때 뿐 아니라
시스템이 부팅될 때 효율성을 향상시키기 위해 이들 맵 파일을 사용한다.

구체적으로 들어가 보면 캐시 매니저가 여기에 대응하는 맵이 존재하는지를 살펴보기 위해
로드 예정인 모든 프로스세나 애플리케이션에 침투해 \Windows\Prefetch 폴터를 체크한다.
 
이때 해당 맵이 존재하면 캐시 매니저는
맵에서 언급한 디렉토리와 파일에 즉각 접속하라는 신호를 파일 시스템에 보낸다.
그러면 캐시 매니저는 메모리 매니저에 신호를 보내 메모리로 데이터와
코드를 로드할 때 맵 파일 정보를 이용하라고 알려준다.

이러한 프리페치 동작이 완료되면 캐시 매니저가 애플리케이션이나 프로세스가
로딩을 계속하도록 허락한다.

애플리케이션이나 프로세스가 이러한 절차를 수행하기 때문에
메모리에서 이미 사용할 필요가 있는 파일과 데이터를 찾아낼 수 있으며,
이를 통해 디스크 액세스 용량을 줄이고,
애플리케이션이나 프로세스가 더 빠르게 동작하거나 응답할 수 있게 된다.

윈도우 XP는 프리페칭 동작을 더욱 효율적으로 하기 위해
맵 파일 콘텐츠를 정기적으로 분석하고, 디렉토리와 파일 리스트를 수집해 이들이 로드될 수 있도록 조정하며, 이 정보를 \Windows\Prefetch 폴더 안의 Layout.ini 파일에 저장한다.

그리고 나서 정기적인 운영을 위해 디스크 조각모음 일정을 수립하고,
디스크와 인접한 부분에 목록으로 보여지는 모든 디렉토리와 파일의 재할당을 위해 Layout.ini 파일 안의 해당 정보를 사용한다.

수퍼페치(SuperFetch)

윈도우 XP 프리페치의 후속 버전인 수퍼패치는 프리페치가 수행하는 역할 이상을 수행한다.

프리페치는 애플리케이션이나 프로세스가 필요로 하는 수많은 파일과 데이터를 메모리에 로드함으로써 효율성을 향상시킨다.
따라서 언제라도 필요할 때 파일과 데이터에 매우 빠르게 접속할 수 있다.
그러나 이러한 파일과 데이터는 메모리에 존재하므로 결국에는 가상 메모리를 지배하는 법칙에 의해 동작한다.

다른 애플리케이션이 메모리에 액세스돼야 하는 경우
프리페치된 모든 데이터를 하드 디스크의 페이지 파일에서 가져올 수 있다.
그리고 이러한 과정이 다시 요구되면 해당 페이지 파일을 메모리로 되돌려 보낸다.
이 때문에 성능 향상 부분이 상쇄된다.

수퍼페치는 사용자가 성능 강화의 이점을 모두 누릴 수 있도록 하기 위해
한 단계 더 발전한 것이다.
수퍼페치는 앞서 설명한 맵 파일 생성 외에도
여러분이 사용하는 애플리케이션이 얼마나 자주, 그리고 언제 사용되는지에 대한 정보 등
포괄적인 정보에 대한 프로파일을 생성한다.
그리고 나서 여러분의 프로파일에서 해당 애플리케이션을 계속 추적하고,
프리페치된 데이터가 페이지 파일로 이동할 때마다 사용자에게 알려준다.

수퍼페치는 프리패치된 데이터가 페이지 파일로 이동되도록 원인을 제공한
애플리케이션의 프로세스가 시작되자마자
이를 모니터링해 프리패치된 데이터를 메모리로 돌려보낸다.

따라서 애플리케이션에 접속하면 프리패치된 데이터를 메모리에서 다시 사용할 수 있으며, 응답 속도도 매우 빠르다.

EMD(External Memory Devices)

윈도우 운영시스템에서는 램 용량에 관계없이 언제나 가상 메모리를 사용할 수 있다.
또한 앞의 설명에서는
수퍼페치의 강화된 기능 중 하나가 성능 강화를 계속 유지할 수 있도록
가상 메모리 페이지 파일을 가능한 한 신속하게 프리페치된 데이터에서 검색할 수 있도록
한 것이라고 언급했다.
그러나 이 페이지 파일은 하드 디스크에 존재(속도가 느림)하기 때문에
수퍼페치가 이런 검색 요청에 응답하려면 하드 디스크를 필요로 한다.
따라서 시간적인 측면에서 여전히 방해를 받는다

MS는 수퍼페치의 검색 처리를 향상시키기 위해 USB 2.0 메모리 스틱/플래시 드라이브의 이점을 채용했다. USB 2.0 메모리 스틱/플래시 드라이브는 상대적으로 가격이 저렴하고,
물리적인 메모리보다 효율성은 떨어지지만 하드디스크보다는 빠르다는 점에서 매우 효율적이다.
USB 2.0 메모리를 윈도우 비스타 시스템에 삽입하면
수퍼페치가 가상 메모리로 보내진 프리페치된 데이터를 하드 디스크가 아니라
USB 메모리로 보낸다.
이렇게 함으로써 데이터를 검색하고,
이를 다시 메모리로 전송하는데 걸리는 시간을 줄여 검색 처리가 더 빨라진다.

사용자 삽입 이미지