윈도우 비스타의 가상 메모리 확장「슈퍼페치」

일반입력 :2006/02/21 14:30

Greg Shultz

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

오랫동안 윈도우를 이용한 사람이라면 가상 메모리와 페이징 파일(paging file)이라는 용어에 매우 친숙할 것이다. 예전에는 빈약한 메모리 시스템에서 최대한 효율적으로 페이징 파일을 작성하기 위해 가상 메모리 세팅을 변경하는데 수많은 시간을 보내야 했다.

그러나 램 가격이 낮아지면서 가상 메모리를 변경하는 대신, 램을 추가하는 것만으로도 시스템 성능을 향상시킬 수 있게 됐다. 물론 지금도 윈도우 운영 시스템에서 가상 메모리를 사용할 수 있지만 램을 늘리면 가상 메모리에 대한 윈도우의 의존도를 줄일 수 있다.

512MB나 1GB 램 지원은 최근에는 일반적인 PC 사양으로 자리잡았다. 따라서 대부분의 사용자들이 전처럼 가상 메모리를 고려하는 경우는 거의 드물다.

그러나 윈도우 비스타에서는 이런 부분이 달라질 것으로 보인다. 메모리 향상 시스템 ‘수퍼페치(SuperFetch)와 외장 메모리 디바이스(EMD : External Memory Devices)를 이용한 가상 메모리 확장 방식이 새롭게 추가됐기 때문이다. 이번에 게재하는 윈도우 비스타 리포트에서는 수퍼페치와 EMD에 대해 좀 더 자세히 살펴봤다.

가상 메모리

가상 메모리에 대한 기억을 상기하는 것으로 이 글을 시작해보자. 우선 동작중인 프로세스를 모두 필요로 하는 메모리가 시스템의 램 용량을 초과하지 않는 경우라 하더라도 비스타를 포함한 모든 윈도우 운영 시스템이 언제나 가상 메모리를 이용할 수 있다는 점을 다시 한 번 생각해볼 필요가 있다. 실제로 윈도우 시스템에서 운영되는 모든 프로세스는 운영 시스템에 탑재될 때 가상 메모리 주소가 자동으로 할당된다.

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

운영시스템은 임시로 가상 메모리로 불러온 운영 프로세스가 필요하면 해당 프로세스가 포함된 가상 메모리를 램으로 돌려보낸다. 이 경우 운영 시스템은 방금 전 램으로 돌려보낸 프로세스에 대한 공간을 만들기 위해 램에서 다른 페이지의 메모리를 이 페이지로 다시 가져와야 한다. 이같은 메모리 페이지 이동은 스와핑으로, 해당 페이징 파일은 스왑 파일로 종종 표현된다. 스와핑은 수많은 오버헤드를 필요로 한다.

프리페치(Prefetch)

윈도우 비스타의 수퍼페치는 프리페치(Prefetch)라고 불리는 윈도우 XP에 채용된 기술을 이용한 것이다. 따라서 수퍼페치와 EMD로 곧바로 넘어가기 전에 이 부분을 잠시 살펴볼 필요가 있다. 우선 프리페칭은 운영 시스템이 디스크에서 가져온 데이터의 주요 부분과 코드를 실질적으로 필요로 하기 전에 메모리에 로드시킨다. 이 점을 염두에 둔 상태에서 프리페칭이 어떻게 작동하는지 살펴보자.

프리페칭의 동작을 통해 시스템의 성능을 실질적으로 향상시키려면 바이러스 애플리케이션이 로드될때 뿐만 아니라 시스템이 부팅될 때에도 윈도우 XP 캐시 매니저가 디스크와 램간, 램과 가상 메모리간에 이동되는 데이터를 모니터링해야 한다. 캐시 매니저가 이러한 상황을 체크함으로써 디렉토리 맵과 각각의 애플리케이션이나 프로세스에 언급된 모든 파일이 만들어진다. 그리고 나서 이들 맵이 WindowsPrefetch 폴더에 .pf 확장자 파일로 저장된다.

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

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

그러면 캐시 매니저는 메모리 매니저에 신호를 보내 메모리로 데이터와 코드를 로드할 때 맵 파일 정보를 이용하라고 알려준다. 이러한 프리페치 동작이 완료되면 캐시 매니저가 애플리케이션이나 프로세스가 로딩을 계속하도록 허락한다. 애플리케이션이나 프로세스가 이러한 절차를 수행하기 때문에 메모리에서 이미 사용할 필요가 있는 파일과 데이터를 찾아낼 수 있으며, 이를 통해 디스크 액세스 용량을 줄이고, 애플리케이션이나 프로세스가 더 빠르게 동작하거나 응답할 수 있게 된다.

윈도우 XP는 프리페칭 동작을 더욱 효율적으로 하기 위해 맵 파일 콘텐츠를 정기적으로 분석하고, 디렉토리와 파일 리스트를 수집해 이들이 로드될 수 있도록 조정하며, 이 정보를 WindowsPrefetch 폴더 안의 Layout.ini 파일에 저장한다. 그리고 나서 정기적인 운영을 위해 디스크 조각모음 일정을 수립하고, 디스크와 인접한 부분에 목록으로 보여지는 모든 디렉토리와 파일의 재할당을 위해 Layout.ini 파일 안의 해당 정보를 사용한다.

수퍼페치(SuperFetch)

윈도우 XP의 프리페치 기술이 어떻게 동작하는지 파악했다면 윈도우 비스타의 수퍼페치 기술의 작동 원리에 대해서도 70%는 파악한 셈이다. 윈도우 XP 프리페치의 후속 버전인 수퍼페치는 프리페치가 수행하는 역할 이상을 수행한다.

우선 수퍼페치는 윈도우 XP 프리페치 기술의 가장 큰 약점 중 하나를 극복했다. 앞서 설명한 것처럼 프리페치는 애플리케이션이나 프로세스가 필요로 하는 수많은 파일과 데이터를 메모리에 로드함으로써 효율성을 향상시킨다. 따라서 언제라도 필요할 때 파일과 데이터에 매우 빠르게 접속할 수 있다. 그러나 이러한 파일과 데이터는 메모리에 존재하므로 결국에는 가상 메모리를 지배하는 법칙에 의해 동작한다.

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

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

그리고 나서 수퍼페치는 프리페치된 데이터가 페이지 파일로 이동되도록 원인을 제공한 애플리케이션의 프로세스가 시작되자마자 이를 모니터링해 프리페치된 데이터를 메모리로 돌려보낸다. 따라서 여러분이 이 애플리케이션에 접속하면 프리페치된 데이터를 메모리에서 다시 사용할 수 있으며, 응답 속도도 매우 빠르다.

EMD(External Memory Devices)

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

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

윈도우 비스타 시스템에 USB 2.0 메모리 스틱을 삽입하면 <그림 A>처럼 오토플레이(AutoPlay) 대화상자가 나타난다. 모든 USB 2.0 메모리 스틱/플래시 드라이브가 수퍼페치와 호환되지는 않는다는 점을 기억하라.

그러면 여러분은 <그림 B>에서 보는 것처럼 수퍼페치에 할당하고자 하는 스토리지 공간 용량을 조건으로 지정할 것이다. 여러분이 보는 것처럼 윈도우 비스타는 추천된 공간 용량을 자동적으로 할당하겠지만 여러분은 공간 용량을 늘리기 위해 이 슬라이더를 사용할 수 있다.

MS에 따르면 데이터 손실을 유발하지 않고도 언제라도 메모리 스틱의 제거가 가능하며, 메모리 스틱은 다른 파일을 저장하는데도 계속 사용할 수 있다. MS는 또 메모리스틱에 저장된 수퍼페치 데이터는 모두 암호화되기 때문에 메모리스틱을 다른 컴퓨터에서 사용하더라도 기존 데이터로의 접속은 불가능하다고 밝혔다.

믿기 어려운 수퍼페치 루머

윈도우 XP가 기본 기능으로 설정되지 않은 수퍼페치 컴포넌트를 갖고 있다는 소문이 인터넷을 통해 확산되고 있다. 소문에 따르면 레지스트리를 약간만 수정하면 윈도우 XP에서 수퍼페치를 사용할 수 있다는 것이다. 하지만 이는 근거 없는 정보이므로 테스트를 위해 시간 낭비는 하지 말기 바란다.

레지스트리에 수정을 가한다고 해서 시스템이 손상되는 것은 아니지만 그다지 좋을 것도 없기 때문이다.

윈도우 비스타는 올 휴가 시즌에 공식 출시될 예정이다. 따라서 이 글에서 언급한 몇 가지 정보는 비스타가 출시되기 전에 일부 변경될 수도 있을 것이다. 수퍼페치에 대해서는 앞으로도 계속 주시할 예정이며, 새롭게 추가되는 부분은 업데이트를 제공할 예정이다. 수퍼페치와 EMD에 관한 정보를 공유하고 싶다면 토론룸에 코멘트를 남겨주기 바란다.@